@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.js CHANGED
@@ -4,20 +4,15 @@ import {
4
4
  validateXAPIStatement,
5
5
  xAPIBuilder,
6
6
  xapiDefinitionFor
7
- } from "./chunk-X5DAXBJI.js";
7
+ } from "./chunk-SJVRUPJT.js";
8
8
  import {
9
9
  INTERACTIVE_VIDEO_ITEM_TYPES,
10
10
  ItemGroupSchema,
11
- MediaTimelineSchema,
12
11
  RedactedItemGroupSchema,
13
- RedactedStimulusSchema,
14
- StimulusSchema,
15
12
  TIMELINE_MAX_CHAPTERS,
16
13
  TIMELINE_MAX_ITEMS,
17
14
  TIMELINE_MAX_QUIZZES,
18
15
  TIMELINE_MAX_TITLE_LENGTH,
19
- TimelineChapterSchema,
20
- TimelineCueSchema,
21
16
  dictationJsonSchema,
22
17
  fillInTheBlanksJsonSchema,
23
18
  gapSelectJsonSchema,
@@ -29,27 +24,33 @@ import {
29
24
  stimulusJsonSchema,
30
25
  validateActivity,
31
26
  validateItemGroup,
27
+ validateMedia,
28
+ validateOptionMedia,
32
29
  writtenResponseJsonSchema
33
- } from "./chunk-Z7QQZ53L.js";
30
+ } from "./chunk-XS6U2ARZ.js";
34
31
  import {
32
+ AI_COACHING_MAX_TIP_LENGTH,
33
+ AI_COACHING_MAX_WORDS,
35
34
  AI_EXPLANATION_TYPES,
36
35
  AI_HINT_TYPES,
37
36
  AI_TEXT_MAX_LENGTH,
38
37
  AI_WRITING_MAX_CORRECTIONS,
39
38
  AI_WRITING_MAX_FIELD_LENGTH,
40
39
  aiAllowedByContent,
40
+ aiCoachingRequest,
41
41
  aiExplanationRequest,
42
42
  aiGradeOf,
43
43
  aiHintRequest,
44
44
  aiSupports,
45
45
  aiWritingFeedbackRequest,
46
46
  buildAiFacts,
47
+ checkAiCoaching,
47
48
  checkAiExplanation,
48
49
  checkAiHint,
49
50
  checkAiWritingFeedback,
50
51
  hintRevealsAnswer,
51
52
  readAiTextResult
52
- } from "./chunk-5UCR4UNR.js";
53
+ } from "./chunk-NQHETFDA.js";
53
54
  import {
54
55
  DEFAULT_ITEM_SCORING_POLICY,
55
56
  DEFAULT_PASS_THRESHOLD,
@@ -74,11 +75,9 @@ import {
74
75
  scoreTries,
75
76
  validateItemScoringPolicy,
76
77
  validateSpeechAssessment
77
- } from "./chunk-Q7MV3IXJ.js";
78
+ } from "./chunk-IARLJ5MW.js";
78
79
  import {
79
80
  ActivitySchemaError,
80
- AiPermissionsSchema,
81
- BlankConfigSchema,
82
81
  DICTATION_MAX_ACCEPTED_TRANSCRIPTS,
83
82
  DICTATION_MAX_EQUIVALENCES,
84
83
  DICTATION_MAX_EQUIVALENCE_LENGTH,
@@ -86,53 +85,15 @@ import {
86
85
  DICTATION_MAX_TRANSCRIPT_LENGTH,
87
86
  DRAFT_ISSUE_SEVERITY,
88
87
  DeferredScoringError,
89
- DictationDataSchema,
90
- DictationEquivalenceSchema,
91
- DictationSlowMediaSchema,
92
- DictationToleranceSchema,
93
- FeedbackSchema,
94
- FillInTheBlanksDataSchema,
95
88
  GROUP_CAPTIONS_REVEAL_DICTATION,
96
- GapSelectBankSchema,
97
- GapSelectChoiceSchema,
98
- GapSelectDataSchema,
99
- GapSelectGapSchema,
100
89
  MEDIA_FIELD_POLICY,
101
- MediaPlaybackSchema,
102
- MediaSchema,
103
- MediaTrackSchema,
104
- MediaUrlSchema,
105
- MultipleChoiceDataSchema,
106
- MultipleChoiceOptionMediaSchema,
107
- MultipleChoiceOptionSchema,
108
- NativeControlHintSchema,
109
90
  READ_ALOUD_MAX_DIMENSION_WEIGHT,
110
91
  READ_ALOUD_MAX_REFERENCE_LENGTH,
111
92
  READ_ALOUD_MAX_SECONDS,
112
93
  READ_ALOUD_MAX_TAKES,
113
- ReadAloudDataSchema,
114
- ReadAloudSlowMediaSchema,
115
- RedactedBlankConfigSchema,
116
- RedactedDictationDataSchema,
117
- RedactedDictationSlowMediaSchema,
118
- RedactedFillInTheBlanksDataSchema,
119
- RedactedGapSelectBankSchema,
120
- RedactedGapSelectChoiceSchema,
121
- RedactedGapSelectDataSchema,
122
- RedactedGapSelectGapSchema,
123
- RedactedMediaSchema,
124
- RedactedMultipleChoiceDataSchema,
125
- RedactedMultipleChoiceOptionMediaSchema,
126
- RedactedMultipleChoiceOptionSchema,
127
- RedactedReadAloudDataSchema,
128
94
  RedactedScoringError,
129
- RedactedWrittenResponseDataSchema,
130
95
  SPEECH_ASSESSMENT_MAX_WORDS,
131
- TextMatchPolicySchema,
132
96
  UnknownActivityTypeError,
133
- WrittenResponseDataSchema,
134
- WrittenResponseRubricCriterionSchema,
135
- WrittenResponseRubricSchema,
136
97
  alignDictation,
137
98
  checkMedia,
138
99
  countWords,
@@ -155,12 +116,13 @@ import {
155
116
  multipleChoiceType,
156
117
  pathKey,
157
118
  readAloudType,
119
+ readSchema,
158
120
  refusesEmpty,
159
121
  registerActivityType,
160
122
  registeredActivityTypes,
161
123
  withValidationScope,
162
124
  writtenResponseType
163
- } from "./chunk-D3GP5MET.js";
125
+ } from "./chunk-FBKTION6.js";
164
126
 
165
127
  // src/content-hash.ts
166
128
  function canonicalJson(value, seen = /* @__PURE__ */ new Set()) {
@@ -1321,11 +1283,13 @@ function validateDraftInScope(type, draft) {
1321
1283
  }
1322
1284
  const reported = isRecord(draft) && descriptor.authoring?.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 = readSchema(descriptor.schema, draft, `Activity type "${descriptor.type}"`, {
1287
+ reportInput: true
1288
+ });
1325
1289
  if (!parsed.success) {
1326
1290
  const covered = coveredPathsOf(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
1294
  if (covered.has(pathKey(path))) {
1331
1295
  continue;
@@ -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 = readSchema(
1431
+ descriptor.redactedSchema,
1432
+ result,
1433
+ `Activity type "${descriptor.type}"`
1434
+ );
1467
1435
  if (!parsed.success) {
1468
1436
  throw new 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
@@ -1507,11 +1475,15 @@ function assertRedacted(data) {
1507
1475
  }
1508
1476
  ]);
1509
1477
  }
1510
- const parsed = descriptor.redactedSchema.safeParse(candidate);
1478
+ const parsed = readSchema(
1479
+ descriptor.redactedSchema,
1480
+ candidate,
1481
+ `Activity type "${descriptor.type}"`
1482
+ );
1511
1483
  if (!parsed.success) {
1512
1484
  throw new 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
@@ -1663,14 +1635,14 @@ function composeTimelineScore(entryKey, items, policy) {
1663
1635
  return composeAssessmentScore([{ id: entryKey, weight: 1, items: own }], policy);
1664
1636
  }
1665
1637
  export {
1638
+ AI_COACHING_MAX_TIP_LENGTH,
1639
+ AI_COACHING_MAX_WORDS,
1666
1640
  AI_EXPLANATION_TYPES,
1667
1641
  AI_HINT_TYPES,
1668
1642
  AI_TEXT_MAX_LENGTH,
1669
1643
  AI_WRITING_MAX_CORRECTIONS,
1670
1644
  AI_WRITING_MAX_FIELD_LENGTH,
1671
1645
  ActivitySchemaError,
1672
- AiPermissionsSchema,
1673
- BlankConfigSchema,
1674
1646
  DEFAULT_ITEM_SCORING_POLICY,
1675
1647
  DEFAULT_PASS_THRESHOLD,
1676
1648
  DICTATION_MAX_ACCEPTED_TRANSCRIPTS,
@@ -1679,68 +1651,24 @@ export {
1679
1651
  DICTATION_MAX_TEXT_LENGTH,
1680
1652
  DICTATION_MAX_TRANSCRIPT_LENGTH,
1681
1653
  DeferredScoringError,
1682
- DictationDataSchema,
1683
- DictationEquivalenceSchema,
1684
- DictationSlowMediaSchema,
1685
- DictationToleranceSchema,
1686
- FeedbackSchema,
1687
- FillInTheBlanksDataSchema,
1688
- GapSelectBankSchema,
1689
- GapSelectChoiceSchema,
1690
- GapSelectDataSchema,
1691
- GapSelectGapSchema,
1692
1654
  INTERACTIVE_VIDEO_ITEM_TYPES,
1693
1655
  ITEM_SCORING_MAX_RETRIES,
1694
- ItemGroupSchema,
1695
- MediaPlaybackSchema,
1696
- MediaSchema,
1697
- MediaTimelineSchema,
1698
- MediaTrackSchema,
1699
- MediaUrlSchema,
1700
- MultipleChoiceDataSchema,
1701
- MultipleChoiceOptionMediaSchema,
1702
- MultipleChoiceOptionSchema,
1703
- NativeControlHintSchema,
1704
1656
  OPEN_DELIVERY_POLICY,
1705
1657
  READ_ALOUD_MAX_DIMENSION_WEIGHT,
1706
1658
  READ_ALOUD_MAX_REFERENCE_LENGTH,
1707
1659
  READ_ALOUD_MAX_SECONDS,
1708
1660
  READ_ALOUD_MAX_TAKES,
1709
- ReadAloudDataSchema,
1710
- ReadAloudSlowMediaSchema,
1711
- RedactedBlankConfigSchema,
1712
- RedactedDictationDataSchema,
1713
- RedactedDictationSlowMediaSchema,
1714
- RedactedFillInTheBlanksDataSchema,
1715
- RedactedGapSelectBankSchema,
1716
- RedactedGapSelectChoiceSchema,
1717
- RedactedGapSelectDataSchema,
1718
- RedactedGapSelectGapSchema,
1719
- RedactedItemGroupSchema,
1720
- RedactedMediaSchema,
1721
- RedactedMultipleChoiceDataSchema,
1722
- RedactedMultipleChoiceOptionMediaSchema,
1723
- RedactedMultipleChoiceOptionSchema,
1724
- RedactedReadAloudDataSchema,
1725
1661
  RedactedScoringError,
1726
- RedactedStimulusSchema,
1727
- RedactedWrittenResponseDataSchema,
1728
1662
  SPEECH_ASSESSMENT_MAX_WORDS,
1729
- StimulusSchema,
1730
1663
  TIMELINE_MAX_CHAPTERS,
1731
1664
  TIMELINE_MAX_ITEMS,
1732
1665
  TIMELINE_MAX_QUIZZES,
1733
1666
  TIMELINE_MAX_TITLE_LENGTH,
1734
- TextMatchPolicySchema,
1735
- TimelineChapterSchema,
1736
- TimelineCueSchema,
1737
1667
  UnknownActivityTypeError,
1738
- WrittenResponseDataSchema,
1739
- WrittenResponseRubricCriterionSchema,
1740
- WrittenResponseRubricSchema,
1741
1668
  XAPIVerb,
1742
1669
  XAPI_VERB_DISPLAY,
1743
1670
  aiAllowedByContent,
1671
+ aiCoachingRequest,
1744
1672
  aiExplanationRequest,
1745
1673
  aiGradeOf,
1746
1674
  aiHintRequest,
@@ -1752,6 +1680,7 @@ export {
1752
1680
  assertRedactedItemGroup,
1753
1681
  buildAiFacts,
1754
1682
  canonicalJson,
1683
+ checkAiCoaching,
1755
1684
  checkAiExplanation,
1756
1685
  checkAiHint,
1757
1686
  checkAiWritingFeedback,
@@ -1829,6 +1758,8 @@ export {
1829
1758
  validateItemGroup,
1830
1759
  validateItemGroupDraft,
1831
1760
  validateItemScoringPolicy,
1761
+ validateMedia,
1762
+ validateOptionMedia,
1832
1763
  validateSpeechAssessment,
1833
1764
  validateXAPIStatement,
1834
1765
  verifyAttemptPlan,