@intellectif/lk-core 0.14.1 → 0.15.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +1 -0
  3. package/dist/{activity-BVkg9VDo.d.cts → activity-C7cR8U9n.d.cts} +35 -2
  4. package/dist/{activity-BVkg9VDo.d.ts → activity-C7cR8U9n.d.ts} +35 -2
  5. package/dist/{chunk-KTDOZR7Y.js → chunk-54XYQ3CS.js} +2 -2
  6. package/dist/{chunk-J5OIRIOW.cjs → chunk-5KWF34LJ.cjs} +31 -31
  7. package/dist/{chunk-J5OIRIOW.cjs.map → chunk-5KWF34LJ.cjs.map} +1 -1
  8. package/dist/{chunk-E7LPIZXI.cjs → chunk-7ETU6EXQ.cjs} +4 -4
  9. package/dist/{chunk-E7LPIZXI.cjs.map → chunk-7ETU6EXQ.cjs.map} +1 -1
  10. package/dist/{chunk-6RND47QE.js → chunk-DPHX4E7X.js} +62 -3
  11. package/dist/chunk-DPHX4E7X.js.map +1 -0
  12. package/dist/{chunk-NBADQ3JU.js → chunk-EEMVWBPP.js} +195 -4
  13. package/dist/chunk-EEMVWBPP.js.map +1 -0
  14. package/dist/{chunk-RTIR6R2U.js → chunk-L6YBQXSB.js} +2 -2
  15. package/dist/{chunk-VCXIPLEW.cjs → chunk-QFWEF5ST.cjs} +63 -4
  16. package/dist/chunk-QFWEF5ST.cjs.map +1 -0
  17. package/dist/chunk-W7AQP6AV.cjs +418 -0
  18. package/dist/chunk-W7AQP6AV.cjs.map +1 -0
  19. package/dist/{index-v2_-Fyn3.d.ts → index-BWyMDlUS.d.cts} +367 -2
  20. package/dist/{index-BE1bM2Wi.d.cts → index-D10NaztZ.d.ts} +367 -2
  21. package/dist/index.cjs +397 -96
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +103 -7
  24. package/dist/index.d.ts +103 -7
  25. package/dist/index.js +310 -9
  26. package/dist/index.js.map +1 -1
  27. package/dist/schemas.cjs +11 -3
  28. package/dist/schemas.cjs.map +1 -1
  29. package/dist/schemas.d.cts +2 -2
  30. package/dist/schemas.d.ts +2 -2
  31. package/dist/schemas.js +10 -2
  32. package/dist/scoring.cjs +3 -3
  33. package/dist/scoring.d.cts +2 -2
  34. package/dist/scoring.d.ts +2 -2
  35. package/dist/scoring.js +2 -2
  36. package/dist/xapi.cjs +3 -3
  37. package/dist/xapi.d.cts +1 -1
  38. package/dist/xapi.d.ts +1 -1
  39. package/dist/xapi.js +2 -2
  40. package/package.json +1 -1
  41. package/dist/chunk-2NIALQEH.cjs +0 -227
  42. package/dist/chunk-2NIALQEH.cjs.map +0 -1
  43. package/dist/chunk-6RND47QE.js.map +0 -1
  44. package/dist/chunk-NBADQ3JU.js.map +0 -1
  45. package/dist/chunk-VCXIPLEW.cjs.map +0 -1
  46. /package/dist/{chunk-KTDOZR7Y.js.map → chunk-54XYQ3CS.js.map} +0 -0
  47. /package/dist/{chunk-RTIR6R2U.js.map → chunk-L6YBQXSB.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { A as ActivityData, c as ActivityMedia, _ as ValidationResult, e as ActivityType, a as ActivityDataMap } from './activity-BVkg9VDo.cjs';
1
+ import { A as ActivityData, c as ActivityMedia, $ as ValidationResult, e as ActivityType, a as ActivityDataMap } from './activity-C7cR8U9n.js';
2
2
  import { z } from 'zod/v4';
3
3
 
4
4
  /** What a stimulus primarily is. Drives validation and layout, never scoring. */
@@ -40,6 +40,74 @@ interface Stimulus {
40
40
  /** Source credit, shown to the learner after the material. */
41
41
  attribution?: string;
42
42
  }
43
+ /**
44
+ * A quiz inside an interactive video: one moment of the video, and the
45
+ * questions shown there. The video pauses when playback reaches `at`, and the
46
+ * questions are shown one at a time, in `itemIds` order.
47
+ */
48
+ interface TimelineCue {
49
+ /** Unique within the timeline. Names the quiz in events, the contents panel and drafts. */
50
+ id: string;
51
+ /**
52
+ * Seconds from the start of the video: finite and 0 or more. The SDK never
53
+ * reads the video, so it cannot check this against the duration: a quiz at
54
+ * or past the end opens when the video ends.
55
+ */
56
+ at: number;
57
+ /**
58
+ * `id`s of items in this group, in the order the quiz shows them. Non-empty.
59
+ * Every item of the group belongs to exactly one quiz.
60
+ */
61
+ itemIds: string[];
62
+ /** Optional heading shown above the questions. At most 120 characters. */
63
+ title?: string;
64
+ /**
65
+ * Every question must be answered (practice) or submitted (exam) before
66
+ * playback may pass `at`. Default false.
67
+ */
68
+ required?: boolean;
69
+ }
70
+ /** A titled section of the video. */
71
+ interface TimelineChapter {
72
+ /** Seconds from the start: finite, 0 or more, strictly increasing across the list. */
73
+ at: number;
74
+ /** Non-empty after trimming; at most 120 characters. */
75
+ title: string;
76
+ }
77
+ /**
78
+ * The arrangement that turns an item group with a video stimulus into an
79
+ * interactive video: when each quiz opens, the video's chapters, and how far
80
+ * ahead a learner may seek.
81
+ *
82
+ * It lives on the container rather than inside `stimulus` because it describes
83
+ * how THESE questions are arranged over the material, not the material itself.
84
+ */
85
+ interface MediaTimeline {
86
+ cues: TimelineCue[];
87
+ chapters?: TimelineChapter[];
88
+ /**
89
+ * `free` (default): seek anywhere. `no-skip-ahead`: rewind freely, never past
90
+ * the furthest point reached. Either way, playback never passes a `required`
91
+ * quiz that is not finished.
92
+ */
93
+ navigation?: 'free' | 'no-skip-ahead';
94
+ }
95
+ /**
96
+ * Where a learner stands in an interactive video, stored by the host so the
97
+ * video can resume. Kept apart from `AttemptState`, which holds answers by slot
98
+ * and drops fields it does not know. Read it back through
99
+ * `readMediaProgress`, never directly.
100
+ */
101
+ interface MediaProgress {
102
+ progressVersion: '1.0';
103
+ /** Seconds: where playback last stood. */
104
+ at: number;
105
+ /**
106
+ * Seconds: the furthest point reached. Decides how far `no-skip-ahead` lets
107
+ * the learner seek, and how much of the transcript it shows.
108
+ */
109
+ furthest: number;
110
+ }
43
111
  /**
44
112
  * One stimulus serving several items. Two rules, both taken from observed
45
113
  * failures: a group is SHUFFLE-ATOMIC (shuffling a sequence moves the group
@@ -82,6 +150,14 @@ interface ItemGroup<TItem = ActivityData> {
82
150
  * contiguous block.
83
151
  */
84
152
  shuffle?: 'none' | 'within-group';
153
+ /**
154
+ * Makes the group an interactive video: the stimulus must be a video, every
155
+ * item must be one of `INTERACTIVE_VIDEO_ITEM_TYPES`, and every item belongs
156
+ * to exactly one quiz. Items are then presented in quiz order, never
157
+ * shuffled. An older lk-core that does not know this field presents the same
158
+ * items as an ordinary video testlet, with the same slots and grades.
159
+ */
160
+ timeline?: MediaTimeline;
85
161
  }
86
162
  /**
87
163
  * What a sequence is made of: loose activities and item groups, in authored
@@ -106,6 +182,10 @@ interface SequenceSlotGroup {
106
182
  position: number;
107
183
  /** Number of slots in the group. */
108
184
  size: number;
185
+ /** The group's timeline, when the group is an interactive video. */
186
+ timeline?: MediaTimeline;
187
+ /** The quiz this slot's item sits in, when the group is an interactive video. */
188
+ cue?: TimelineCue;
109
189
  }
110
190
  /** One presented position in a flattened sequence. */
111
191
  interface SequenceSlot<TItem = ActivityData> {
@@ -178,6 +258,17 @@ declare const DictationDataSchema: z.ZodObject<{
178
258
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
179
259
  alt: z.ZodOptional<z.ZodString>;
180
260
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
261
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
262
+ kind: z.ZodEnum<{
263
+ captions: "captions";
264
+ subtitles: "subtitles";
265
+ }>;
266
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
267
+ srclang: z.ZodString;
268
+ label: z.ZodString;
269
+ default: z.ZodOptional<z.ZodBoolean>;
270
+ }, z.core.$strict>>>;
271
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
181
272
  playback: z.ZodOptional<z.ZodObject<{
182
273
  controls: z.ZodOptional<z.ZodEnum<{
183
274
  native: "native";
@@ -331,6 +422,17 @@ declare const FillInTheBlanksDataSchema: z.ZodObject<{
331
422
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
332
423
  alt: z.ZodOptional<z.ZodString>;
333
424
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
425
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
426
+ kind: z.ZodEnum<{
427
+ captions: "captions";
428
+ subtitles: "subtitles";
429
+ }>;
430
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
431
+ srclang: z.ZodString;
432
+ label: z.ZodString;
433
+ default: z.ZodOptional<z.ZodBoolean>;
434
+ }, z.core.$strict>>>;
435
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
334
436
  playback: z.ZodOptional<z.ZodObject<{
335
437
  controls: z.ZodOptional<z.ZodEnum<{
336
438
  native: "native";
@@ -450,6 +552,17 @@ declare const GapSelectDataSchema: z.ZodObject<{
450
552
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
451
553
  alt: z.ZodOptional<z.ZodString>;
452
554
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
555
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
556
+ kind: z.ZodEnum<{
557
+ captions: "captions";
558
+ subtitles: "subtitles";
559
+ }>;
560
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
561
+ srclang: z.ZodString;
562
+ label: z.ZodString;
563
+ default: z.ZodOptional<z.ZodBoolean>;
564
+ }, z.core.$strict>>>;
565
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
453
566
  playback: z.ZodOptional<z.ZodObject<{
454
567
  controls: z.ZodOptional<z.ZodEnum<{
455
568
  native: "native";
@@ -511,6 +624,17 @@ declare const StimulusSchema: z.ZodObject<{
511
624
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
512
625
  alt: z.ZodOptional<z.ZodString>;
513
626
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
627
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
628
+ kind: z.ZodEnum<{
629
+ captions: "captions";
630
+ subtitles: "subtitles";
631
+ }>;
632
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
633
+ srclang: z.ZodString;
634
+ label: z.ZodString;
635
+ default: z.ZodOptional<z.ZodBoolean>;
636
+ }, z.core.$strict>>>;
637
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
514
638
  playback: z.ZodOptional<z.ZodObject<{
515
639
  controls: z.ZodOptional<z.ZodEnum<{
516
640
  native: "native";
@@ -535,6 +659,44 @@ declare const StimulusSchema: z.ZodObject<{
535
659
  locale: z.ZodOptional<z.ZodString>;
536
660
  attribution: z.ZodOptional<z.ZodString>;
537
661
  }, z.core.$loose>;
662
+ /**
663
+ * A quiz. STRICT, like every part of a timeline: a misspelt `requried` would
664
+ * otherwise be kept and the quiz silently optional on a paper that believed it
665
+ * was required.
666
+ */
667
+ declare const TimelineCueSchema: z.ZodObject<{
668
+ id: z.ZodString;
669
+ at: z.ZodNumber;
670
+ itemIds: z.ZodArray<z.ZodString>;
671
+ title: z.ZodOptional<z.ZodString>;
672
+ required: z.ZodOptional<z.ZodBoolean>;
673
+ }, z.core.$strict>;
674
+ declare const TimelineChapterSchema: z.ZodObject<{
675
+ at: z.ZodNumber;
676
+ title: z.ZodString;
677
+ }, z.core.$strict>;
678
+ /**
679
+ * A timeline on its own: its quizzes, chapters and navigation. The rules that
680
+ * need the group — every item in exactly one quiz, a video stimulus, the five
681
+ * item types — are {@link timelineIssues}, which both group schemas run.
682
+ */
683
+ declare const MediaTimelineSchema: z.ZodObject<{
684
+ cues: z.ZodArray<z.ZodObject<{
685
+ id: z.ZodString;
686
+ at: z.ZodNumber;
687
+ itemIds: z.ZodArray<z.ZodString>;
688
+ title: z.ZodOptional<z.ZodString>;
689
+ required: z.ZodOptional<z.ZodBoolean>;
690
+ }, z.core.$strict>>;
691
+ chapters: z.ZodOptional<z.ZodArray<z.ZodObject<{
692
+ at: z.ZodNumber;
693
+ title: z.ZodString;
694
+ }, z.core.$strict>>>;
695
+ navigation: z.ZodOptional<z.ZodEnum<{
696
+ free: "free";
697
+ "no-skip-ahead": "no-skip-ahead";
698
+ }>>;
699
+ }, z.core.$strict>;
538
700
  /**
539
701
  * Zod schema for an {@link ItemGroup} CONTAINER. Loose: unknown keys
540
702
  * preserved. Validates the group's own fields and the stimulus in full, and
@@ -569,6 +731,17 @@ declare const ItemGroupSchema: z.ZodObject<{
569
731
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
570
732
  alt: z.ZodOptional<z.ZodString>;
571
733
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
734
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
735
+ kind: z.ZodEnum<{
736
+ captions: "captions";
737
+ subtitles: "subtitles";
738
+ }>;
739
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
740
+ srclang: z.ZodString;
741
+ label: z.ZodString;
742
+ default: z.ZodOptional<z.ZodBoolean>;
743
+ }, z.core.$strict>>>;
744
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
572
745
  playback: z.ZodOptional<z.ZodObject<{
573
746
  controls: z.ZodOptional<z.ZodEnum<{
574
747
  native: "native";
@@ -602,6 +775,23 @@ declare const ItemGroupSchema: z.ZodObject<{
602
775
  none: "none";
603
776
  "within-group": "within-group";
604
777
  }>>;
778
+ timeline: z.ZodOptional<z.ZodObject<{
779
+ cues: z.ZodArray<z.ZodObject<{
780
+ id: z.ZodString;
781
+ at: z.ZodNumber;
782
+ itemIds: z.ZodArray<z.ZodString>;
783
+ title: z.ZodOptional<z.ZodString>;
784
+ required: z.ZodOptional<z.ZodBoolean>;
785
+ }, z.core.$strict>>;
786
+ chapters: z.ZodOptional<z.ZodArray<z.ZodObject<{
787
+ at: z.ZodNumber;
788
+ title: z.ZodString;
789
+ }, z.core.$strict>>>;
790
+ navigation: z.ZodOptional<z.ZodEnum<{
791
+ free: "free";
792
+ "no-skip-ahead": "no-skip-ahead";
793
+ }>>;
794
+ }, z.core.$strict>>;
605
795
  }, z.core.$loose>;
606
796
  /** The learner-safe shape of a stimulus, derived from the strict schema below. */
607
797
  type RedactedStimulus = z.infer<typeof RedactedStimulusSchema>;
@@ -628,6 +818,17 @@ declare const RedactedStimulusSchema: z.ZodObject<{
628
818
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
629
819
  alt: z.ZodOptional<z.ZodString>;
630
820
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
821
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
822
+ kind: z.ZodEnum<{
823
+ captions: "captions";
824
+ subtitles: "subtitles";
825
+ }>;
826
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
827
+ srclang: z.ZodString;
828
+ label: z.ZodString;
829
+ default: z.ZodOptional<z.ZodBoolean>;
830
+ }, z.core.$strict>>>;
831
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
631
832
  playback: z.ZodOptional<z.ZodObject<{
632
833
  controls: z.ZodOptional<z.ZodEnum<{
633
834
  native: "native";
@@ -688,6 +889,17 @@ declare const RedactedItemGroupSchema: z.ZodObject<{
688
889
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
689
890
  alt: z.ZodOptional<z.ZodString>;
690
891
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
892
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
893
+ kind: z.ZodEnum<{
894
+ captions: "captions";
895
+ subtitles: "subtitles";
896
+ }>;
897
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
898
+ srclang: z.ZodString;
899
+ label: z.ZodString;
900
+ default: z.ZodOptional<z.ZodBoolean>;
901
+ }, z.core.$strict>>>;
902
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
691
903
  playback: z.ZodOptional<z.ZodObject<{
692
904
  controls: z.ZodOptional<z.ZodEnum<{
693
905
  native: "native";
@@ -716,6 +928,23 @@ declare const RedactedItemGroupSchema: z.ZodObject<{
716
928
  none: "none";
717
929
  "within-group": "within-group";
718
930
  }>>;
931
+ timeline: z.ZodOptional<z.ZodObject<{
932
+ cues: z.ZodArray<z.ZodObject<{
933
+ id: z.ZodString;
934
+ at: z.ZodNumber;
935
+ itemIds: z.ZodArray<z.ZodString>;
936
+ title: z.ZodOptional<z.ZodString>;
937
+ required: z.ZodOptional<z.ZodBoolean>;
938
+ }, z.core.$strict>>;
939
+ chapters: z.ZodOptional<z.ZodArray<z.ZodObject<{
940
+ at: z.ZodNumber;
941
+ title: z.ZodString;
942
+ }, z.core.$strict>>>;
943
+ navigation: z.ZodOptional<z.ZodEnum<{
944
+ free: "free";
945
+ "no-skip-ahead": "no-skip-ahead";
946
+ }>>;
947
+ }, z.core.$strict>>;
719
948
  }, z.core.$strict>;
720
949
  /**
721
950
  * Validates an item group in full: the container and stimulus against
@@ -892,6 +1121,21 @@ declare const MediaPlaybackSchema: z.ZodObject<{
892
1121
  "hide-rate": "hide-rate";
893
1122
  }>>>;
894
1123
  }, z.core.$strict>;
1124
+ /**
1125
+ * A text track for an audio or video recording. STRICT, for the same reason
1126
+ * {@link MediaPlaybackSchema} is: a misspelt `srclnag` would otherwise be kept
1127
+ * and the track shown with no language.
1128
+ */
1129
+ declare const MediaTrackSchema: z.ZodObject<{
1130
+ kind: z.ZodEnum<{
1131
+ captions: "captions";
1132
+ subtitles: "subtitles";
1133
+ }>;
1134
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1135
+ srclang: z.ZodString;
1136
+ label: z.ZodString;
1137
+ default: z.ZodOptional<z.ZodBoolean>;
1138
+ }, z.core.$strict>;
895
1139
  declare const MediaSchema: z.ZodObject<{
896
1140
  type: z.ZodEnum<{
897
1141
  image: "image";
@@ -902,6 +1146,17 @@ declare const MediaSchema: z.ZodObject<{
902
1146
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
903
1147
  alt: z.ZodOptional<z.ZodString>;
904
1148
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1149
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1150
+ kind: z.ZodEnum<{
1151
+ captions: "captions";
1152
+ subtitles: "subtitles";
1153
+ }>;
1154
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1155
+ srclang: z.ZodString;
1156
+ label: z.ZodString;
1157
+ default: z.ZodOptional<z.ZodBoolean>;
1158
+ }, z.core.$strict>>>;
1159
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
905
1160
  playback: z.ZodOptional<z.ZodObject<{
906
1161
  /**
907
1162
  * `native` (the resolved default) renders today's `<audio controls>`
@@ -957,6 +1212,17 @@ declare const RedactedMediaSchema: z.ZodObject<{
957
1212
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
958
1213
  alt: z.ZodOptional<z.ZodString>;
959
1214
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1215
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1216
+ kind: z.ZodEnum<{
1217
+ captions: "captions";
1218
+ subtitles: "subtitles";
1219
+ }>;
1220
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1221
+ srclang: z.ZodString;
1222
+ label: z.ZodString;
1223
+ default: z.ZodOptional<z.ZodBoolean>;
1224
+ }, z.core.$strict>>>;
1225
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
960
1226
  playback: z.ZodOptional<z.ZodObject<{
961
1227
  /**
962
1228
  * `native` (the resolved default) renders today's `<audio controls>`
@@ -1095,6 +1361,17 @@ declare const MultipleChoiceDataSchema: z.ZodObject<{
1095
1361
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1096
1362
  alt: z.ZodOptional<z.ZodString>;
1097
1363
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1364
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1365
+ kind: z.ZodEnum<{
1366
+ captions: "captions";
1367
+ subtitles: "subtitles";
1368
+ }>;
1369
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1370
+ srclang: z.ZodString;
1371
+ label: z.ZodString;
1372
+ default: z.ZodOptional<z.ZodBoolean>;
1373
+ }, z.core.$strict>>>;
1374
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1098
1375
  playback: z.ZodOptional<z.ZodObject<{
1099
1376
  controls: z.ZodOptional<z.ZodEnum<{
1100
1377
  native: "native";
@@ -1200,6 +1477,17 @@ declare const ReadAloudDataSchema: z.ZodObject<{
1200
1477
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1201
1478
  alt: z.ZodOptional<z.ZodString>;
1202
1479
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1480
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1481
+ kind: z.ZodEnum<{
1482
+ captions: "captions";
1483
+ subtitles: "subtitles";
1484
+ }>;
1485
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1486
+ srclang: z.ZodString;
1487
+ label: z.ZodString;
1488
+ default: z.ZodOptional<z.ZodBoolean>;
1489
+ }, z.core.$strict>>>;
1490
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1203
1491
  playback: z.ZodOptional<z.ZodObject<{
1204
1492
  controls: z.ZodOptional<z.ZodEnum<{
1205
1493
  native: "native";
@@ -1328,6 +1616,17 @@ declare const RedactedMultipleChoiceDataSchema: z.ZodObject<{
1328
1616
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1329
1617
  alt: z.ZodOptional<z.ZodString>;
1330
1618
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1619
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1620
+ kind: z.ZodEnum<{
1621
+ captions: "captions";
1622
+ subtitles: "subtitles";
1623
+ }>;
1624
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1625
+ srclang: z.ZodString;
1626
+ label: z.ZodString;
1627
+ default: z.ZodOptional<z.ZodBoolean>;
1628
+ }, z.core.$strict>>>;
1629
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1331
1630
  playback: z.ZodOptional<z.ZodObject<{
1332
1631
  controls: z.ZodOptional<z.ZodEnum<{
1333
1632
  native: "native";
@@ -1384,6 +1683,17 @@ declare const RedactedFillInTheBlanksDataSchema: z.ZodObject<{
1384
1683
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1385
1684
  alt: z.ZodOptional<z.ZodString>;
1386
1685
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1686
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1687
+ kind: z.ZodEnum<{
1688
+ captions: "captions";
1689
+ subtitles: "subtitles";
1690
+ }>;
1691
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1692
+ srclang: z.ZodString;
1693
+ label: z.ZodString;
1694
+ default: z.ZodOptional<z.ZodBoolean>;
1695
+ }, z.core.$strict>>>;
1696
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1387
1697
  playback: z.ZodOptional<z.ZodObject<{
1388
1698
  controls: z.ZodOptional<z.ZodEnum<{
1389
1699
  native: "native";
@@ -1484,6 +1794,17 @@ declare const RedactedGapSelectDataSchema: z.ZodObject<{
1484
1794
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1485
1795
  alt: z.ZodOptional<z.ZodString>;
1486
1796
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1797
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1798
+ kind: z.ZodEnum<{
1799
+ captions: "captions";
1800
+ subtitles: "subtitles";
1801
+ }>;
1802
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1803
+ srclang: z.ZodString;
1804
+ label: z.ZodString;
1805
+ default: z.ZodOptional<z.ZodBoolean>;
1806
+ }, z.core.$strict>>>;
1807
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1487
1808
  playback: z.ZodOptional<z.ZodObject<{
1488
1809
  controls: z.ZodOptional<z.ZodEnum<{
1489
1810
  native: "native";
@@ -1546,6 +1867,17 @@ declare const RedactedWrittenResponseDataSchema: z.ZodObject<{
1546
1867
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1547
1868
  alt: z.ZodOptional<z.ZodString>;
1548
1869
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1870
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1871
+ kind: z.ZodEnum<{
1872
+ captions: "captions";
1873
+ subtitles: "subtitles";
1874
+ }>;
1875
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1876
+ srclang: z.ZodString;
1877
+ label: z.ZodString;
1878
+ default: z.ZodOptional<z.ZodBoolean>;
1879
+ }, z.core.$strict>>>;
1880
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1549
1881
  playback: z.ZodOptional<z.ZodObject<{
1550
1882
  controls: z.ZodOptional<z.ZodEnum<{
1551
1883
  native: "native";
@@ -1617,6 +1949,17 @@ declare const RedactedDictationDataSchema: z.ZodObject<{
1617
1949
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1618
1950
  alt: z.ZodOptional<z.ZodString>;
1619
1951
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1952
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1953
+ kind: z.ZodEnum<{
1954
+ captions: "captions";
1955
+ subtitles: "subtitles";
1956
+ }>;
1957
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1958
+ srclang: z.ZodString;
1959
+ label: z.ZodString;
1960
+ default: z.ZodOptional<z.ZodBoolean>;
1961
+ }, z.core.$strict>>>;
1962
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1620
1963
  playback: z.ZodOptional<z.ZodObject<{
1621
1964
  controls: z.ZodOptional<z.ZodEnum<{
1622
1965
  native: "native";
@@ -1700,6 +2043,17 @@ declare const RedactedReadAloudDataSchema: z.ZodObject<{
1700
2043
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1701
2044
  alt: z.ZodOptional<z.ZodString>;
1702
2045
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
2046
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2047
+ kind: z.ZodEnum<{
2048
+ captions: "captions";
2049
+ subtitles: "subtitles";
2050
+ }>;
2051
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
2052
+ srclang: z.ZodString;
2053
+ label: z.ZodString;
2054
+ default: z.ZodOptional<z.ZodBoolean>;
2055
+ }, z.core.$strict>>>;
2056
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1703
2057
  playback: z.ZodOptional<z.ZodObject<{
1704
2058
  controls: z.ZodOptional<z.ZodEnum<{
1705
2059
  native: "native";
@@ -1833,6 +2187,17 @@ declare const WrittenResponseDataSchema: z.ZodObject<{
1833
2187
  url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1834
2188
  alt: z.ZodOptional<z.ZodString>;
1835
2189
  captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
2190
+ tracks: z.ZodOptional<z.ZodArray<z.ZodObject<{
2191
+ kind: z.ZodEnum<{
2192
+ captions: "captions";
2193
+ subtitles: "subtitles";
2194
+ }>;
2195
+ src: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
2196
+ srclang: z.ZodString;
2197
+ label: z.ZodString;
2198
+ default: z.ZodOptional<z.ZodBoolean>;
2199
+ }, z.core.$strict>>>;
2200
+ poster: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1836
2201
  playback: z.ZodOptional<z.ZodObject<{
1837
2202
  controls: z.ZodOptional<z.ZodEnum<{
1838
2203
  native: "native";
@@ -1877,4 +2242,4 @@ declare const WrittenResponseDataSchema: z.ZodObject<{
1877
2242
  */
1878
2243
  declare function validateActivity<T extends ActivityType>(type: T, data: unknown): ValidationResult<ActivityDataMap[T]>;
1879
2244
 
1880
- export { type SequenceEntry as $, RedactedGapSelectChoiceSchema as A, BlankConfigSchema as B, type RedactedGapSelectData as C, DictationDataSchema as D, RedactedGapSelectDataSchema as E, FeedbackSchema as F, GapSelectBankSchema as G, type RedactedGapSelectGap as H, type ItemGroup as I, RedactedGapSelectGapSchema as J, RedactedItemGroupSchema as K, RedactedMediaSchema as L, MediaPlaybackSchema as M, NativeControlHintSchema as N, type RedactedMultipleChoiceData as O, RedactedMultipleChoiceDataSchema as P, type RedactedMultipleChoiceOption as Q, ReadAloudDataSchema as R, type RedactedMultipleChoiceOptionMedia as S, RedactedMultipleChoiceOptionMediaSchema as T, RedactedMultipleChoiceOptionSchema as U, type RedactedReadAloudData as V, RedactedReadAloudDataSchema as W, type RedactedStimulus as X, RedactedStimulusSchema as Y, type RedactedWrittenResponseData as Z, RedactedWrittenResponseDataSchema as _, DictationEquivalenceSchema as a, type SequenceSlot as a0, type SequenceSlotGroup as a1, type Stimulus as a2, type StimulusKind as a3, StimulusSchema as a4, TextMatchPolicySchema as a5, WrittenResponseDataSchema as a6, WrittenResponseRubricCriterionSchema as a7, WrittenResponseRubricSchema as a8, dictationJsonSchema as a9, fillInTheBlanksJsonSchema as aa, gapSelectJsonSchema as ab, itemGroupJsonSchema as ac, jsonSchemaFor as ad, multipleChoiceJsonSchema as ae, readAloudJsonSchema as af, stimulusJsonSchema as ag, validateActivity as ah, validateItemGroup as ai, writtenResponseJsonSchema as aj, DictationSlowMediaSchema as b, DictationToleranceSchema as c, FillInTheBlanksDataSchema as d, GapSelectChoiceSchema as e, GapSelectDataSchema as f, GapSelectGapSchema as g, ItemGroupSchema as h, MediaSchema as i, MediaUrlSchema as j, MultipleChoiceDataSchema as k, MultipleChoiceOptionMediaSchema as l, MultipleChoiceOptionSchema as m, ReadAloudSlowMediaSchema as n, type RedactedActivity as o, type RedactedBlankConfig as p, RedactedBlankConfigSchema as q, type RedactedDictationData as r, RedactedDictationDataSchema as s, type RedactedDictationSlowMedia as t, RedactedDictationSlowMediaSchema as u, type RedactedFillInTheBlanksData as v, RedactedFillInTheBlanksDataSchema as w, type RedactedGapSelectBank as x, RedactedGapSelectBankSchema as y, type RedactedGapSelectChoice as z };
2245
+ export { type RedactedStimulus as $, RedactedFillInTheBlanksDataSchema as A, BlankConfigSchema as B, type RedactedGapSelectBank as C, DictationDataSchema as D, RedactedGapSelectBankSchema as E, FeedbackSchema as F, GapSelectBankSchema as G, type RedactedGapSelectChoice as H, type ItemGroup as I, RedactedGapSelectChoiceSchema as J, type RedactedGapSelectData as K, RedactedGapSelectDataSchema as L, MediaPlaybackSchema as M, NativeControlHintSchema as N, type RedactedGapSelectGap as O, RedactedGapSelectGapSchema as P, RedactedItemGroupSchema as Q, ReadAloudDataSchema as R, RedactedMediaSchema as S, type RedactedMultipleChoiceData as T, RedactedMultipleChoiceDataSchema as U, type RedactedMultipleChoiceOption as V, type RedactedMultipleChoiceOptionMedia as W, RedactedMultipleChoiceOptionMediaSchema as X, RedactedMultipleChoiceOptionSchema as Y, type RedactedReadAloudData as Z, RedactedReadAloudDataSchema as _, DictationEquivalenceSchema as a, RedactedStimulusSchema as a0, type RedactedWrittenResponseData as a1, RedactedWrittenResponseDataSchema as a2, type SequenceEntry as a3, type SequenceSlot as a4, type SequenceSlotGroup as a5, type Stimulus as a6, type StimulusKind as a7, StimulusSchema as a8, TextMatchPolicySchema as a9, type TimelineChapter as aa, TimelineChapterSchema as ab, type TimelineCue as ac, TimelineCueSchema as ad, WrittenResponseDataSchema as ae, WrittenResponseRubricCriterionSchema as af, WrittenResponseRubricSchema as ag, dictationJsonSchema as ah, fillInTheBlanksJsonSchema as ai, gapSelectJsonSchema as aj, itemGroupJsonSchema as ak, jsonSchemaFor as al, multipleChoiceJsonSchema as am, readAloudJsonSchema as an, stimulusJsonSchema as ao, validateActivity as ap, validateItemGroup as aq, writtenResponseJsonSchema as ar, DictationSlowMediaSchema as b, DictationToleranceSchema as c, FillInTheBlanksDataSchema as d, GapSelectChoiceSchema as e, GapSelectDataSchema as f, GapSelectGapSchema as g, ItemGroupSchema as h, type MediaProgress as i, MediaSchema as j, type MediaTimeline as k, MediaTimelineSchema as l, MediaTrackSchema as m, MediaUrlSchema as n, MultipleChoiceDataSchema as o, MultipleChoiceOptionMediaSchema as p, MultipleChoiceOptionSchema as q, ReadAloudSlowMediaSchema as r, type RedactedActivity as s, type RedactedBlankConfig as t, RedactedBlankConfigSchema as u, type RedactedDictationData as v, RedactedDictationDataSchema as w, type RedactedDictationSlowMedia as x, RedactedDictationSlowMediaSchema as y, type RedactedFillInTheBlanksData as z };