@intellectif/lk-core 0.22.0 → 1.1.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 (66) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +6 -6
  3. package/dist/{activity-CYc7SD3d.d.cts → activity-MBOYLBjR.d.cts} +128 -22
  4. package/dist/{activity-CYc7SD3d.d.ts → activity-MBOYLBjR.d.ts} +128 -22
  5. package/dist/ai-check.cjs +138 -9
  6. package/dist/ai-check.cjs.map +1 -1
  7. package/dist/ai-check.d.cts +6 -3
  8. package/dist/ai-check.d.ts +6 -3
  9. package/dist/ai-check.js +133 -4
  10. package/dist/ai-check.js.map +1 -1
  11. package/dist/{chunk-2CV6NU32.cjs → chunk-2JT2WUQ2.cjs} +77 -39
  12. package/dist/chunk-2JT2WUQ2.cjs.map +1 -0
  13. package/dist/{chunk-D4TOPSHV.cjs → chunk-DSDXL3JO.cjs} +1216 -1105
  14. package/dist/chunk-DSDXL3JO.cjs.map +1 -0
  15. package/dist/{chunk-D3GP5MET.js → chunk-FBKTION6.js} +1093 -982
  16. package/dist/chunk-FBKTION6.js.map +1 -0
  17. package/dist/{chunk-Q7MV3IXJ.js → chunk-IARLJ5MW.js} +15 -16
  18. package/dist/chunk-IARLJ5MW.js.map +1 -0
  19. package/dist/{chunk-OPMY2MNS.cjs → chunk-LDFQUZII.cjs} +248 -22
  20. package/dist/chunk-LDFQUZII.cjs.map +1 -0
  21. package/dist/{chunk-5UCR4UNR.js → chunk-NQHETFDA.js} +238 -12
  22. package/dist/chunk-NQHETFDA.js.map +1 -0
  23. package/dist/{chunk-X5DAXBJI.js → chunk-SJVRUPJT.js} +2 -2
  24. package/dist/{chunk-EOFWSGLU.cjs → chunk-TJJFKKH2.cjs} +4 -4
  25. package/dist/{chunk-EOFWSGLU.cjs.map → chunk-TJJFKKH2.cjs.map} +1 -1
  26. package/dist/{chunk-WQVZPIN7.cjs → chunk-VSH7ECQL.cjs} +44 -45
  27. package/dist/chunk-VSH7ECQL.cjs.map +1 -0
  28. package/dist/{chunk-Z7QQZ53L.js → chunk-XS6U2ARZ.js} +70 -32
  29. package/dist/chunk-XS6U2ARZ.js.map +1 -0
  30. package/dist/index-DlCW0XaQ.d.cts +548 -0
  31. package/dist/index-DlcqkM_L.d.ts +548 -0
  32. package/dist/index.cjs +129 -198
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +178 -21
  35. package/dist/index.d.ts +178 -21
  36. package/dist/index.js +34 -103
  37. package/dist/index.js.map +1 -1
  38. package/dist/schemas.cjs +3 -94
  39. package/dist/schemas.cjs.map +1 -1
  40. package/dist/schemas.d.cts +2 -3
  41. package/dist/schemas.d.ts +2 -3
  42. package/dist/schemas.js +6 -97
  43. package/dist/scoring.cjs +3 -3
  44. package/dist/scoring.d.cts +242 -242
  45. package/dist/scoring.d.ts +242 -242
  46. package/dist/scoring.js +2 -2
  47. package/dist/xapi.cjs +3 -3
  48. package/dist/xapi.d.cts +1 -1
  49. package/dist/xapi.d.ts +1 -1
  50. package/dist/xapi.js +2 -2
  51. package/package.json +4 -4
  52. package/vectors/README.md +32 -2
  53. package/vectors/scoring.json +1 -498
  54. package/vectors/validation.json +6742 -0
  55. package/vectors/validation.mjs +195 -0
  56. package/dist/chunk-2CV6NU32.cjs.map +0 -1
  57. package/dist/chunk-5UCR4UNR.js.map +0 -1
  58. package/dist/chunk-D3GP5MET.js.map +0 -1
  59. package/dist/chunk-D4TOPSHV.cjs.map +0 -1
  60. package/dist/chunk-OPMY2MNS.cjs.map +0 -1
  61. package/dist/chunk-Q7MV3IXJ.js.map +0 -1
  62. package/dist/chunk-WQVZPIN7.cjs.map +0 -1
  63. package/dist/chunk-Z7QQZ53L.js.map +0 -1
  64. package/dist/index-0Z3-nnAP.d.ts +0 -2303
  65. package/dist/index-CxxiNSSH.d.cts +0 -2303
  66. /package/dist/{chunk-X5DAXBJI.js.map → chunk-SJVRUPJT.js.map} +0 -0
package/dist/index.cjs CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkEOFWSGLUcjs = require('./chunk-EOFWSGLU.cjs');
7
+ var _chunkTJJFKKH2cjs = require('./chunk-TJJFKKH2.cjs');
8
8
 
9
9
 
10
10
 
@@ -27,10 +27,10 @@ var _chunkEOFWSGLUcjs = require('./chunk-EOFWSGLU.cjs');
27
27
 
28
28
 
29
29
 
30
+ var _chunk2JT2WUQ2cjs = require('./chunk-2JT2WUQ2.cjs');
30
31
 
31
32
 
32
33
 
33
- var _chunk2CV6NU32cjs = require('./chunk-2CV6NU32.cjs');
34
34
 
35
35
 
36
36
 
@@ -49,8 +49,8 @@ var _chunk2CV6NU32cjs = require('./chunk-2CV6NU32.cjs');
49
49
 
50
50
 
51
51
 
52
- var _chunkOPMY2MNScjs = require('./chunk-OPMY2MNS.cjs');
53
52
 
53
+ var _chunkLDFQUZIIcjs = require('./chunk-LDFQUZII.cjs');
54
54
 
55
55
 
56
56
 
@@ -74,8 +74,8 @@ var _chunkOPMY2MNScjs = require('./chunk-OPMY2MNS.cjs');
74
74
 
75
75
 
76
76
 
77
- var _chunkWQVZPIN7cjs = require('./chunk-WQVZPIN7.cjs');
78
77
 
78
+ var _chunkVSH7ECQLcjs = require('./chunk-VSH7ECQL.cjs');
79
79
 
80
80
 
81
81
 
@@ -122,45 +122,7 @@ var _chunkWQVZPIN7cjs = require('./chunk-WQVZPIN7.cjs');
122
122
 
123
123
 
124
124
 
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
-
161
-
162
-
163
- var _chunkD4TOPSHVcjs = require('./chunk-D4TOPSHV.cjs');
125
+ var _chunkDSDXL3JOcjs = require('./chunk-DSDXL3JO.cjs');
164
126
 
165
127
  // src/content-hash.ts
166
128
  function canonicalJson(value, seen = /* @__PURE__ */ new Set()) {
@@ -723,14 +685,14 @@ function frozenScoring(policy) {
723
685
  if (policy === void 0 || policy === null) {
724
686
  return void 0;
725
687
  }
726
- const checked = _chunkWQVZPIN7cjs.validateItemScoringPolicy.call(void 0, policy);
688
+ const checked = _chunkVSH7ECQLcjs.validateItemScoringPolicy.call(void 0, policy);
727
689
  if (!checked.success) {
728
690
  const first = checked.issues[0];
729
691
  throw new Error(
730
692
  `planAttempt: the scoring policy is not one to record \u2014 ${_nullishCoalesce(_optionalChain([first, 'optionalAccess', _24 => _24.message]), () => ( "invalid"))}` + (checked.issues.length > 1 ? ` (and ${checked.issues.length - 1} more)` : "")
731
693
  );
732
694
  }
733
- return _chunkWQVZPIN7cjs.resolveItemScoringPolicy.call(void 0, checked.data);
695
+ return _chunkVSH7ECQLcjs.resolveItemScoringPolicy.call(void 0, checked.data);
734
696
  }
735
697
  function missingOutcome(slot, policy) {
736
698
  if (typeof policy === "function") {
@@ -884,22 +846,22 @@ function createInteractiveVideoDraft(context) {
884
846
  };
885
847
  }
886
848
  function validateItemGroupDraft(draft) {
887
- return _chunkD4TOPSHVcjs.withValidationScope.call(void 0, () => validateItemGroupDraftInScope(draft));
849
+ return _chunkDSDXL3JOcjs.withValidationScope.call(void 0, () => validateItemGroupDraftInScope(draft));
888
850
  }
889
851
  function validateItemGroupDraftInScope(draft) {
890
852
  const issues = [];
891
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, draft)) {
853
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, draft)) {
892
854
  issues.push(
893
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_not_an_object", [], "A group must be an object with a stimulus and its items.")
855
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_not_an_object", [], "A group must be an object with a stimulus and its items.")
894
856
  );
895
857
  return { status: "invalid", issues };
896
858
  }
897
859
  issues.push(...checkGroupIdentity(draft));
898
- if (_chunkD4TOPSHVcjs.isRecord.call(void 0, draft.stimulus)) {
860
+ if (_chunkDSDXL3JOcjs.isRecord.call(void 0, draft.stimulus)) {
899
861
  issues.push(...checkStimulus(draft.stimulus));
900
- } else if (_chunkD4TOPSHVcjs.isUnset.call(void 0, draft.stimulus)) {
862
+ } else if (_chunkDSDXL3JOcjs.isUnset.call(void 0, draft.stimulus)) {
901
863
  issues.push(
902
- _chunkD4TOPSHVcjs.issue.call(void 0,
864
+ _chunkDSDXL3JOcjs.issue.call(void 0,
903
865
  "ig_stimulus_required",
904
866
  ["stimulus"],
905
867
  "Add the passage, recording or image the questions are about."
@@ -910,26 +872,26 @@ function validateItemGroupDraftInScope(draft) {
910
872
  if (draft.timeline !== void 0 && draft.timeline !== null) {
911
873
  issues.push(...checkTimeline(draft));
912
874
  }
913
- const captions = _chunkD4TOPSHVcjs.groupCaptionsField.call(void 0, draft, (captionsUrl) => !_chunkD4TOPSHVcjs.isUnwritten.call(void 0, captionsUrl));
875
+ const captions = _chunkDSDXL3JOcjs.groupCaptionsField.call(void 0, draft, (captionsUrl) => !_chunkDSDXL3JOcjs.isUnwritten.call(void 0, captionsUrl));
914
876
  if (captions !== void 0) {
915
877
  issues.push(
916
- _chunkD4TOPSHVcjs.issue.call(void 0,
878
+ _chunkDSDXL3JOcjs.issue.call(void 0,
917
879
  "dc_captions_not_allowed",
918
880
  ["stimulus", "media", captions],
919
- _chunkD4TOPSHVcjs.GROUP_CAPTIONS_REVEAL_DICTATION
881
+ _chunkDSDXL3JOcjs.GROUP_CAPTIONS_REVEAL_DICTATION
920
882
  )
921
883
  );
922
884
  }
923
- const parsed = _chunk2CV6NU32cjs.ItemGroupSchema.safeParse(draft, { reportInput: true });
885
+ const parsed = _chunk2JT2WUQ2cjs.ItemGroupSchema.safeParse(draft, { reportInput: true });
924
886
  if (!parsed.success) {
925
887
  for (const schemaIssue of parsed.error.issues) {
926
888
  const path = schemaIssue.path.map(String);
927
- if (issues.some((known) => _chunkD4TOPSHVcjs.covers.call(void 0, known.path, path))) {
889
+ if (issues.some((known) => _chunkDSDXL3JOcjs.covers.call(void 0, known.path, path))) {
928
890
  continue;
929
891
  }
930
- if (path.length > 0 && _chunkD4TOPSHVcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
892
+ if (path.length > 0 && _chunkDSDXL3JOcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
931
893
  issues.push(
932
- _chunkD4TOPSHVcjs.issue.call(void 0,
894
+ _chunkDSDXL3JOcjs.issue.call(void 0,
933
895
  "null_not_allowed",
934
896
  path,
935
897
  "This field cannot be null. Leave it out if it is optional, or give it a value."
@@ -945,7 +907,7 @@ function validateItemGroupDraftInScope(draft) {
945
907
  });
946
908
  }
947
909
  }
948
- const stored = _chunk2CV6NU32cjs.validateItemGroup.call(void 0, draft);
910
+ const stored = _chunk2JT2WUQ2cjs.validateItemGroup.call(void 0, draft);
949
911
  if (issues.length === 0 && stored.success) {
950
912
  return { status: "complete", data: stored.data, issues };
951
913
  }
@@ -960,21 +922,21 @@ function validateItemGroupDraftInScope(draft) {
960
922
  function checkTimeline(draft) {
961
923
  const issues = [];
962
924
  const timeline = draft.timeline;
963
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, timeline)) {
925
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, timeline)) {
964
926
  return issues;
965
927
  }
966
- const stimulus = _chunkD4TOPSHVcjs.isRecord.call(void 0, draft.stimulus) ? draft.stimulus : void 0;
967
- if (stimulus !== void 0 && !_chunkD4TOPSHVcjs.isUnwritten.call(void 0, stimulus.kind) && stimulus.kind !== "video") {
928
+ const stimulus = _chunkDSDXL3JOcjs.isRecord.call(void 0, draft.stimulus) ? draft.stimulus : void 0;
929
+ if (stimulus !== void 0 && !_chunkDSDXL3JOcjs.isUnwritten.call(void 0, stimulus.kind) && stimulus.kind !== "video") {
968
930
  issues.push(
969
- _chunkD4TOPSHVcjs.issue.call(void 0,
931
+ _chunkDSDXL3JOcjs.issue.call(void 0,
970
932
  "ig_timeline_stimulus_kind",
971
933
  ["stimulus", "kind"],
972
934
  "An interactive video needs a video: quizzes open at moments of it."
973
935
  )
974
936
  );
975
- } else if (stimulus !== void 0 && _chunkD4TOPSHVcjs.isRecord.call(void 0, stimulus.media) && !_chunkD4TOPSHVcjs.isUnwritten.call(void 0, stimulus.media.type) && stimulus.media.type !== "video") {
937
+ } else if (stimulus !== void 0 && _chunkDSDXL3JOcjs.isRecord.call(void 0, stimulus.media) && !_chunkDSDXL3JOcjs.isUnwritten.call(void 0, stimulus.media.type) && stimulus.media.type !== "video") {
976
938
  issues.push(
977
- _chunkD4TOPSHVcjs.issue.call(void 0,
939
+ _chunkDSDXL3JOcjs.issue.call(void 0,
978
940
  "ig_timeline_stimulus_kind",
979
941
  ["stimulus", "media", "type"],
980
942
  "Upload a video file. An embedded player from another site cannot be paused when a quiz opens."
@@ -983,7 +945,7 @@ function checkTimeline(draft) {
983
945
  }
984
946
  if (draft.shuffle === "within-group") {
985
947
  issues.push(
986
- _chunkD4TOPSHVcjs.issue.call(void 0,
948
+ _chunkDSDXL3JOcjs.issue.call(void 0,
987
949
  "ig_timeline_shuffle",
988
950
  ["shuffle"],
989
951
  "The questions of an interactive video appear in the order their quizzes open, so they cannot be shuffled."
@@ -993,25 +955,25 @@ function checkTimeline(draft) {
993
955
  const items = Array.isArray(draft.items) ? draft.items : [];
994
956
  const itemIndexById = /* @__PURE__ */ new Map();
995
957
  items.forEach((item, index) => {
996
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, item)) {
958
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, item)) {
997
959
  return;
998
960
  }
999
961
  if (typeof item.id === "string" && item.id !== "") {
1000
962
  itemIndexById.set(item.id, index);
1001
963
  }
1002
964
  const type = item.type;
1003
- if (typeof type === "string" && type !== "" && type !== "item-group" && !_chunk2CV6NU32cjs.isInteractiveVideoItemType.call(void 0, type) && _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type) !== void 0) {
965
+ if (typeof type === "string" && type !== "" && type !== "item-group" && !_chunk2JT2WUQ2cjs.isInteractiveVideoItemType.call(void 0, type) && _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type) !== void 0) {
1004
966
  issues.push(
1005
- _chunkD4TOPSHVcjs.issue.call(void 0,
967
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1006
968
  "ig_timeline_item_type",
1007
969
  ["items", index, "type"],
1008
- `An interactive video can hold ${_chunk2CV6NU32cjs.INTERACTIVE_VIDEO_ITEM_TYPES.join(", ")} questions only.`
970
+ `An interactive video can hold ${_chunk2JT2WUQ2cjs.INTERACTIVE_VIDEO_ITEM_TYPES.join(", ")} questions only.`
1009
971
  )
1010
972
  );
1011
973
  }
1012
- if (type === "dictation" && _chunkD4TOPSHVcjs.isUnset.call(void 0, item.media)) {
974
+ if (type === "dictation" && _chunkDSDXL3JOcjs.isUnset.call(void 0, item.media)) {
1013
975
  issues.push(
1014
- _chunkD4TOPSHVcjs.issue.call(void 0,
976
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1015
977
  "ig_timeline_dictation_media",
1016
978
  ["items", index, "media"],
1017
979
  "Add the recording this dictation plays: inside a video it cannot play the video."
@@ -1023,7 +985,7 @@ function checkTimeline(draft) {
1023
985
  const quizIds = /* @__PURE__ */ new Set();
1024
986
  const placed = /* @__PURE__ */ new Set();
1025
987
  cues.forEach((cue, cueIndex) => {
1026
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, cue)) {
988
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, cue)) {
1027
989
  return;
1028
990
  }
1029
991
  const at = (field, ...rest) => [
@@ -1033,19 +995,19 @@ function checkTimeline(draft) {
1033
995
  field,
1034
996
  ...rest
1035
997
  ];
1036
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, cue.id)) {
1037
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "ig_timeline_quiz_id_required", at("id"), "This quiz has no id."));
998
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, cue.id)) {
999
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "ig_timeline_quiz_id_required", at("id"), "This quiz has no id."));
1038
1000
  } else if (typeof cue.id === "string") {
1039
1001
  if (quizIds.has(cue.id)) {
1040
1002
  issues.push(
1041
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_timeline_quiz_id_duplicate", at("id"), `Two quizzes share the id "${cue.id}".`)
1003
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_timeline_quiz_id_duplicate", at("id"), `Two quizzes share the id "${cue.id}".`)
1042
1004
  );
1043
1005
  }
1044
1006
  quizIds.add(cue.id);
1045
1007
  }
1046
- if (_chunkD4TOPSHVcjs.isUnset.call(void 0, cue.at)) {
1008
+ if (_chunkDSDXL3JOcjs.isUnset.call(void 0, cue.at)) {
1047
1009
  issues.push(
1048
- _chunkD4TOPSHVcjs.issue.call(void 0,
1010
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1049
1011
  "ig_timeline_quiz_time_required",
1050
1012
  at("at"),
1051
1013
  "Choose when in the video this quiz opens."
@@ -1053,16 +1015,16 @@ function checkTimeline(draft) {
1053
1015
  );
1054
1016
  } else if (typeof cue.at !== "number" || !Number.isFinite(cue.at) || cue.at < 0) {
1055
1017
  issues.push(
1056
- _chunkD4TOPSHVcjs.issue.call(void 0,
1018
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1057
1019
  "ig_timeline_quiz_time_invalid",
1058
1020
  at("at"),
1059
1021
  "A quiz opens at a number of seconds, 0 or more."
1060
1022
  )
1061
1023
  );
1062
1024
  }
1063
- if (_chunkD4TOPSHVcjs.isUnset.call(void 0, cue.itemIds) || Array.isArray(cue.itemIds) && cue.itemIds.length === 0) {
1025
+ if (_chunkDSDXL3JOcjs.isUnset.call(void 0, cue.itemIds) || Array.isArray(cue.itemIds) && cue.itemIds.length === 0) {
1064
1026
  issues.push(
1065
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_timeline_quiz_empty", at("itemIds"), "Add at least one question to this quiz.")
1027
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_timeline_quiz_empty", at("itemIds"), "Add at least one question to this quiz.")
1066
1028
  );
1067
1029
  return;
1068
1030
  }
@@ -1075,7 +1037,7 @@ function checkTimeline(draft) {
1075
1037
  }
1076
1038
  if (!itemIndexById.has(itemId)) {
1077
1039
  issues.push(
1078
- _chunkD4TOPSHVcjs.issue.call(void 0,
1040
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1079
1041
  "ig_timeline_quiz_unknown_item",
1080
1042
  at("itemIds", position),
1081
1043
  `This quiz names a question that is not in the video ("${itemId}").`
@@ -1083,7 +1045,7 @@ function checkTimeline(draft) {
1083
1045
  );
1084
1046
  } else if (placed.has(itemId)) {
1085
1047
  issues.push(
1086
- _chunkD4TOPSHVcjs.issue.call(void 0,
1048
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1087
1049
  "ig_timeline_item_duplicate",
1088
1050
  at("itemIds", position),
1089
1051
  "This question is already in a quiz: each question belongs to one quiz."
@@ -1096,7 +1058,7 @@ function checkTimeline(draft) {
1096
1058
  for (const [itemId, index] of itemIndexById) {
1097
1059
  if (!placed.has(itemId)) {
1098
1060
  issues.push(
1099
- _chunkD4TOPSHVcjs.issue.call(void 0,
1061
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1100
1062
  "ig_timeline_item_unplaced",
1101
1063
  ["items", index],
1102
1064
  "Add this question to a quiz, or the video never shows it."
@@ -1107,12 +1069,12 @@ function checkTimeline(draft) {
1107
1069
  const chapters = Array.isArray(timeline.chapters) ? timeline.chapters : [];
1108
1070
  let previousAt;
1109
1071
  chapters.forEach((chapter, index) => {
1110
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, chapter)) {
1072
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, chapter)) {
1111
1073
  return;
1112
1074
  }
1113
- if (_chunkD4TOPSHVcjs.isUnwritten.call(void 0, chapter.title)) {
1075
+ if (_chunkDSDXL3JOcjs.isUnwritten.call(void 0, chapter.title)) {
1114
1076
  issues.push(
1115
- _chunkD4TOPSHVcjs.issue.call(void 0,
1077
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1116
1078
  "ig_timeline_chapter_title",
1117
1079
  ["timeline", "chapters", index, "title"],
1118
1080
  "Give this chapter a title."
@@ -1122,7 +1084,7 @@ function checkTimeline(draft) {
1122
1084
  if (typeof chapter.at === "number" && Number.isFinite(chapter.at)) {
1123
1085
  if (previousAt !== void 0 && chapter.at <= previousAt) {
1124
1086
  issues.push(
1125
- _chunkD4TOPSHVcjs.issue.call(void 0,
1087
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1126
1088
  "ig_timeline_chapter_order",
1127
1089
  ["timeline", "chapters", index, "at"],
1128
1090
  "Chapters must start in order, each after the one before it."
@@ -1138,7 +1100,7 @@ function checkGroupIdentity(draft) {
1138
1100
  const issues = [];
1139
1101
  if (draft.schemaVersion !== "1.0") {
1140
1102
  issues.push(
1141
- _chunkD4TOPSHVcjs.issue.call(void 0,
1103
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1142
1104
  "schema_version_invalid",
1143
1105
  ["schemaVersion"],
1144
1106
  'The draft must have schemaVersion "1.0". A draft from createItemGroupDraft has it.'
@@ -1146,14 +1108,14 @@ function checkGroupIdentity(draft) {
1146
1108
  );
1147
1109
  }
1148
1110
  if (draft.type !== "item-group") {
1149
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "type_mismatch", ["type"], `The draft's type must be "item-group".`));
1111
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "type_mismatch", ["type"], `The draft's type must be "item-group".`));
1150
1112
  }
1151
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, draft.id)) {
1152
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "id_required", ["id"], "The group has no id."));
1113
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, draft.id)) {
1114
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "id_required", ["id"], "The group has no id."));
1153
1115
  }
1154
- if (!_chunkD4TOPSHVcjs.isUnset.call(void 0, draft.shuffle) && draft.shuffle !== "none" && draft.shuffle !== "within-group") {
1116
+ if (!_chunkDSDXL3JOcjs.isUnset.call(void 0, draft.shuffle) && draft.shuffle !== "none" && draft.shuffle !== "within-group") {
1155
1117
  issues.push(
1156
- _chunkD4TOPSHVcjs.issue.call(void 0,
1118
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1157
1119
  "ig_shuffle_invalid",
1158
1120
  ["shuffle"],
1159
1121
  'Shuffling is either "none" or "within-group". Leave it out to keep the authored order.'
@@ -1172,13 +1134,13 @@ var MEDIA_FOR_KIND = {
1172
1134
  function checkStimulus(stimulus) {
1173
1135
  const issues = [];
1174
1136
  const at = (...rest) => ["stimulus", ...rest];
1175
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, stimulus.id)) {
1176
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "ig_stimulus_id_required", at("id"), "The stimulus has no id."));
1137
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, stimulus.id)) {
1138
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "ig_stimulus_id_required", at("id"), "The stimulus has no id."));
1177
1139
  }
1178
1140
  const kind = stimulus.kind;
1179
- if (_chunkD4TOPSHVcjs.isUnwritten.call(void 0, kind)) {
1141
+ if (_chunkDSDXL3JOcjs.isUnwritten.call(void 0, kind)) {
1180
1142
  issues.push(
1181
- _chunkD4TOPSHVcjs.issue.call(void 0,
1143
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1182
1144
  "ig_stimulus_kind_required",
1183
1145
  at("kind"),
1184
1146
  "Choose what the questions are about: a text, a recording, a video, an image, or a mix."
@@ -1187,71 +1149,71 @@ function checkStimulus(stimulus) {
1187
1149
  } else if (typeof kind !== "string" || !KINDS.has(kind)) {
1188
1150
  if (typeof kind === "string") {
1189
1151
  issues.push(
1190
- _chunkD4TOPSHVcjs.issue.call(void 0,
1152
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1191
1153
  "ig_stimulus_kind_invalid",
1192
1154
  at("kind"),
1193
1155
  `"${kind}" is not a stimulus kind. Use text, audio, video, image or mixed.`
1194
1156
  )
1195
1157
  );
1196
1158
  }
1197
- if (_chunkD4TOPSHVcjs.isRecord.call(void 0, stimulus.media)) {
1198
- issues.push(..._chunkD4TOPSHVcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1159
+ if (_chunkDSDXL3JOcjs.isRecord.call(void 0, stimulus.media)) {
1160
+ issues.push(..._chunkDSDXL3JOcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1199
1161
  }
1200
1162
  return issues;
1201
1163
  }
1202
1164
  const hasBody = typeof stimulus.body === "string" && stimulus.body.trim() !== "";
1203
- const htmlPresent = !_chunkD4TOPSHVcjs.isUnset.call(void 0, stimulus.bodyHtml);
1165
+ const htmlPresent = !_chunkDSDXL3JOcjs.isUnset.call(void 0, stimulus.bodyHtml);
1204
1166
  if (!hasBody && (kind === "text" || kind === "mixed" || htmlPresent)) {
1205
1167
  issues.push(
1206
- _chunkD4TOPSHVcjs.issue.call(void 0,
1168
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1207
1169
  "ig_stimulus_body_required",
1208
1170
  at("body"),
1209
- _chunkD4TOPSHVcjs.isUnwritten.call(void 0, stimulus.bodyHtml) ? "Write the passage." : "Write the passage as plain text too. The rich-text version is shown only where a sanitiser is supplied."
1171
+ _chunkDSDXL3JOcjs.isUnwritten.call(void 0, stimulus.bodyHtml) ? "Write the passage." : "Write the passage as plain text too. The rich-text version is shown only where a sanitiser is supplied."
1210
1172
  )
1211
1173
  );
1212
1174
  }
1213
- if (kind !== "text" && _chunkD4TOPSHVcjs.isUnset.call(void 0, stimulus.media)) {
1175
+ if (kind !== "text" && _chunkDSDXL3JOcjs.isUnset.call(void 0, stimulus.media)) {
1214
1176
  issues.push(
1215
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_stimulus_media_required", at("media"), "Add the recording, video or image.")
1177
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_stimulus_media_required", at("media"), "Add the recording, video or image.")
1216
1178
  );
1217
- } else if (_chunkD4TOPSHVcjs.isRecord.call(void 0, stimulus.media)) {
1179
+ } else if (_chunkDSDXL3JOcjs.isRecord.call(void 0, stimulus.media)) {
1218
1180
  const allowed = MEDIA_FOR_KIND[kind];
1219
1181
  const mediaType = stimulus.media.type;
1220
1182
  if (allowed !== void 0 && typeof mediaType === "string" && !allowed.includes(mediaType)) {
1221
1183
  issues.push(
1222
- _chunkD4TOPSHVcjs.issue.call(void 0,
1184
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1223
1185
  "ig_stimulus_media_kind",
1224
1186
  at("media", "type"),
1225
1187
  `A "${kind}" stimulus cannot carry ${mediaType} media. Use ${allowed.join(" or ")}.`
1226
1188
  )
1227
1189
  );
1228
1190
  }
1229
- issues.push(..._chunkD4TOPSHVcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1191
+ issues.push(..._chunkDSDXL3JOcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1230
1192
  }
1231
1193
  return issues;
1232
1194
  }
1233
1195
  function checkItems(draft) {
1234
1196
  const issues = [];
1235
- const items = _chunkD4TOPSHVcjs.isUnset.call(void 0, draft.items) ? [] : draft.items;
1197
+ const items = _chunkDSDXL3JOcjs.isUnset.call(void 0, draft.items) ? [] : draft.items;
1236
1198
  if (!Array.isArray(items)) {
1237
1199
  return issues;
1238
1200
  }
1239
1201
  if (items.length === 0) {
1240
1202
  issues.push(
1241
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_items_required", ["items"], "Add at least one question about this material.")
1203
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_items_required", ["items"], "Add at least one question about this material.")
1242
1204
  );
1243
1205
  return issues;
1244
1206
  }
1245
1207
  const seen = /* @__PURE__ */ new Set();
1246
1208
  const repeated = /* @__PURE__ */ new Set();
1247
1209
  for (const [index, item] of items.entries()) {
1248
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, item)) {
1210
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, item)) {
1249
1211
  continue;
1250
1212
  }
1251
1213
  const ordinal = index + 1;
1252
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, item.id)) {
1214
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, item.id)) {
1253
1215
  issues.push(
1254
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_item_id_required", ["items", index, "id"], `Question ${ordinal} has no id.`)
1216
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_item_id_required", ["items", index, "id"], `Question ${ordinal} has no id.`)
1255
1217
  );
1256
1218
  } else if (typeof item.id === "string") {
1257
1219
  if (seen.has(item.id)) {
@@ -1261,7 +1223,7 @@ function checkItems(draft) {
1261
1223
  }
1262
1224
  if (item.type === "item-group") {
1263
1225
  issues.push(
1264
- _chunkD4TOPSHVcjs.issue.call(void 0,
1226
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1265
1227
  "ig_item_nested_group",
1266
1228
  ["items", index, "type"],
1267
1229
  "Groups do not nest: every item must be an activity."
@@ -1269,9 +1231,9 @@ function checkItems(draft) {
1269
1231
  );
1270
1232
  continue;
1271
1233
  }
1272
- if (_chunkD4TOPSHVcjs.isUnwritten.call(void 0, item.type)) {
1234
+ if (_chunkDSDXL3JOcjs.isUnwritten.call(void 0, item.type)) {
1273
1235
  issues.push(
1274
- _chunkD4TOPSHVcjs.issue.call(void 0,
1236
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1275
1237
  "ig_item_type_required",
1276
1238
  ["items", index, "type"],
1277
1239
  `Choose what kind of question ${ordinal} is.`
@@ -1286,11 +1248,11 @@ function checkItems(draft) {
1286
1248
  try {
1287
1249
  result = validateDraft(item.type, item);
1288
1250
  } catch (error) {
1289
- if (!(error instanceof _chunkD4TOPSHVcjs.UnknownActivityTypeError) || error.activityType !== item.type) {
1251
+ if (!(error instanceof _chunkDSDXL3JOcjs.UnknownActivityTypeError) || error.activityType !== item.type) {
1290
1252
  throw error;
1291
1253
  }
1292
1254
  issues.push(
1293
- _chunkD4TOPSHVcjs.issue.call(void 0,
1255
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1294
1256
  "ig_item_type_unknown",
1295
1257
  ["items", index, "type"],
1296
1258
  `"${item.type}" is not a registered activity type.`
@@ -1304,7 +1266,7 @@ function checkItems(draft) {
1304
1266
  }
1305
1267
  for (const id of repeated) {
1306
1268
  issues.push(
1307
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_item_id_duplicate", ["items"], `More than one question has the id "${id}".`)
1269
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_item_id_duplicate", ["items"], `More than one question has the id "${id}".`)
1308
1270
  );
1309
1271
  }
1310
1272
  return issues;
@@ -1312,30 +1274,32 @@ function checkItems(draft) {
1312
1274
 
1313
1275
  // src/authoring/index.ts
1314
1276
  function validateDraft(type, draft) {
1315
- return _chunkD4TOPSHVcjs.withValidationScope.call(void 0, () => validateDraftInScope(type, draft));
1277
+ return _chunkDSDXL3JOcjs.withValidationScope.call(void 0, () => validateDraftInScope(type, draft));
1316
1278
  }
1317
1279
  function validateDraftInScope(type, draft) {
1318
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type);
1280
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type);
1319
1281
  if (descriptor === void 0) {
1320
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(String(type));
1282
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(String(type));
1321
1283
  }
1322
- const reported = _chunkD4TOPSHVcjs.isRecord.call(void 0, draft) && _optionalChain([descriptor, 'access', _25 => _25.authoring, 'optionalAccess', _26 => _26.checkDraft]) !== void 0 ? descriptor.authoring.checkDraft(draft).map(normalise) : [];
1284
+ const reported = _chunkDSDXL3JOcjs.isRecord.call(void 0, draft) && _optionalChain([descriptor, 'access', _25 => _25.authoring, 'optionalAccess', _26 => _26.checkDraft]) !== void 0 ? descriptor.authoring.checkDraft(draft).map(normalise) : [];
1323
1285
  const issues = [...reported];
1324
- const parsed = descriptor.schema.safeParse(draft, { reportInput: true });
1286
+ const parsed = _chunkDSDXL3JOcjs.readSchema.call(void 0, descriptor.schema, draft, `Activity type "${descriptor.type}"`, {
1287
+ reportInput: true
1288
+ });
1325
1289
  if (!parsed.success) {
1326
- const covered = _chunkD4TOPSHVcjs.coveredPathsOf.call(void 0, reported);
1290
+ const covered = _chunkDSDXL3JOcjs.coveredPathsOf.call(void 0, reported);
1327
1291
  const reportedEmpty = /* @__PURE__ */ new Set();
1328
- for (const schemaIssue of parsed.error.issues) {
1292
+ for (const schemaIssue of parsed.issues) {
1329
1293
  const path = schemaIssue.path.map(String);
1330
- if (covered.has(_chunkD4TOPSHVcjs.pathKey.call(void 0, path))) {
1294
+ if (covered.has(_chunkDSDXL3JOcjs.pathKey.call(void 0, path))) {
1331
1295
  continue;
1332
1296
  }
1333
- if (path.length > 0 && _chunkD4TOPSHVcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
1297
+ if (path.length > 0 && _chunkDSDXL3JOcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
1334
1298
  const key = JSON.stringify(path);
1335
1299
  if (!reportedEmpty.has(key)) {
1336
1300
  reportedEmpty.add(key);
1337
1301
  issues.push(
1338
- _chunkD4TOPSHVcjs.issue.call(void 0,
1302
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1339
1303
  "null_not_allowed",
1340
1304
  path,
1341
1305
  typeof schemaIssue.path.at(-1) === "number" ? "This entry has no value. Remove it, or fill it in." : "This field cannot be null. Leave it out if it is optional, or give it a value."
@@ -1359,9 +1323,9 @@ function validateDraftInScope(type, draft) {
1359
1323
  return { status: invalid ? "invalid" : "incomplete", issues };
1360
1324
  }
1361
1325
  function createDraft(type, context) {
1362
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type);
1326
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type);
1363
1327
  if (descriptor === void 0) {
1364
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(String(type));
1328
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(String(type));
1365
1329
  }
1366
1330
  const create = _optionalChain([descriptor, 'access', _27 => _27.authoring, 'optionalAccess', _28 => _28.createDraft]);
1367
1331
  if (create === void 0) {
@@ -1386,7 +1350,7 @@ function createDraft(type, context) {
1386
1350
  return create({ newId });
1387
1351
  }
1388
1352
  function normalise(found) {
1389
- const documented = Object.hasOwn(_chunkD4TOPSHVcjs.DRAFT_ISSUE_SEVERITY, found.code) ? _chunkD4TOPSHVcjs.DRAFT_ISSUE_SEVERITY[found.code] : void 0;
1353
+ const documented = Object.hasOwn(_chunkDSDXL3JOcjs.DRAFT_ISSUE_SEVERITY, found.code) ? _chunkDSDXL3JOcjs.DRAFT_ISSUE_SEVERITY[found.code] : void 0;
1390
1354
  return {
1391
1355
  ...found,
1392
1356
  path: found.path.map(String),
@@ -1450,9 +1414,9 @@ function redactValue(value, policy, reveal) {
1450
1414
  }
1451
1415
  function redact(data, options = {}) {
1452
1416
  const reveal = _nullishCoalesce(options.reveal, () => ( "none"));
1453
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, data.type);
1417
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, data.type);
1454
1418
  if (descriptor === void 0) {
1455
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(String(data.type));
1419
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(String(data.type));
1456
1420
  }
1457
1421
  if (descriptor.fieldPolicy === void 0) {
1458
1422
  throw new Error(
@@ -1463,11 +1427,15 @@ function redact(data, options = {}) {
1463
1427
  const projected = redactValue(data, effectivePolicy, reveal);
1464
1428
  const result = { ...projected, redacted: true };
1465
1429
  if (reveal === "none" && descriptor.redactedSchema !== void 0) {
1466
- const parsed = descriptor.redactedSchema.safeParse(result);
1430
+ const parsed = _chunkDSDXL3JOcjs.readSchema.call(void 0,
1431
+ descriptor.redactedSchema,
1432
+ result,
1433
+ `Activity type "${descriptor.type}"`
1434
+ );
1467
1435
  if (!parsed.success) {
1468
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1436
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1469
1437
  descriptor.type,
1470
- parsed.error.issues.map((issue2) => ({
1438
+ parsed.issues.map((issue2) => ({
1471
1439
  path: issue2.path.map(String),
1472
1440
  message: issue2.message,
1473
1441
  code: issue2.code
@@ -1479,13 +1447,13 @@ function redact(data, options = {}) {
1479
1447
  }
1480
1448
  function assertRedacted(data) {
1481
1449
  if (typeof data !== "object" || data === null) {
1482
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)("unknown", [
1450
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)("unknown", [
1483
1451
  { path: [], message: "Redacted activity data must be an object.", code: "invalid_type" }
1484
1452
  ]);
1485
1453
  }
1486
1454
  const candidate = data;
1487
1455
  if (candidate.redacted !== true) {
1488
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(String(_nullishCoalesce(candidate.type, () => ( "unknown"))), [
1456
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(String(_nullishCoalesce(candidate.type, () => ( "unknown"))), [
1489
1457
  {
1490
1458
  path: ["redacted"],
1491
1459
  message: "Missing redacted marker \u2014 this payload is not a redact() projection.",
@@ -1494,12 +1462,12 @@ function assertRedacted(data) {
1494
1462
  ]);
1495
1463
  }
1496
1464
  const type = typeof candidate.type === "string" ? candidate.type : "";
1497
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type);
1465
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type);
1498
1466
  if (descriptor === void 0) {
1499
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(type);
1467
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(type);
1500
1468
  }
1501
1469
  if (descriptor.redactedSchema === void 0) {
1502
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(descriptor.type, [
1470
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(descriptor.type, [
1503
1471
  {
1504
1472
  path: [],
1505
1473
  message: `Activity type "${descriptor.type}" registers no redactedSchema; assertRedacted cannot prove this payload is learner-safe.`,
@@ -1507,11 +1475,15 @@ function assertRedacted(data) {
1507
1475
  }
1508
1476
  ]);
1509
1477
  }
1510
- const parsed = descriptor.redactedSchema.safeParse(candidate);
1478
+ const parsed = _chunkDSDXL3JOcjs.readSchema.call(void 0,
1479
+ descriptor.redactedSchema,
1480
+ candidate,
1481
+ `Activity type "${descriptor.type}"`
1482
+ );
1511
1483
  if (!parsed.success) {
1512
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1484
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1513
1485
  descriptor.type,
1514
- parsed.error.issues.map((issue2) => ({
1486
+ parsed.issues.map((issue2) => ({
1515
1487
  path: issue2.path.map(String),
1516
1488
  message: issue2.message,
1517
1489
  code: issue2.code
@@ -1525,7 +1497,7 @@ var STIMULUS_FIELD_POLICY = {
1525
1497
  title: "public",
1526
1498
  body: "public",
1527
1499
  bodyHtml: "public",
1528
- media: _chunkD4TOPSHVcjs.MEDIA_FIELD_POLICY,
1500
+ media: _chunkDSDXL3JOcjs.MEDIA_FIELD_POLICY,
1529
1501
  locale: "public",
1530
1502
  attribution: "public",
1531
1503
  transcript: "author-only"
@@ -1569,9 +1541,9 @@ function redactItemGroup(group, options = {}) {
1569
1541
  redacted: true
1570
1542
  };
1571
1543
  if (reveal === "none") {
1572
- const parsed = _chunk2CV6NU32cjs.RedactedItemGroupSchema.safeParse(result);
1544
+ const parsed = _chunk2JT2WUQ2cjs.RedactedItemGroupSchema.safeParse(result);
1573
1545
  if (!parsed.success) {
1574
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1546
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1575
1547
  "item-group",
1576
1548
  parsed.error.issues.map((issue2) => ({
1577
1549
  path: issue2.path.map(String),
@@ -1585,13 +1557,13 @@ function redactItemGroup(group, options = {}) {
1585
1557
  }
1586
1558
  function assertRedactedItemGroup(data) {
1587
1559
  if (typeof data !== "object" || data === null) {
1588
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)("item-group", [
1560
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)("item-group", [
1589
1561
  { path: [], message: "Redacted item group must be an object.", code: "invalid_type" }
1590
1562
  ]);
1591
1563
  }
1592
1564
  const candidate = data;
1593
1565
  if (candidate.redacted !== true) {
1594
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)("item-group", [
1566
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)("item-group", [
1595
1567
  {
1596
1568
  path: ["redacted"],
1597
1569
  message: "Missing redacted marker \u2014 this payload is not a redactItemGroup() projection.",
@@ -1599,9 +1571,9 @@ function assertRedactedItemGroup(data) {
1599
1571
  }
1600
1572
  ]);
1601
1573
  }
1602
- const parsed = _chunk2CV6NU32cjs.RedactedItemGroupSchema.safeParse(candidate);
1574
+ const parsed = _chunk2JT2WUQ2cjs.RedactedItemGroupSchema.safeParse(candidate);
1603
1575
  if (!parsed.success) {
1604
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1576
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1605
1577
  "item-group",
1606
1578
  parsed.error.issues.map((issue2) => ({
1607
1579
  path: issue2.path.map(String),
@@ -1614,8 +1586,8 @@ function assertRedactedItemGroup(data) {
1614
1586
  try {
1615
1587
  assertRedacted(item);
1616
1588
  } catch (error) {
1617
- if (error instanceof _chunkD4TOPSHVcjs.ActivitySchemaError) {
1618
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1589
+ if (error instanceof _chunkDSDXL3JOcjs.ActivitySchemaError) {
1590
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1619
1591
  "item-group",
1620
1592
  error.errors.map((issue2) => ({
1621
1593
  ...issue2,
@@ -1660,7 +1632,7 @@ function composeTimelineScore(entryKey, items, policy) {
1660
1632
  `composeTimelineScore: no scored item belongs to entry "${entryKey}". Pass the video's slotKey (or its position in the sequence), and the items of the attempt that holds it.`
1661
1633
  );
1662
1634
  }
1663
- return _chunkWQVZPIN7cjs.composeAssessmentScore.call(void 0, [{ id: entryKey, weight: 1, items: own }], policy);
1635
+ return _chunkVSH7ECQLcjs.composeAssessmentScore.call(void 0, [{ id: entryKey, weight: 1, items: own }], policy);
1664
1636
  }
1665
1637
 
1666
1638
 
@@ -1795,46 +1767,5 @@ function composeTimelineScore(entryKey, items, policy) {
1795
1767
 
1796
1768
 
1797
1769
 
1798
-
1799
-
1800
-
1801
-
1802
-
1803
-
1804
-
1805
-
1806
-
1807
-
1808
-
1809
-
1810
-
1811
-
1812
-
1813
-
1814
-
1815
-
1816
-
1817
-
1818
-
1819
-
1820
-
1821
-
1822
-
1823
-
1824
-
1825
-
1826
-
1827
-
1828
-
1829
-
1830
-
1831
-
1832
-
1833
-
1834
-
1835
-
1836
-
1837
-
1838
-
1839
- exports.AI_EXPLANATION_TYPES = _chunkOPMY2MNScjs.AI_EXPLANATION_TYPES; exports.AI_HINT_TYPES = _chunkOPMY2MNScjs.AI_HINT_TYPES; exports.AI_TEXT_MAX_LENGTH = _chunkOPMY2MNScjs.AI_TEXT_MAX_LENGTH; exports.AI_WRITING_MAX_CORRECTIONS = _chunkOPMY2MNScjs.AI_WRITING_MAX_CORRECTIONS; exports.AI_WRITING_MAX_FIELD_LENGTH = _chunkOPMY2MNScjs.AI_WRITING_MAX_FIELD_LENGTH; exports.ActivitySchemaError = _chunkD4TOPSHVcjs.ActivitySchemaError; exports.AiPermissionsSchema = _chunkD4TOPSHVcjs.AiPermissionsSchema; exports.BlankConfigSchema = _chunkD4TOPSHVcjs.BlankConfigSchema; exports.DEFAULT_ITEM_SCORING_POLICY = _chunkWQVZPIN7cjs.DEFAULT_ITEM_SCORING_POLICY; exports.DEFAULT_PASS_THRESHOLD = _chunkWQVZPIN7cjs.DEFAULT_PASS_THRESHOLD; exports.DICTATION_MAX_ACCEPTED_TRANSCRIPTS = _chunkD4TOPSHVcjs.DICTATION_MAX_ACCEPTED_TRANSCRIPTS; exports.DICTATION_MAX_EQUIVALENCES = _chunkD4TOPSHVcjs.DICTATION_MAX_EQUIVALENCES; exports.DICTATION_MAX_EQUIVALENCE_LENGTH = _chunkD4TOPSHVcjs.DICTATION_MAX_EQUIVALENCE_LENGTH; exports.DICTATION_MAX_TEXT_LENGTH = _chunkD4TOPSHVcjs.DICTATION_MAX_TEXT_LENGTH; exports.DICTATION_MAX_TRANSCRIPT_LENGTH = _chunkD4TOPSHVcjs.DICTATION_MAX_TRANSCRIPT_LENGTH; exports.DeferredScoringError = _chunkD4TOPSHVcjs.DeferredScoringError; exports.DictationDataSchema = _chunkD4TOPSHVcjs.DictationDataSchema; exports.DictationEquivalenceSchema = _chunkD4TOPSHVcjs.DictationEquivalenceSchema; exports.DictationSlowMediaSchema = _chunkD4TOPSHVcjs.DictationSlowMediaSchema; exports.DictationToleranceSchema = _chunkD4TOPSHVcjs.DictationToleranceSchema; exports.FeedbackSchema = _chunkD4TOPSHVcjs.FeedbackSchema; exports.FillInTheBlanksDataSchema = _chunkD4TOPSHVcjs.FillInTheBlanksDataSchema; exports.GapSelectBankSchema = _chunkD4TOPSHVcjs.GapSelectBankSchema; exports.GapSelectChoiceSchema = _chunkD4TOPSHVcjs.GapSelectChoiceSchema; exports.GapSelectDataSchema = _chunkD4TOPSHVcjs.GapSelectDataSchema; exports.GapSelectGapSchema = _chunkD4TOPSHVcjs.GapSelectGapSchema; exports.INTERACTIVE_VIDEO_ITEM_TYPES = _chunk2CV6NU32cjs.INTERACTIVE_VIDEO_ITEM_TYPES; exports.ITEM_SCORING_MAX_RETRIES = _chunkWQVZPIN7cjs.ITEM_SCORING_MAX_RETRIES; exports.ItemGroupSchema = _chunk2CV6NU32cjs.ItemGroupSchema; exports.MediaPlaybackSchema = _chunkD4TOPSHVcjs.MediaPlaybackSchema; exports.MediaSchema = _chunkD4TOPSHVcjs.MediaSchema; exports.MediaTimelineSchema = _chunk2CV6NU32cjs.MediaTimelineSchema; exports.MediaTrackSchema = _chunkD4TOPSHVcjs.MediaTrackSchema; exports.MediaUrlSchema = _chunkD4TOPSHVcjs.MediaUrlSchema; exports.MultipleChoiceDataSchema = _chunkD4TOPSHVcjs.MultipleChoiceDataSchema; exports.MultipleChoiceOptionMediaSchema = _chunkD4TOPSHVcjs.MultipleChoiceOptionMediaSchema; exports.MultipleChoiceOptionSchema = _chunkD4TOPSHVcjs.MultipleChoiceOptionSchema; exports.NativeControlHintSchema = _chunkD4TOPSHVcjs.NativeControlHintSchema; exports.OPEN_DELIVERY_POLICY = OPEN_DELIVERY_POLICY; exports.READ_ALOUD_MAX_DIMENSION_WEIGHT = _chunkD4TOPSHVcjs.READ_ALOUD_MAX_DIMENSION_WEIGHT; exports.READ_ALOUD_MAX_REFERENCE_LENGTH = _chunkD4TOPSHVcjs.READ_ALOUD_MAX_REFERENCE_LENGTH; exports.READ_ALOUD_MAX_SECONDS = _chunkD4TOPSHVcjs.READ_ALOUD_MAX_SECONDS; exports.READ_ALOUD_MAX_TAKES = _chunkD4TOPSHVcjs.READ_ALOUD_MAX_TAKES; exports.ReadAloudDataSchema = _chunkD4TOPSHVcjs.ReadAloudDataSchema; exports.ReadAloudSlowMediaSchema = _chunkD4TOPSHVcjs.ReadAloudSlowMediaSchema; exports.RedactedBlankConfigSchema = _chunkD4TOPSHVcjs.RedactedBlankConfigSchema; exports.RedactedDictationDataSchema = _chunkD4TOPSHVcjs.RedactedDictationDataSchema; exports.RedactedDictationSlowMediaSchema = _chunkD4TOPSHVcjs.RedactedDictationSlowMediaSchema; exports.RedactedFillInTheBlanksDataSchema = _chunkD4TOPSHVcjs.RedactedFillInTheBlanksDataSchema; exports.RedactedGapSelectBankSchema = _chunkD4TOPSHVcjs.RedactedGapSelectBankSchema; exports.RedactedGapSelectChoiceSchema = _chunkD4TOPSHVcjs.RedactedGapSelectChoiceSchema; exports.RedactedGapSelectDataSchema = _chunkD4TOPSHVcjs.RedactedGapSelectDataSchema; exports.RedactedGapSelectGapSchema = _chunkD4TOPSHVcjs.RedactedGapSelectGapSchema; exports.RedactedItemGroupSchema = _chunk2CV6NU32cjs.RedactedItemGroupSchema; exports.RedactedMediaSchema = _chunkD4TOPSHVcjs.RedactedMediaSchema; exports.RedactedMultipleChoiceDataSchema = _chunkD4TOPSHVcjs.RedactedMultipleChoiceDataSchema; exports.RedactedMultipleChoiceOptionMediaSchema = _chunkD4TOPSHVcjs.RedactedMultipleChoiceOptionMediaSchema; exports.RedactedMultipleChoiceOptionSchema = _chunkD4TOPSHVcjs.RedactedMultipleChoiceOptionSchema; exports.RedactedReadAloudDataSchema = _chunkD4TOPSHVcjs.RedactedReadAloudDataSchema; exports.RedactedScoringError = _chunkD4TOPSHVcjs.RedactedScoringError; exports.RedactedStimulusSchema = _chunk2CV6NU32cjs.RedactedStimulusSchema; exports.RedactedWrittenResponseDataSchema = _chunkD4TOPSHVcjs.RedactedWrittenResponseDataSchema; exports.SPEECH_ASSESSMENT_MAX_WORDS = _chunkD4TOPSHVcjs.SPEECH_ASSESSMENT_MAX_WORDS; exports.StimulusSchema = _chunk2CV6NU32cjs.StimulusSchema; exports.TIMELINE_MAX_CHAPTERS = _chunk2CV6NU32cjs.TIMELINE_MAX_CHAPTERS; exports.TIMELINE_MAX_ITEMS = _chunk2CV6NU32cjs.TIMELINE_MAX_ITEMS; exports.TIMELINE_MAX_QUIZZES = _chunk2CV6NU32cjs.TIMELINE_MAX_QUIZZES; exports.TIMELINE_MAX_TITLE_LENGTH = _chunk2CV6NU32cjs.TIMELINE_MAX_TITLE_LENGTH; exports.TextMatchPolicySchema = _chunkD4TOPSHVcjs.TextMatchPolicySchema; exports.TimelineChapterSchema = _chunk2CV6NU32cjs.TimelineChapterSchema; exports.TimelineCueSchema = _chunk2CV6NU32cjs.TimelineCueSchema; exports.UnknownActivityTypeError = _chunkD4TOPSHVcjs.UnknownActivityTypeError; exports.WrittenResponseDataSchema = _chunkD4TOPSHVcjs.WrittenResponseDataSchema; exports.WrittenResponseRubricCriterionSchema = _chunkD4TOPSHVcjs.WrittenResponseRubricCriterionSchema; exports.WrittenResponseRubricSchema = _chunkD4TOPSHVcjs.WrittenResponseRubricSchema; exports.XAPIVerb = _chunkEOFWSGLUcjs.XAPIVerb; exports.XAPI_VERB_DISPLAY = _chunkEOFWSGLUcjs.XAPI_VERB_DISPLAY; exports.aiAllowedByContent = _chunkOPMY2MNScjs.aiAllowedByContent; exports.aiExplanationRequest = _chunkOPMY2MNScjs.aiExplanationRequest; exports.aiGradeOf = _chunkOPMY2MNScjs.aiGradeOf; exports.aiHintRequest = _chunkOPMY2MNScjs.aiHintRequest; exports.aiSupports = _chunkOPMY2MNScjs.aiSupports; exports.aiWritingFeedbackRequest = _chunkOPMY2MNScjs.aiWritingFeedbackRequest; exports.alignDictation = _chunkD4TOPSHVcjs.alignDictation; exports.alignReadAloud = _chunkWQVZPIN7cjs.alignReadAloud; exports.assertRedacted = assertRedacted; exports.assertRedactedItemGroup = assertRedactedItemGroup; exports.buildAiFacts = _chunkOPMY2MNScjs.buildAiFacts; exports.canonicalJson = canonicalJson; exports.checkAiExplanation = _chunkOPMY2MNScjs.checkAiExplanation; exports.checkAiHint = _chunkOPMY2MNScjs.checkAiHint; exports.checkAiWritingFeedback = _chunkOPMY2MNScjs.checkAiWritingFeedback; exports.classifyBand = _chunkWQVZPIN7cjs.classifyBand; exports.combineDeliveryPolicies = combineDeliveryPolicies; exports.composeAssessmentScore = _chunkWQVZPIN7cjs.composeAssessmentScore; exports.composeTimelineScore = composeTimelineScore; exports.computePassThreshold = _chunkWQVZPIN7cjs.computePassThreshold; exports.contentHash = contentHash; exports.countWords = _chunkD4TOPSHVcjs.countWords; exports.createDraft = createDraft; exports.createInteractiveVideoDraft = createInteractiveVideoDraft; exports.createItemGroupDraft = createItemGroupDraft; exports.defineActivityType = _chunkD4TOPSHVcjs.defineActivityType; exports.dictationJsonSchema = _chunk2CV6NU32cjs.dictationJsonSchema; exports.dictationReferenceWords = _chunkD4TOPSHVcjs.dictationReferenceWords; exports.dictationType = _chunkD4TOPSHVcjs.dictationType; exports.diffDictationChars = _chunkWQVZPIN7cjs.diffDictationChars; exports.diffResponses = diffResponses; exports.entryKeyOf = entryKeyOf; exports.evaluate = _chunkWQVZPIN7cjs.evaluate; exports.evaluateTries = _chunkWQVZPIN7cjs.evaluateTries; exports.fillInTheBlanksJsonSchema = _chunk2CV6NU32cjs.fillInTheBlanksJsonSchema; exports.fillInTheBlanksType = _chunkD4TOPSHVcjs.fillInTheBlanksType; exports.fingerprint = fingerprint; exports.flattenSequence = flattenSequence; exports.gapSelectJsonSchema = _chunk2CV6NU32cjs.gapSelectJsonSchema; exports.gapSelectType = _chunkD4TOPSHVcjs.gapSelectType; exports.getActivityTypeDescriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor; exports.gradeFromRubric = _chunkWQVZPIN7cjs.gradeFromRubric; exports.gradeReadAloud = _chunkWQVZPIN7cjs.gradeReadAloud; exports.gte = _chunkWQVZPIN7cjs.gte; exports.hasGrade = _chunkWQVZPIN7cjs.hasGrade; exports.hashSeed = hashSeed; exports.hintRevealsAnswer = _chunkOPMY2MNScjs.hintRevealsAnswer; exports.inspectWav = _chunkWQVZPIN7cjs.inspectWav; exports.isInteractiveVideoItemType = _chunk2CV6NU32cjs.isInteractiveVideoItemType; exports.isItemGroup = isItemGroup; exports.itemGroupJsonSchema = _chunk2CV6NU32cjs.itemGroupJsonSchema; exports.jsonSchemaFor = _chunk2CV6NU32cjs.jsonSchemaFor; exports.levenshteinDistance = _chunkD4TOPSHVcjs.levenshteinDistance; exports.matchText = _chunkD4TOPSHVcjs.matchText; exports.multipleChoiceJsonSchema = _chunk2CV6NU32cjs.multipleChoiceJsonSchema; exports.multipleChoiceType = _chunkD4TOPSHVcjs.multipleChoiceType; exports.outcomeFromGrade = _chunkWQVZPIN7cjs.outcomeFromGrade; exports.outcomeFromUnscorable = _chunkWQVZPIN7cjs.outcomeFromUnscorable; exports.planAttempt = planAttempt; exports.planMediaBudgets = planMediaBudgets; exports.readAiTextResult = _chunkOPMY2MNScjs.readAiTextResult; exports.readAloudJsonSchema = _chunk2CV6NU32cjs.readAloudJsonSchema; exports.readAloudType = _chunkD4TOPSHVcjs.readAloudType; exports.readMediaProgress = readMediaProgress; exports.redact = redact; exports.redactItemGroup = redactItemGroup; exports.registerActivityType = _chunkD4TOPSHVcjs.registerActivityType; exports.registeredActivityTypes = _chunkD4TOPSHVcjs.registeredActivityTypes; exports.resolveDeliveryPolicy = resolveDeliveryPolicy; exports.resolveItemScoringPolicy = _chunkWQVZPIN7cjs.resolveItemScoringPolicy; exports.resolvePlaybackPolicy = resolvePlaybackPolicy; exports.restoreAttemptState = restoreAttemptState; exports.restoreMediaPlayLedger = restoreMediaPlayLedger; exports.roundGrade = _chunkWQVZPIN7cjs.roundGrade; exports.score = _chunkWQVZPIN7cjs.score; exports.scoreTries = _chunkWQVZPIN7cjs.scoreTries; exports.scoredItemsFromPlan = scoredItemsFromPlan; exports.seededShuffle = seededShuffle; exports.serializeAttemptState = serializeAttemptState; exports.serializeMediaPlayLedger = serializeMediaPlayLedger; exports.slotMediaKey = slotMediaKey; exports.stimulusJsonSchema = _chunk2CV6NU32cjs.stimulusJsonSchema; exports.stimulusMediaKey = stimulusMediaKey; exports.validateActivity = _chunk2CV6NU32cjs.validateActivity; exports.validateDeliveryPolicy = validateDeliveryPolicy; exports.validateDraft = validateDraft; exports.validateItemGroup = _chunk2CV6NU32cjs.validateItemGroup; exports.validateItemGroupDraft = validateItemGroupDraft; exports.validateItemScoringPolicy = _chunkWQVZPIN7cjs.validateItemScoringPolicy; exports.validateSpeechAssessment = _chunkWQVZPIN7cjs.validateSpeechAssessment; exports.validateXAPIStatement = _chunkEOFWSGLUcjs.validateXAPIStatement; exports.verifyAttemptPlan = verifyAttemptPlan; exports.writtenResponseJsonSchema = _chunk2CV6NU32cjs.writtenResponseJsonSchema; exports.writtenResponseType = _chunkD4TOPSHVcjs.writtenResponseType; exports.xAPIBuilder = _chunkEOFWSGLUcjs.xAPIBuilder; exports.xapiDefinitionFor = _chunkEOFWSGLUcjs.xapiDefinitionFor;
1770
+ exports.AI_COACHING_MAX_TIP_LENGTH = _chunkLDFQUZIIcjs.AI_COACHING_MAX_TIP_LENGTH; exports.AI_COACHING_MAX_WORDS = _chunkLDFQUZIIcjs.AI_COACHING_MAX_WORDS; exports.AI_EXPLANATION_TYPES = _chunkLDFQUZIIcjs.AI_EXPLANATION_TYPES; exports.AI_HINT_TYPES = _chunkLDFQUZIIcjs.AI_HINT_TYPES; exports.AI_TEXT_MAX_LENGTH = _chunkLDFQUZIIcjs.AI_TEXT_MAX_LENGTH; exports.AI_WRITING_MAX_CORRECTIONS = _chunkLDFQUZIIcjs.AI_WRITING_MAX_CORRECTIONS; exports.AI_WRITING_MAX_FIELD_LENGTH = _chunkLDFQUZIIcjs.AI_WRITING_MAX_FIELD_LENGTH; exports.ActivitySchemaError = _chunkDSDXL3JOcjs.ActivitySchemaError; exports.DEFAULT_ITEM_SCORING_POLICY = _chunkVSH7ECQLcjs.DEFAULT_ITEM_SCORING_POLICY; exports.DEFAULT_PASS_THRESHOLD = _chunkVSH7ECQLcjs.DEFAULT_PASS_THRESHOLD; exports.DICTATION_MAX_ACCEPTED_TRANSCRIPTS = _chunkDSDXL3JOcjs.DICTATION_MAX_ACCEPTED_TRANSCRIPTS; exports.DICTATION_MAX_EQUIVALENCES = _chunkDSDXL3JOcjs.DICTATION_MAX_EQUIVALENCES; exports.DICTATION_MAX_EQUIVALENCE_LENGTH = _chunkDSDXL3JOcjs.DICTATION_MAX_EQUIVALENCE_LENGTH; exports.DICTATION_MAX_TEXT_LENGTH = _chunkDSDXL3JOcjs.DICTATION_MAX_TEXT_LENGTH; exports.DICTATION_MAX_TRANSCRIPT_LENGTH = _chunkDSDXL3JOcjs.DICTATION_MAX_TRANSCRIPT_LENGTH; exports.DeferredScoringError = _chunkDSDXL3JOcjs.DeferredScoringError; exports.INTERACTIVE_VIDEO_ITEM_TYPES = _chunk2JT2WUQ2cjs.INTERACTIVE_VIDEO_ITEM_TYPES; exports.ITEM_SCORING_MAX_RETRIES = _chunkVSH7ECQLcjs.ITEM_SCORING_MAX_RETRIES; exports.OPEN_DELIVERY_POLICY = OPEN_DELIVERY_POLICY; exports.READ_ALOUD_MAX_DIMENSION_WEIGHT = _chunkDSDXL3JOcjs.READ_ALOUD_MAX_DIMENSION_WEIGHT; exports.READ_ALOUD_MAX_REFERENCE_LENGTH = _chunkDSDXL3JOcjs.READ_ALOUD_MAX_REFERENCE_LENGTH; exports.READ_ALOUD_MAX_SECONDS = _chunkDSDXL3JOcjs.READ_ALOUD_MAX_SECONDS; exports.READ_ALOUD_MAX_TAKES = _chunkDSDXL3JOcjs.READ_ALOUD_MAX_TAKES; exports.RedactedScoringError = _chunkDSDXL3JOcjs.RedactedScoringError; exports.SPEECH_ASSESSMENT_MAX_WORDS = _chunkDSDXL3JOcjs.SPEECH_ASSESSMENT_MAX_WORDS; exports.TIMELINE_MAX_CHAPTERS = _chunk2JT2WUQ2cjs.TIMELINE_MAX_CHAPTERS; exports.TIMELINE_MAX_ITEMS = _chunk2JT2WUQ2cjs.TIMELINE_MAX_ITEMS; exports.TIMELINE_MAX_QUIZZES = _chunk2JT2WUQ2cjs.TIMELINE_MAX_QUIZZES; exports.TIMELINE_MAX_TITLE_LENGTH = _chunk2JT2WUQ2cjs.TIMELINE_MAX_TITLE_LENGTH; exports.UnknownActivityTypeError = _chunkDSDXL3JOcjs.UnknownActivityTypeError; exports.XAPIVerb = _chunkTJJFKKH2cjs.XAPIVerb; exports.XAPI_VERB_DISPLAY = _chunkTJJFKKH2cjs.XAPI_VERB_DISPLAY; exports.aiAllowedByContent = _chunkLDFQUZIIcjs.aiAllowedByContent; exports.aiCoachingRequest = _chunkLDFQUZIIcjs.aiCoachingRequest; exports.aiExplanationRequest = _chunkLDFQUZIIcjs.aiExplanationRequest; exports.aiGradeOf = _chunkLDFQUZIIcjs.aiGradeOf; exports.aiHintRequest = _chunkLDFQUZIIcjs.aiHintRequest; exports.aiSupports = _chunkLDFQUZIIcjs.aiSupports; exports.aiWritingFeedbackRequest = _chunkLDFQUZIIcjs.aiWritingFeedbackRequest; exports.alignDictation = _chunkDSDXL3JOcjs.alignDictation; exports.alignReadAloud = _chunkVSH7ECQLcjs.alignReadAloud; exports.assertRedacted = assertRedacted; exports.assertRedactedItemGroup = assertRedactedItemGroup; exports.buildAiFacts = _chunkLDFQUZIIcjs.buildAiFacts; exports.canonicalJson = canonicalJson; exports.checkAiCoaching = _chunkLDFQUZIIcjs.checkAiCoaching; exports.checkAiExplanation = _chunkLDFQUZIIcjs.checkAiExplanation; exports.checkAiHint = _chunkLDFQUZIIcjs.checkAiHint; exports.checkAiWritingFeedback = _chunkLDFQUZIIcjs.checkAiWritingFeedback; exports.classifyBand = _chunkVSH7ECQLcjs.classifyBand; exports.combineDeliveryPolicies = combineDeliveryPolicies; exports.composeAssessmentScore = _chunkVSH7ECQLcjs.composeAssessmentScore; exports.composeTimelineScore = composeTimelineScore; exports.computePassThreshold = _chunkVSH7ECQLcjs.computePassThreshold; exports.contentHash = contentHash; exports.countWords = _chunkDSDXL3JOcjs.countWords; exports.createDraft = createDraft; exports.createInteractiveVideoDraft = createInteractiveVideoDraft; exports.createItemGroupDraft = createItemGroupDraft; exports.defineActivityType = _chunkDSDXL3JOcjs.defineActivityType; exports.dictationJsonSchema = _chunk2JT2WUQ2cjs.dictationJsonSchema; exports.dictationReferenceWords = _chunkDSDXL3JOcjs.dictationReferenceWords; exports.dictationType = _chunkDSDXL3JOcjs.dictationType; exports.diffDictationChars = _chunkVSH7ECQLcjs.diffDictationChars; exports.diffResponses = diffResponses; exports.entryKeyOf = entryKeyOf; exports.evaluate = _chunkVSH7ECQLcjs.evaluate; exports.evaluateTries = _chunkVSH7ECQLcjs.evaluateTries; exports.fillInTheBlanksJsonSchema = _chunk2JT2WUQ2cjs.fillInTheBlanksJsonSchema; exports.fillInTheBlanksType = _chunkDSDXL3JOcjs.fillInTheBlanksType; exports.fingerprint = fingerprint; exports.flattenSequence = flattenSequence; exports.gapSelectJsonSchema = _chunk2JT2WUQ2cjs.gapSelectJsonSchema; exports.gapSelectType = _chunkDSDXL3JOcjs.gapSelectType; exports.getActivityTypeDescriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor; exports.gradeFromRubric = _chunkVSH7ECQLcjs.gradeFromRubric; exports.gradeReadAloud = _chunkVSH7ECQLcjs.gradeReadAloud; exports.gte = _chunkVSH7ECQLcjs.gte; exports.hasGrade = _chunkVSH7ECQLcjs.hasGrade; exports.hashSeed = hashSeed; exports.hintRevealsAnswer = _chunkLDFQUZIIcjs.hintRevealsAnswer; exports.inspectWav = _chunkVSH7ECQLcjs.inspectWav; exports.isInteractiveVideoItemType = _chunk2JT2WUQ2cjs.isInteractiveVideoItemType; exports.isItemGroup = isItemGroup; exports.itemGroupJsonSchema = _chunk2JT2WUQ2cjs.itemGroupJsonSchema; exports.jsonSchemaFor = _chunk2JT2WUQ2cjs.jsonSchemaFor; exports.levenshteinDistance = _chunkDSDXL3JOcjs.levenshteinDistance; exports.matchText = _chunkDSDXL3JOcjs.matchText; exports.multipleChoiceJsonSchema = _chunk2JT2WUQ2cjs.multipleChoiceJsonSchema; exports.multipleChoiceType = _chunkDSDXL3JOcjs.multipleChoiceType; exports.outcomeFromGrade = _chunkVSH7ECQLcjs.outcomeFromGrade; exports.outcomeFromUnscorable = _chunkVSH7ECQLcjs.outcomeFromUnscorable; exports.planAttempt = planAttempt; exports.planMediaBudgets = planMediaBudgets; exports.readAiTextResult = _chunkLDFQUZIIcjs.readAiTextResult; exports.readAloudJsonSchema = _chunk2JT2WUQ2cjs.readAloudJsonSchema; exports.readAloudType = _chunkDSDXL3JOcjs.readAloudType; exports.readMediaProgress = readMediaProgress; exports.redact = redact; exports.redactItemGroup = redactItemGroup; exports.registerActivityType = _chunkDSDXL3JOcjs.registerActivityType; exports.registeredActivityTypes = _chunkDSDXL3JOcjs.registeredActivityTypes; exports.resolveDeliveryPolicy = resolveDeliveryPolicy; exports.resolveItemScoringPolicy = _chunkVSH7ECQLcjs.resolveItemScoringPolicy; exports.resolvePlaybackPolicy = resolvePlaybackPolicy; exports.restoreAttemptState = restoreAttemptState; exports.restoreMediaPlayLedger = restoreMediaPlayLedger; exports.roundGrade = _chunkVSH7ECQLcjs.roundGrade; exports.score = _chunkVSH7ECQLcjs.score; exports.scoreTries = _chunkVSH7ECQLcjs.scoreTries; exports.scoredItemsFromPlan = scoredItemsFromPlan; exports.seededShuffle = seededShuffle; exports.serializeAttemptState = serializeAttemptState; exports.serializeMediaPlayLedger = serializeMediaPlayLedger; exports.slotMediaKey = slotMediaKey; exports.stimulusJsonSchema = _chunk2JT2WUQ2cjs.stimulusJsonSchema; exports.stimulusMediaKey = stimulusMediaKey; exports.validateActivity = _chunk2JT2WUQ2cjs.validateActivity; exports.validateDeliveryPolicy = validateDeliveryPolicy; exports.validateDraft = validateDraft; exports.validateItemGroup = _chunk2JT2WUQ2cjs.validateItemGroup; exports.validateItemGroupDraft = validateItemGroupDraft; exports.validateItemScoringPolicy = _chunkVSH7ECQLcjs.validateItemScoringPolicy; exports.validateMedia = _chunk2JT2WUQ2cjs.validateMedia; exports.validateOptionMedia = _chunk2JT2WUQ2cjs.validateOptionMedia; exports.validateSpeechAssessment = _chunkVSH7ECQLcjs.validateSpeechAssessment; exports.validateXAPIStatement = _chunkTJJFKKH2cjs.validateXAPIStatement; exports.verifyAttemptPlan = verifyAttemptPlan; exports.writtenResponseJsonSchema = _chunk2JT2WUQ2cjs.writtenResponseJsonSchema; exports.writtenResponseType = _chunkDSDXL3JOcjs.writtenResponseType; exports.xAPIBuilder = _chunkTJJFKKH2cjs.xAPIBuilder; exports.xapiDefinitionFor = _chunkTJJFKKH2cjs.xapiDefinitionFor;
1840
1771
  //# sourceMappingURL=index.cjs.map