@intellectif/lk-core 0.21.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +6 -5
  3. package/dist/{activity-xhGV-Aeh.d.cts → activity-DgpBJeBc.d.cts} +137 -22
  4. package/dist/{activity-xhGV-Aeh.d.ts → activity-DgpBJeBc.d.ts} +137 -22
  5. package/dist/ai-check.cjs +104 -16
  6. package/dist/ai-check.cjs.map +1 -1
  7. package/dist/ai-check.d.cts +9 -5
  8. package/dist/ai-check.d.ts +9 -5
  9. package/dist/ai-check.js +103 -15
  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-IHOEP4EB.js → chunk-RCZCP5OE.js} +311 -25
  20. package/dist/chunk-RCZCP5OE.js.map +1 -0
  21. package/dist/{chunk-X5DAXBJI.js → chunk-SJVRUPJT.js} +2 -2
  22. package/dist/{chunk-EOFWSGLU.cjs → chunk-TJJFKKH2.cjs} +4 -4
  23. package/dist/{chunk-EOFWSGLU.cjs.map → chunk-TJJFKKH2.cjs.map} +1 -1
  24. package/dist/{chunk-WQVZPIN7.cjs → chunk-VSH7ECQL.cjs} +44 -45
  25. package/dist/chunk-VSH7ECQL.cjs.map +1 -0
  26. package/dist/{chunk-NRTP7WCW.cjs → chunk-W5KB3DNT.cjs} +315 -29
  27. package/dist/chunk-W5KB3DNT.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-BVNeSCWC.d.ts +548 -0
  31. package/dist/index-BlOLlwOi.d.cts +548 -0
  32. package/dist/index.cjs +129 -198
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +175 -18
  35. package/dist/index.d.ts +175 -18
  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 +2 -2
  45. package/dist/scoring.d.ts +2 -2
  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-D3GP5MET.js.map +0 -1
  58. package/dist/chunk-D4TOPSHV.cjs.map +0 -1
  59. package/dist/chunk-IHOEP4EB.js.map +0 -1
  60. package/dist/chunk-NRTP7WCW.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-BuD8Hc8o.d.cts +0 -2303
  65. package/dist/index-DnJ_PI4d.d.ts +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
 
@@ -45,8 +45,8 @@ var _chunk2CV6NU32cjs = require('./chunk-2CV6NU32.cjs');
45
45
 
46
46
 
47
47
 
48
- var _chunkNRTP7WCWcjs = require('./chunk-NRTP7WCW.cjs');
49
48
 
49
+ var _chunkW5KB3DNTcjs = require('./chunk-W5KB3DNT.cjs');
50
50
 
51
51
 
52
52
 
@@ -70,8 +70,8 @@ var _chunkNRTP7WCWcjs = require('./chunk-NRTP7WCW.cjs');
70
70
 
71
71
 
72
72
 
73
- var _chunkWQVZPIN7cjs = require('./chunk-WQVZPIN7.cjs');
74
73
 
74
+ var _chunkVSH7ECQLcjs = require('./chunk-VSH7ECQL.cjs');
75
75
 
76
76
 
77
77
 
@@ -118,45 +118,7 @@ var _chunkWQVZPIN7cjs = require('./chunk-WQVZPIN7.cjs');
118
118
 
119
119
 
120
120
 
121
-
122
-
123
-
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
- var _chunkD4TOPSHVcjs = require('./chunk-D4TOPSHV.cjs');
121
+ var _chunkDSDXL3JOcjs = require('./chunk-DSDXL3JO.cjs');
160
122
 
161
123
  // src/content-hash.ts
162
124
  function canonicalJson(value, seen = /* @__PURE__ */ new Set()) {
@@ -719,14 +681,14 @@ function frozenScoring(policy) {
719
681
  if (policy === void 0 || policy === null) {
720
682
  return void 0;
721
683
  }
722
- const checked = _chunkWQVZPIN7cjs.validateItemScoringPolicy.call(void 0, policy);
684
+ const checked = _chunkVSH7ECQLcjs.validateItemScoringPolicy.call(void 0, policy);
723
685
  if (!checked.success) {
724
686
  const first = checked.issues[0];
725
687
  throw new Error(
726
688
  `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)` : "")
727
689
  );
728
690
  }
729
- return _chunkWQVZPIN7cjs.resolveItemScoringPolicy.call(void 0, checked.data);
691
+ return _chunkVSH7ECQLcjs.resolveItemScoringPolicy.call(void 0, checked.data);
730
692
  }
731
693
  function missingOutcome(slot, policy) {
732
694
  if (typeof policy === "function") {
@@ -880,22 +842,22 @@ function createInteractiveVideoDraft(context) {
880
842
  };
881
843
  }
882
844
  function validateItemGroupDraft(draft) {
883
- return _chunkD4TOPSHVcjs.withValidationScope.call(void 0, () => validateItemGroupDraftInScope(draft));
845
+ return _chunkDSDXL3JOcjs.withValidationScope.call(void 0, () => validateItemGroupDraftInScope(draft));
884
846
  }
885
847
  function validateItemGroupDraftInScope(draft) {
886
848
  const issues = [];
887
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, draft)) {
849
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, draft)) {
888
850
  issues.push(
889
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_not_an_object", [], "A group must be an object with a stimulus and its items.")
851
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_not_an_object", [], "A group must be an object with a stimulus and its items.")
890
852
  );
891
853
  return { status: "invalid", issues };
892
854
  }
893
855
  issues.push(...checkGroupIdentity(draft));
894
- if (_chunkD4TOPSHVcjs.isRecord.call(void 0, draft.stimulus)) {
856
+ if (_chunkDSDXL3JOcjs.isRecord.call(void 0, draft.stimulus)) {
895
857
  issues.push(...checkStimulus(draft.stimulus));
896
- } else if (_chunkD4TOPSHVcjs.isUnset.call(void 0, draft.stimulus)) {
858
+ } else if (_chunkDSDXL3JOcjs.isUnset.call(void 0, draft.stimulus)) {
897
859
  issues.push(
898
- _chunkD4TOPSHVcjs.issue.call(void 0,
860
+ _chunkDSDXL3JOcjs.issue.call(void 0,
899
861
  "ig_stimulus_required",
900
862
  ["stimulus"],
901
863
  "Add the passage, recording or image the questions are about."
@@ -906,26 +868,26 @@ function validateItemGroupDraftInScope(draft) {
906
868
  if (draft.timeline !== void 0 && draft.timeline !== null) {
907
869
  issues.push(...checkTimeline(draft));
908
870
  }
909
- const captions = _chunkD4TOPSHVcjs.groupCaptionsField.call(void 0, draft, (captionsUrl) => !_chunkD4TOPSHVcjs.isUnwritten.call(void 0, captionsUrl));
871
+ const captions = _chunkDSDXL3JOcjs.groupCaptionsField.call(void 0, draft, (captionsUrl) => !_chunkDSDXL3JOcjs.isUnwritten.call(void 0, captionsUrl));
910
872
  if (captions !== void 0) {
911
873
  issues.push(
912
- _chunkD4TOPSHVcjs.issue.call(void 0,
874
+ _chunkDSDXL3JOcjs.issue.call(void 0,
913
875
  "dc_captions_not_allowed",
914
876
  ["stimulus", "media", captions],
915
- _chunkD4TOPSHVcjs.GROUP_CAPTIONS_REVEAL_DICTATION
877
+ _chunkDSDXL3JOcjs.GROUP_CAPTIONS_REVEAL_DICTATION
916
878
  )
917
879
  );
918
880
  }
919
- const parsed = _chunk2CV6NU32cjs.ItemGroupSchema.safeParse(draft, { reportInput: true });
881
+ const parsed = _chunk2JT2WUQ2cjs.ItemGroupSchema.safeParse(draft, { reportInput: true });
920
882
  if (!parsed.success) {
921
883
  for (const schemaIssue of parsed.error.issues) {
922
884
  const path = schemaIssue.path.map(String);
923
- if (issues.some((known) => _chunkD4TOPSHVcjs.covers.call(void 0, known.path, path))) {
885
+ if (issues.some((known) => _chunkDSDXL3JOcjs.covers.call(void 0, known.path, path))) {
924
886
  continue;
925
887
  }
926
- if (path.length > 0 && _chunkD4TOPSHVcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
888
+ if (path.length > 0 && _chunkDSDXL3JOcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
927
889
  issues.push(
928
- _chunkD4TOPSHVcjs.issue.call(void 0,
890
+ _chunkDSDXL3JOcjs.issue.call(void 0,
929
891
  "null_not_allowed",
930
892
  path,
931
893
  "This field cannot be null. Leave it out if it is optional, or give it a value."
@@ -941,7 +903,7 @@ function validateItemGroupDraftInScope(draft) {
941
903
  });
942
904
  }
943
905
  }
944
- const stored = _chunk2CV6NU32cjs.validateItemGroup.call(void 0, draft);
906
+ const stored = _chunk2JT2WUQ2cjs.validateItemGroup.call(void 0, draft);
945
907
  if (issues.length === 0 && stored.success) {
946
908
  return { status: "complete", data: stored.data, issues };
947
909
  }
@@ -956,21 +918,21 @@ function validateItemGroupDraftInScope(draft) {
956
918
  function checkTimeline(draft) {
957
919
  const issues = [];
958
920
  const timeline = draft.timeline;
959
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, timeline)) {
921
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, timeline)) {
960
922
  return issues;
961
923
  }
962
- const stimulus = _chunkD4TOPSHVcjs.isRecord.call(void 0, draft.stimulus) ? draft.stimulus : void 0;
963
- if (stimulus !== void 0 && !_chunkD4TOPSHVcjs.isUnwritten.call(void 0, stimulus.kind) && stimulus.kind !== "video") {
924
+ const stimulus = _chunkDSDXL3JOcjs.isRecord.call(void 0, draft.stimulus) ? draft.stimulus : void 0;
925
+ if (stimulus !== void 0 && !_chunkDSDXL3JOcjs.isUnwritten.call(void 0, stimulus.kind) && stimulus.kind !== "video") {
964
926
  issues.push(
965
- _chunkD4TOPSHVcjs.issue.call(void 0,
927
+ _chunkDSDXL3JOcjs.issue.call(void 0,
966
928
  "ig_timeline_stimulus_kind",
967
929
  ["stimulus", "kind"],
968
930
  "An interactive video needs a video: quizzes open at moments of it."
969
931
  )
970
932
  );
971
- } else if (stimulus !== void 0 && _chunkD4TOPSHVcjs.isRecord.call(void 0, stimulus.media) && !_chunkD4TOPSHVcjs.isUnwritten.call(void 0, stimulus.media.type) && stimulus.media.type !== "video") {
933
+ } else if (stimulus !== void 0 && _chunkDSDXL3JOcjs.isRecord.call(void 0, stimulus.media) && !_chunkDSDXL3JOcjs.isUnwritten.call(void 0, stimulus.media.type) && stimulus.media.type !== "video") {
972
934
  issues.push(
973
- _chunkD4TOPSHVcjs.issue.call(void 0,
935
+ _chunkDSDXL3JOcjs.issue.call(void 0,
974
936
  "ig_timeline_stimulus_kind",
975
937
  ["stimulus", "media", "type"],
976
938
  "Upload a video file. An embedded player from another site cannot be paused when a quiz opens."
@@ -979,7 +941,7 @@ function checkTimeline(draft) {
979
941
  }
980
942
  if (draft.shuffle === "within-group") {
981
943
  issues.push(
982
- _chunkD4TOPSHVcjs.issue.call(void 0,
944
+ _chunkDSDXL3JOcjs.issue.call(void 0,
983
945
  "ig_timeline_shuffle",
984
946
  ["shuffle"],
985
947
  "The questions of an interactive video appear in the order their quizzes open, so they cannot be shuffled."
@@ -989,25 +951,25 @@ function checkTimeline(draft) {
989
951
  const items = Array.isArray(draft.items) ? draft.items : [];
990
952
  const itemIndexById = /* @__PURE__ */ new Map();
991
953
  items.forEach((item, index) => {
992
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, item)) {
954
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, item)) {
993
955
  return;
994
956
  }
995
957
  if (typeof item.id === "string" && item.id !== "") {
996
958
  itemIndexById.set(item.id, index);
997
959
  }
998
960
  const type = item.type;
999
- if (typeof type === "string" && type !== "" && type !== "item-group" && !_chunk2CV6NU32cjs.isInteractiveVideoItemType.call(void 0, type) && _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type) !== void 0) {
961
+ if (typeof type === "string" && type !== "" && type !== "item-group" && !_chunk2JT2WUQ2cjs.isInteractiveVideoItemType.call(void 0, type) && _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type) !== void 0) {
1000
962
  issues.push(
1001
- _chunkD4TOPSHVcjs.issue.call(void 0,
963
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1002
964
  "ig_timeline_item_type",
1003
965
  ["items", index, "type"],
1004
- `An interactive video can hold ${_chunk2CV6NU32cjs.INTERACTIVE_VIDEO_ITEM_TYPES.join(", ")} questions only.`
966
+ `An interactive video can hold ${_chunk2JT2WUQ2cjs.INTERACTIVE_VIDEO_ITEM_TYPES.join(", ")} questions only.`
1005
967
  )
1006
968
  );
1007
969
  }
1008
- if (type === "dictation" && _chunkD4TOPSHVcjs.isUnset.call(void 0, item.media)) {
970
+ if (type === "dictation" && _chunkDSDXL3JOcjs.isUnset.call(void 0, item.media)) {
1009
971
  issues.push(
1010
- _chunkD4TOPSHVcjs.issue.call(void 0,
972
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1011
973
  "ig_timeline_dictation_media",
1012
974
  ["items", index, "media"],
1013
975
  "Add the recording this dictation plays: inside a video it cannot play the video."
@@ -1019,7 +981,7 @@ function checkTimeline(draft) {
1019
981
  const quizIds = /* @__PURE__ */ new Set();
1020
982
  const placed = /* @__PURE__ */ new Set();
1021
983
  cues.forEach((cue, cueIndex) => {
1022
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, cue)) {
984
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, cue)) {
1023
985
  return;
1024
986
  }
1025
987
  const at = (field, ...rest) => [
@@ -1029,19 +991,19 @@ function checkTimeline(draft) {
1029
991
  field,
1030
992
  ...rest
1031
993
  ];
1032
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, cue.id)) {
1033
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "ig_timeline_quiz_id_required", at("id"), "This quiz has no id."));
994
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, cue.id)) {
995
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "ig_timeline_quiz_id_required", at("id"), "This quiz has no id."));
1034
996
  } else if (typeof cue.id === "string") {
1035
997
  if (quizIds.has(cue.id)) {
1036
998
  issues.push(
1037
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_timeline_quiz_id_duplicate", at("id"), `Two quizzes share the id "${cue.id}".`)
999
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_timeline_quiz_id_duplicate", at("id"), `Two quizzes share the id "${cue.id}".`)
1038
1000
  );
1039
1001
  }
1040
1002
  quizIds.add(cue.id);
1041
1003
  }
1042
- if (_chunkD4TOPSHVcjs.isUnset.call(void 0, cue.at)) {
1004
+ if (_chunkDSDXL3JOcjs.isUnset.call(void 0, cue.at)) {
1043
1005
  issues.push(
1044
- _chunkD4TOPSHVcjs.issue.call(void 0,
1006
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1045
1007
  "ig_timeline_quiz_time_required",
1046
1008
  at("at"),
1047
1009
  "Choose when in the video this quiz opens."
@@ -1049,16 +1011,16 @@ function checkTimeline(draft) {
1049
1011
  );
1050
1012
  } else if (typeof cue.at !== "number" || !Number.isFinite(cue.at) || cue.at < 0) {
1051
1013
  issues.push(
1052
- _chunkD4TOPSHVcjs.issue.call(void 0,
1014
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1053
1015
  "ig_timeline_quiz_time_invalid",
1054
1016
  at("at"),
1055
1017
  "A quiz opens at a number of seconds, 0 or more."
1056
1018
  )
1057
1019
  );
1058
1020
  }
1059
- if (_chunkD4TOPSHVcjs.isUnset.call(void 0, cue.itemIds) || Array.isArray(cue.itemIds) && cue.itemIds.length === 0) {
1021
+ if (_chunkDSDXL3JOcjs.isUnset.call(void 0, cue.itemIds) || Array.isArray(cue.itemIds) && cue.itemIds.length === 0) {
1060
1022
  issues.push(
1061
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_timeline_quiz_empty", at("itemIds"), "Add at least one question to this quiz.")
1023
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_timeline_quiz_empty", at("itemIds"), "Add at least one question to this quiz.")
1062
1024
  );
1063
1025
  return;
1064
1026
  }
@@ -1071,7 +1033,7 @@ function checkTimeline(draft) {
1071
1033
  }
1072
1034
  if (!itemIndexById.has(itemId)) {
1073
1035
  issues.push(
1074
- _chunkD4TOPSHVcjs.issue.call(void 0,
1036
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1075
1037
  "ig_timeline_quiz_unknown_item",
1076
1038
  at("itemIds", position),
1077
1039
  `This quiz names a question that is not in the video ("${itemId}").`
@@ -1079,7 +1041,7 @@ function checkTimeline(draft) {
1079
1041
  );
1080
1042
  } else if (placed.has(itemId)) {
1081
1043
  issues.push(
1082
- _chunkD4TOPSHVcjs.issue.call(void 0,
1044
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1083
1045
  "ig_timeline_item_duplicate",
1084
1046
  at("itemIds", position),
1085
1047
  "This question is already in a quiz: each question belongs to one quiz."
@@ -1092,7 +1054,7 @@ function checkTimeline(draft) {
1092
1054
  for (const [itemId, index] of itemIndexById) {
1093
1055
  if (!placed.has(itemId)) {
1094
1056
  issues.push(
1095
- _chunkD4TOPSHVcjs.issue.call(void 0,
1057
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1096
1058
  "ig_timeline_item_unplaced",
1097
1059
  ["items", index],
1098
1060
  "Add this question to a quiz, or the video never shows it."
@@ -1103,12 +1065,12 @@ function checkTimeline(draft) {
1103
1065
  const chapters = Array.isArray(timeline.chapters) ? timeline.chapters : [];
1104
1066
  let previousAt;
1105
1067
  chapters.forEach((chapter, index) => {
1106
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, chapter)) {
1068
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, chapter)) {
1107
1069
  return;
1108
1070
  }
1109
- if (_chunkD4TOPSHVcjs.isUnwritten.call(void 0, chapter.title)) {
1071
+ if (_chunkDSDXL3JOcjs.isUnwritten.call(void 0, chapter.title)) {
1110
1072
  issues.push(
1111
- _chunkD4TOPSHVcjs.issue.call(void 0,
1073
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1112
1074
  "ig_timeline_chapter_title",
1113
1075
  ["timeline", "chapters", index, "title"],
1114
1076
  "Give this chapter a title."
@@ -1118,7 +1080,7 @@ function checkTimeline(draft) {
1118
1080
  if (typeof chapter.at === "number" && Number.isFinite(chapter.at)) {
1119
1081
  if (previousAt !== void 0 && chapter.at <= previousAt) {
1120
1082
  issues.push(
1121
- _chunkD4TOPSHVcjs.issue.call(void 0,
1083
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1122
1084
  "ig_timeline_chapter_order",
1123
1085
  ["timeline", "chapters", index, "at"],
1124
1086
  "Chapters must start in order, each after the one before it."
@@ -1134,7 +1096,7 @@ function checkGroupIdentity(draft) {
1134
1096
  const issues = [];
1135
1097
  if (draft.schemaVersion !== "1.0") {
1136
1098
  issues.push(
1137
- _chunkD4TOPSHVcjs.issue.call(void 0,
1099
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1138
1100
  "schema_version_invalid",
1139
1101
  ["schemaVersion"],
1140
1102
  'The draft must have schemaVersion "1.0". A draft from createItemGroupDraft has it.'
@@ -1142,14 +1104,14 @@ function checkGroupIdentity(draft) {
1142
1104
  );
1143
1105
  }
1144
1106
  if (draft.type !== "item-group") {
1145
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "type_mismatch", ["type"], `The draft's type must be "item-group".`));
1107
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "type_mismatch", ["type"], `The draft's type must be "item-group".`));
1146
1108
  }
1147
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, draft.id)) {
1148
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "id_required", ["id"], "The group has no id."));
1109
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, draft.id)) {
1110
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "id_required", ["id"], "The group has no id."));
1149
1111
  }
1150
- if (!_chunkD4TOPSHVcjs.isUnset.call(void 0, draft.shuffle) && draft.shuffle !== "none" && draft.shuffle !== "within-group") {
1112
+ if (!_chunkDSDXL3JOcjs.isUnset.call(void 0, draft.shuffle) && draft.shuffle !== "none" && draft.shuffle !== "within-group") {
1151
1113
  issues.push(
1152
- _chunkD4TOPSHVcjs.issue.call(void 0,
1114
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1153
1115
  "ig_shuffle_invalid",
1154
1116
  ["shuffle"],
1155
1117
  'Shuffling is either "none" or "within-group". Leave it out to keep the authored order.'
@@ -1168,13 +1130,13 @@ var MEDIA_FOR_KIND = {
1168
1130
  function checkStimulus(stimulus) {
1169
1131
  const issues = [];
1170
1132
  const at = (...rest) => ["stimulus", ...rest];
1171
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, stimulus.id)) {
1172
- issues.push(_chunkD4TOPSHVcjs.issue.call(void 0, "ig_stimulus_id_required", at("id"), "The stimulus has no id."));
1133
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, stimulus.id)) {
1134
+ issues.push(_chunkDSDXL3JOcjs.issue.call(void 0, "ig_stimulus_id_required", at("id"), "The stimulus has no id."));
1173
1135
  }
1174
1136
  const kind = stimulus.kind;
1175
- if (_chunkD4TOPSHVcjs.isUnwritten.call(void 0, kind)) {
1137
+ if (_chunkDSDXL3JOcjs.isUnwritten.call(void 0, kind)) {
1176
1138
  issues.push(
1177
- _chunkD4TOPSHVcjs.issue.call(void 0,
1139
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1178
1140
  "ig_stimulus_kind_required",
1179
1141
  at("kind"),
1180
1142
  "Choose what the questions are about: a text, a recording, a video, an image, or a mix."
@@ -1183,71 +1145,71 @@ function checkStimulus(stimulus) {
1183
1145
  } else if (typeof kind !== "string" || !KINDS.has(kind)) {
1184
1146
  if (typeof kind === "string") {
1185
1147
  issues.push(
1186
- _chunkD4TOPSHVcjs.issue.call(void 0,
1148
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1187
1149
  "ig_stimulus_kind_invalid",
1188
1150
  at("kind"),
1189
1151
  `"${kind}" is not a stimulus kind. Use text, audio, video, image or mixed.`
1190
1152
  )
1191
1153
  );
1192
1154
  }
1193
- if (_chunkD4TOPSHVcjs.isRecord.call(void 0, stimulus.media)) {
1194
- issues.push(..._chunkD4TOPSHVcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1155
+ if (_chunkDSDXL3JOcjs.isRecord.call(void 0, stimulus.media)) {
1156
+ issues.push(..._chunkDSDXL3JOcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1195
1157
  }
1196
1158
  return issues;
1197
1159
  }
1198
1160
  const hasBody = typeof stimulus.body === "string" && stimulus.body.trim() !== "";
1199
- const htmlPresent = !_chunkD4TOPSHVcjs.isUnset.call(void 0, stimulus.bodyHtml);
1161
+ const htmlPresent = !_chunkDSDXL3JOcjs.isUnset.call(void 0, stimulus.bodyHtml);
1200
1162
  if (!hasBody && (kind === "text" || kind === "mixed" || htmlPresent)) {
1201
1163
  issues.push(
1202
- _chunkD4TOPSHVcjs.issue.call(void 0,
1164
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1203
1165
  "ig_stimulus_body_required",
1204
1166
  at("body"),
1205
- _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."
1167
+ _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."
1206
1168
  )
1207
1169
  );
1208
1170
  }
1209
- if (kind !== "text" && _chunkD4TOPSHVcjs.isUnset.call(void 0, stimulus.media)) {
1171
+ if (kind !== "text" && _chunkDSDXL3JOcjs.isUnset.call(void 0, stimulus.media)) {
1210
1172
  issues.push(
1211
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_stimulus_media_required", at("media"), "Add the recording, video or image.")
1173
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_stimulus_media_required", at("media"), "Add the recording, video or image.")
1212
1174
  );
1213
- } else if (_chunkD4TOPSHVcjs.isRecord.call(void 0, stimulus.media)) {
1175
+ } else if (_chunkDSDXL3JOcjs.isRecord.call(void 0, stimulus.media)) {
1214
1176
  const allowed = MEDIA_FOR_KIND[kind];
1215
1177
  const mediaType = stimulus.media.type;
1216
1178
  if (allowed !== void 0 && typeof mediaType === "string" && !allowed.includes(mediaType)) {
1217
1179
  issues.push(
1218
- _chunkD4TOPSHVcjs.issue.call(void 0,
1180
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1219
1181
  "ig_stimulus_media_kind",
1220
1182
  at("media", "type"),
1221
1183
  `A "${kind}" stimulus cannot carry ${mediaType} media. Use ${allowed.join(" or ")}.`
1222
1184
  )
1223
1185
  );
1224
1186
  }
1225
- issues.push(..._chunkD4TOPSHVcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1187
+ issues.push(..._chunkDSDXL3JOcjs.checkMedia.call(void 0, stimulus.media, at("media")));
1226
1188
  }
1227
1189
  return issues;
1228
1190
  }
1229
1191
  function checkItems(draft) {
1230
1192
  const issues = [];
1231
- const items = _chunkD4TOPSHVcjs.isUnset.call(void 0, draft.items) ? [] : draft.items;
1193
+ const items = _chunkDSDXL3JOcjs.isUnset.call(void 0, draft.items) ? [] : draft.items;
1232
1194
  if (!Array.isArray(items)) {
1233
1195
  return issues;
1234
1196
  }
1235
1197
  if (items.length === 0) {
1236
1198
  issues.push(
1237
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_items_required", ["items"], "Add at least one question about this material.")
1199
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_items_required", ["items"], "Add at least one question about this material.")
1238
1200
  );
1239
1201
  return issues;
1240
1202
  }
1241
1203
  const seen = /* @__PURE__ */ new Set();
1242
1204
  const repeated = /* @__PURE__ */ new Set();
1243
1205
  for (const [index, item] of items.entries()) {
1244
- if (!_chunkD4TOPSHVcjs.isRecord.call(void 0, item)) {
1206
+ if (!_chunkDSDXL3JOcjs.isRecord.call(void 0, item)) {
1245
1207
  continue;
1246
1208
  }
1247
1209
  const ordinal = index + 1;
1248
- if (_chunkD4TOPSHVcjs.isMissingId.call(void 0, item.id)) {
1210
+ if (_chunkDSDXL3JOcjs.isMissingId.call(void 0, item.id)) {
1249
1211
  issues.push(
1250
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_item_id_required", ["items", index, "id"], `Question ${ordinal} has no id.`)
1212
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_item_id_required", ["items", index, "id"], `Question ${ordinal} has no id.`)
1251
1213
  );
1252
1214
  } else if (typeof item.id === "string") {
1253
1215
  if (seen.has(item.id)) {
@@ -1257,7 +1219,7 @@ function checkItems(draft) {
1257
1219
  }
1258
1220
  if (item.type === "item-group") {
1259
1221
  issues.push(
1260
- _chunkD4TOPSHVcjs.issue.call(void 0,
1222
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1261
1223
  "ig_item_nested_group",
1262
1224
  ["items", index, "type"],
1263
1225
  "Groups do not nest: every item must be an activity."
@@ -1265,9 +1227,9 @@ function checkItems(draft) {
1265
1227
  );
1266
1228
  continue;
1267
1229
  }
1268
- if (_chunkD4TOPSHVcjs.isUnwritten.call(void 0, item.type)) {
1230
+ if (_chunkDSDXL3JOcjs.isUnwritten.call(void 0, item.type)) {
1269
1231
  issues.push(
1270
- _chunkD4TOPSHVcjs.issue.call(void 0,
1232
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1271
1233
  "ig_item_type_required",
1272
1234
  ["items", index, "type"],
1273
1235
  `Choose what kind of question ${ordinal} is.`
@@ -1282,11 +1244,11 @@ function checkItems(draft) {
1282
1244
  try {
1283
1245
  result = validateDraft(item.type, item);
1284
1246
  } catch (error) {
1285
- if (!(error instanceof _chunkD4TOPSHVcjs.UnknownActivityTypeError) || error.activityType !== item.type) {
1247
+ if (!(error instanceof _chunkDSDXL3JOcjs.UnknownActivityTypeError) || error.activityType !== item.type) {
1286
1248
  throw error;
1287
1249
  }
1288
1250
  issues.push(
1289
- _chunkD4TOPSHVcjs.issue.call(void 0,
1251
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1290
1252
  "ig_item_type_unknown",
1291
1253
  ["items", index, "type"],
1292
1254
  `"${item.type}" is not a registered activity type.`
@@ -1300,7 +1262,7 @@ function checkItems(draft) {
1300
1262
  }
1301
1263
  for (const id of repeated) {
1302
1264
  issues.push(
1303
- _chunkD4TOPSHVcjs.issue.call(void 0, "ig_item_id_duplicate", ["items"], `More than one question has the id "${id}".`)
1265
+ _chunkDSDXL3JOcjs.issue.call(void 0, "ig_item_id_duplicate", ["items"], `More than one question has the id "${id}".`)
1304
1266
  );
1305
1267
  }
1306
1268
  return issues;
@@ -1308,30 +1270,32 @@ function checkItems(draft) {
1308
1270
 
1309
1271
  // src/authoring/index.ts
1310
1272
  function validateDraft(type, draft) {
1311
- return _chunkD4TOPSHVcjs.withValidationScope.call(void 0, () => validateDraftInScope(type, draft));
1273
+ return _chunkDSDXL3JOcjs.withValidationScope.call(void 0, () => validateDraftInScope(type, draft));
1312
1274
  }
1313
1275
  function validateDraftInScope(type, draft) {
1314
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type);
1276
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type);
1315
1277
  if (descriptor === void 0) {
1316
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(String(type));
1278
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(String(type));
1317
1279
  }
1318
- 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) : [];
1280
+ 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) : [];
1319
1281
  const issues = [...reported];
1320
- const parsed = descriptor.schema.safeParse(draft, { reportInput: true });
1282
+ const parsed = _chunkDSDXL3JOcjs.readSchema.call(void 0, descriptor.schema, draft, `Activity type "${descriptor.type}"`, {
1283
+ reportInput: true
1284
+ });
1321
1285
  if (!parsed.success) {
1322
- const covered = _chunkD4TOPSHVcjs.coveredPathsOf.call(void 0, reported);
1286
+ const covered = _chunkDSDXL3JOcjs.coveredPathsOf.call(void 0, reported);
1323
1287
  const reportedEmpty = /* @__PURE__ */ new Set();
1324
- for (const schemaIssue of parsed.error.issues) {
1288
+ for (const schemaIssue of parsed.issues) {
1325
1289
  const path = schemaIssue.path.map(String);
1326
- if (covered.has(_chunkD4TOPSHVcjs.pathKey.call(void 0, path))) {
1290
+ if (covered.has(_chunkDSDXL3JOcjs.pathKey.call(void 0, path))) {
1327
1291
  continue;
1328
1292
  }
1329
- if (path.length > 0 && _chunkD4TOPSHVcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
1293
+ if (path.length > 0 && _chunkDSDXL3JOcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
1330
1294
  const key = JSON.stringify(path);
1331
1295
  if (!reportedEmpty.has(key)) {
1332
1296
  reportedEmpty.add(key);
1333
1297
  issues.push(
1334
- _chunkD4TOPSHVcjs.issue.call(void 0,
1298
+ _chunkDSDXL3JOcjs.issue.call(void 0,
1335
1299
  "null_not_allowed",
1336
1300
  path,
1337
1301
  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."
@@ -1355,9 +1319,9 @@ function validateDraftInScope(type, draft) {
1355
1319
  return { status: invalid ? "invalid" : "incomplete", issues };
1356
1320
  }
1357
1321
  function createDraft(type, context) {
1358
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type);
1322
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type);
1359
1323
  if (descriptor === void 0) {
1360
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(String(type));
1324
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(String(type));
1361
1325
  }
1362
1326
  const create = _optionalChain([descriptor, 'access', _27 => _27.authoring, 'optionalAccess', _28 => _28.createDraft]);
1363
1327
  if (create === void 0) {
@@ -1382,7 +1346,7 @@ function createDraft(type, context) {
1382
1346
  return create({ newId });
1383
1347
  }
1384
1348
  function normalise(found) {
1385
- const documented = Object.hasOwn(_chunkD4TOPSHVcjs.DRAFT_ISSUE_SEVERITY, found.code) ? _chunkD4TOPSHVcjs.DRAFT_ISSUE_SEVERITY[found.code] : void 0;
1349
+ const documented = Object.hasOwn(_chunkDSDXL3JOcjs.DRAFT_ISSUE_SEVERITY, found.code) ? _chunkDSDXL3JOcjs.DRAFT_ISSUE_SEVERITY[found.code] : void 0;
1386
1350
  return {
1387
1351
  ...found,
1388
1352
  path: found.path.map(String),
@@ -1446,9 +1410,9 @@ function redactValue(value, policy, reveal) {
1446
1410
  }
1447
1411
  function redact(data, options = {}) {
1448
1412
  const reveal = _nullishCoalesce(options.reveal, () => ( "none"));
1449
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, data.type);
1413
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, data.type);
1450
1414
  if (descriptor === void 0) {
1451
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(String(data.type));
1415
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(String(data.type));
1452
1416
  }
1453
1417
  if (descriptor.fieldPolicy === void 0) {
1454
1418
  throw new Error(
@@ -1459,11 +1423,15 @@ function redact(data, options = {}) {
1459
1423
  const projected = redactValue(data, effectivePolicy, reveal);
1460
1424
  const result = { ...projected, redacted: true };
1461
1425
  if (reveal === "none" && descriptor.redactedSchema !== void 0) {
1462
- const parsed = descriptor.redactedSchema.safeParse(result);
1426
+ const parsed = _chunkDSDXL3JOcjs.readSchema.call(void 0,
1427
+ descriptor.redactedSchema,
1428
+ result,
1429
+ `Activity type "${descriptor.type}"`
1430
+ );
1463
1431
  if (!parsed.success) {
1464
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1432
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1465
1433
  descriptor.type,
1466
- parsed.error.issues.map((issue2) => ({
1434
+ parsed.issues.map((issue2) => ({
1467
1435
  path: issue2.path.map(String),
1468
1436
  message: issue2.message,
1469
1437
  code: issue2.code
@@ -1475,13 +1443,13 @@ function redact(data, options = {}) {
1475
1443
  }
1476
1444
  function assertRedacted(data) {
1477
1445
  if (typeof data !== "object" || data === null) {
1478
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)("unknown", [
1446
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)("unknown", [
1479
1447
  { path: [], message: "Redacted activity data must be an object.", code: "invalid_type" }
1480
1448
  ]);
1481
1449
  }
1482
1450
  const candidate = data;
1483
1451
  if (candidate.redacted !== true) {
1484
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(String(_nullishCoalesce(candidate.type, () => ( "unknown"))), [
1452
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(String(_nullishCoalesce(candidate.type, () => ( "unknown"))), [
1485
1453
  {
1486
1454
  path: ["redacted"],
1487
1455
  message: "Missing redacted marker \u2014 this payload is not a redact() projection.",
@@ -1490,12 +1458,12 @@ function assertRedacted(data) {
1490
1458
  ]);
1491
1459
  }
1492
1460
  const type = typeof candidate.type === "string" ? candidate.type : "";
1493
- const descriptor = _chunkD4TOPSHVcjs.getActivityTypeDescriptor.call(void 0, type);
1461
+ const descriptor = _chunkDSDXL3JOcjs.getActivityTypeDescriptor.call(void 0, type);
1494
1462
  if (descriptor === void 0) {
1495
- throw new (0, _chunkD4TOPSHVcjs.UnknownActivityTypeError)(type);
1463
+ throw new (0, _chunkDSDXL3JOcjs.UnknownActivityTypeError)(type);
1496
1464
  }
1497
1465
  if (descriptor.redactedSchema === void 0) {
1498
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(descriptor.type, [
1466
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(descriptor.type, [
1499
1467
  {
1500
1468
  path: [],
1501
1469
  message: `Activity type "${descriptor.type}" registers no redactedSchema; assertRedacted cannot prove this payload is learner-safe.`,
@@ -1503,11 +1471,15 @@ function assertRedacted(data) {
1503
1471
  }
1504
1472
  ]);
1505
1473
  }
1506
- const parsed = descriptor.redactedSchema.safeParse(candidate);
1474
+ const parsed = _chunkDSDXL3JOcjs.readSchema.call(void 0,
1475
+ descriptor.redactedSchema,
1476
+ candidate,
1477
+ `Activity type "${descriptor.type}"`
1478
+ );
1507
1479
  if (!parsed.success) {
1508
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1480
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1509
1481
  descriptor.type,
1510
- parsed.error.issues.map((issue2) => ({
1482
+ parsed.issues.map((issue2) => ({
1511
1483
  path: issue2.path.map(String),
1512
1484
  message: issue2.message,
1513
1485
  code: issue2.code
@@ -1521,7 +1493,7 @@ var STIMULUS_FIELD_POLICY = {
1521
1493
  title: "public",
1522
1494
  body: "public",
1523
1495
  bodyHtml: "public",
1524
- media: _chunkD4TOPSHVcjs.MEDIA_FIELD_POLICY,
1496
+ media: _chunkDSDXL3JOcjs.MEDIA_FIELD_POLICY,
1525
1497
  locale: "public",
1526
1498
  attribution: "public",
1527
1499
  transcript: "author-only"
@@ -1565,9 +1537,9 @@ function redactItemGroup(group, options = {}) {
1565
1537
  redacted: true
1566
1538
  };
1567
1539
  if (reveal === "none") {
1568
- const parsed = _chunk2CV6NU32cjs.RedactedItemGroupSchema.safeParse(result);
1540
+ const parsed = _chunk2JT2WUQ2cjs.RedactedItemGroupSchema.safeParse(result);
1569
1541
  if (!parsed.success) {
1570
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1542
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1571
1543
  "item-group",
1572
1544
  parsed.error.issues.map((issue2) => ({
1573
1545
  path: issue2.path.map(String),
@@ -1581,13 +1553,13 @@ function redactItemGroup(group, options = {}) {
1581
1553
  }
1582
1554
  function assertRedactedItemGroup(data) {
1583
1555
  if (typeof data !== "object" || data === null) {
1584
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)("item-group", [
1556
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)("item-group", [
1585
1557
  { path: [], message: "Redacted item group must be an object.", code: "invalid_type" }
1586
1558
  ]);
1587
1559
  }
1588
1560
  const candidate = data;
1589
1561
  if (candidate.redacted !== true) {
1590
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)("item-group", [
1562
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)("item-group", [
1591
1563
  {
1592
1564
  path: ["redacted"],
1593
1565
  message: "Missing redacted marker \u2014 this payload is not a redactItemGroup() projection.",
@@ -1595,9 +1567,9 @@ function assertRedactedItemGroup(data) {
1595
1567
  }
1596
1568
  ]);
1597
1569
  }
1598
- const parsed = _chunk2CV6NU32cjs.RedactedItemGroupSchema.safeParse(candidate);
1570
+ const parsed = _chunk2JT2WUQ2cjs.RedactedItemGroupSchema.safeParse(candidate);
1599
1571
  if (!parsed.success) {
1600
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1572
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1601
1573
  "item-group",
1602
1574
  parsed.error.issues.map((issue2) => ({
1603
1575
  path: issue2.path.map(String),
@@ -1610,8 +1582,8 @@ function assertRedactedItemGroup(data) {
1610
1582
  try {
1611
1583
  assertRedacted(item);
1612
1584
  } catch (error) {
1613
- if (error instanceof _chunkD4TOPSHVcjs.ActivitySchemaError) {
1614
- throw new (0, _chunkD4TOPSHVcjs.ActivitySchemaError)(
1585
+ if (error instanceof _chunkDSDXL3JOcjs.ActivitySchemaError) {
1586
+ throw new (0, _chunkDSDXL3JOcjs.ActivitySchemaError)(
1615
1587
  "item-group",
1616
1588
  error.errors.map((issue2) => ({
1617
1589
  ...issue2,
@@ -1656,7 +1628,7 @@ function composeTimelineScore(entryKey, items, policy) {
1656
1628
  `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.`
1657
1629
  );
1658
1630
  }
1659
- return _chunkWQVZPIN7cjs.composeAssessmentScore.call(void 0, [{ id: entryKey, weight: 1, items: own }], policy);
1631
+ return _chunkVSH7ECQLcjs.composeAssessmentScore.call(void 0, [{ id: entryKey, weight: 1, items: own }], policy);
1660
1632
  }
1661
1633
 
1662
1634
 
@@ -1787,46 +1759,5 @@ function composeTimelineScore(entryKey, items, policy) {
1787
1759
 
1788
1760
 
1789
1761
 
1790
-
1791
-
1792
-
1793
-
1794
-
1795
-
1796
-
1797
-
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
- exports.AI_EXPLANATION_TYPES = _chunkNRTP7WCWcjs.AI_EXPLANATION_TYPES; exports.AI_HINT_TYPES = _chunkNRTP7WCWcjs.AI_HINT_TYPES; exports.AI_TEXT_MAX_LENGTH = _chunkNRTP7WCWcjs.AI_TEXT_MAX_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 = _chunkNRTP7WCWcjs.aiAllowedByContent; exports.aiExplanationRequest = _chunkNRTP7WCWcjs.aiExplanationRequest; exports.aiGradeOf = _chunkNRTP7WCWcjs.aiGradeOf; exports.aiHintRequest = _chunkNRTP7WCWcjs.aiHintRequest; exports.aiSupports = _chunkNRTP7WCWcjs.aiSupports; exports.alignDictation = _chunkD4TOPSHVcjs.alignDictation; exports.alignReadAloud = _chunkWQVZPIN7cjs.alignReadAloud; exports.assertRedacted = assertRedacted; exports.assertRedactedItemGroup = assertRedactedItemGroup; exports.buildAiFacts = _chunkNRTP7WCWcjs.buildAiFacts; exports.canonicalJson = canonicalJson; exports.checkAiExplanation = _chunkNRTP7WCWcjs.checkAiExplanation; exports.checkAiHint = _chunkNRTP7WCWcjs.checkAiHint; 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 = _chunkNRTP7WCWcjs.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 = _chunkNRTP7WCWcjs.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;
1762
+ exports.AI_EXPLANATION_TYPES = _chunkW5KB3DNTcjs.AI_EXPLANATION_TYPES; exports.AI_HINT_TYPES = _chunkW5KB3DNTcjs.AI_HINT_TYPES; exports.AI_TEXT_MAX_LENGTH = _chunkW5KB3DNTcjs.AI_TEXT_MAX_LENGTH; exports.AI_WRITING_MAX_CORRECTIONS = _chunkW5KB3DNTcjs.AI_WRITING_MAX_CORRECTIONS; exports.AI_WRITING_MAX_FIELD_LENGTH = _chunkW5KB3DNTcjs.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 = _chunkW5KB3DNTcjs.aiAllowedByContent; exports.aiExplanationRequest = _chunkW5KB3DNTcjs.aiExplanationRequest; exports.aiGradeOf = _chunkW5KB3DNTcjs.aiGradeOf; exports.aiHintRequest = _chunkW5KB3DNTcjs.aiHintRequest; exports.aiSupports = _chunkW5KB3DNTcjs.aiSupports; exports.aiWritingFeedbackRequest = _chunkW5KB3DNTcjs.aiWritingFeedbackRequest; exports.alignDictation = _chunkDSDXL3JOcjs.alignDictation; exports.alignReadAloud = _chunkVSH7ECQLcjs.alignReadAloud; exports.assertRedacted = assertRedacted; exports.assertRedactedItemGroup = assertRedactedItemGroup; exports.buildAiFacts = _chunkW5KB3DNTcjs.buildAiFacts; exports.canonicalJson = canonicalJson; exports.checkAiExplanation = _chunkW5KB3DNTcjs.checkAiExplanation; exports.checkAiHint = _chunkW5KB3DNTcjs.checkAiHint; exports.checkAiWritingFeedback = _chunkW5KB3DNTcjs.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 = _chunkW5KB3DNTcjs.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 = _chunkW5KB3DNTcjs.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;
1832
1763
  //# sourceMappingURL=index.cjs.map