@intellectif/lk-core 1.5.0 → 1.7.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 (86) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/{ai-BYryFkF9.d.ts → ai-B1wYrqcB.d.cts} +83 -18
  3. package/dist/ai-B1wYrqcB.d.cts.map +1 -0
  4. package/dist/{ai-BYryFkF9.d.cts → ai-B1wYrqcB.d.ts} +83 -18
  5. package/dist/ai-B1wYrqcB.d.ts.map +1 -0
  6. package/dist/ai-check.cjs +13 -6
  7. package/dist/ai-check.cjs.map +1 -1
  8. package/dist/ai-check.d.cts +1 -5
  9. package/dist/ai-check.d.cts.map +1 -1
  10. package/dist/ai-check.d.ts +1 -5
  11. package/dist/ai-check.d.ts.map +1 -1
  12. package/dist/ai-check.js +13 -6
  13. package/dist/ai-check.js.map +1 -1
  14. package/dist/{ai-writing-D8PdhJJz.js → ai-writing-B7oMCt66.js} +311 -66
  15. package/dist/ai-writing-B7oMCt66.js.map +1 -0
  16. package/dist/{ai-writing-Cen7-3qs.cjs → ai-writing-DrPTV3R2.cjs} +313 -50
  17. package/dist/ai-writing-DrPTV3R2.cjs.map +1 -0
  18. package/dist/{index-DUaW1Tj5.d.ts → index-BM8LeDWn.d.cts} +2 -42
  19. package/dist/index-BM8LeDWn.d.cts.map +1 -0
  20. package/dist/{index-Bg0aeWtM.d.cts → index-BTkMQtws.d.ts} +2 -42
  21. package/dist/index-BTkMQtws.d.ts.map +1 -0
  22. package/dist/{index-wMc1E_aM.d.ts → index-BU99GFTl.d.ts} +2 -8
  23. package/dist/index-BU99GFTl.d.ts.map +1 -0
  24. package/dist/{index-CxpiWedW.d.ts → index-BdXs4-en.d.ts} +42 -20
  25. package/dist/index-BdXs4-en.d.ts.map +1 -0
  26. package/dist/{index-qMbxed1B.d.cts → index-DP9rvyOz.d.cts} +42 -20
  27. package/dist/index-DP9rvyOz.d.cts.map +1 -0
  28. package/dist/{index-D7R3Ll8R.d.cts → index-XCCoPoTU.d.cts} +2 -8
  29. package/dist/index-XCCoPoTU.d.cts.map +1 -0
  30. package/dist/index.cjs +70 -21
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +135 -69
  33. package/dist/index.d.cts.map +1 -1
  34. package/dist/index.d.ts +135 -69
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +65 -22
  37. package/dist/index.js.map +1 -1
  38. package/dist/{item-group-DEB7nLID.cjs → item-group-8P3WFuUK.cjs} +5 -6
  39. package/dist/item-group-8P3WFuUK.cjs.map +1 -0
  40. package/dist/{item-group-DdSUCUjM.js → item-group-CeDk7mfM.js} +5 -6
  41. package/dist/item-group-CeDk7mfM.js.map +1 -0
  42. package/dist/{registry-DaZRpqjW.js → registry-D92hz9iA.js} +124 -106
  43. package/dist/registry-D92hz9iA.js.map +1 -0
  44. package/dist/{registry-Ce00A_OW.cjs → registry-hzrkTeIT.cjs} +142 -107
  45. package/dist/registry-hzrkTeIT.cjs.map +1 -0
  46. package/dist/{schemas-DksueYsu.cjs → schemas-BWeskONy.cjs} +79 -18
  47. package/dist/schemas-BWeskONy.cjs.map +1 -0
  48. package/dist/{schemas-BioKFf3F.js → schemas-C7TViWCg.js} +74 -19
  49. package/dist/schemas-C7TViWCg.js.map +1 -0
  50. package/dist/schemas.cjs +5 -2
  51. package/dist/schemas.d.cts +2 -2
  52. package/dist/schemas.d.ts +2 -2
  53. package/dist/schemas.js +4 -3
  54. package/dist/{scoring-lKQVYsxy.cjs → scoring-CtkCFyFT.cjs} +22 -42
  55. package/dist/{scoring-lKQVYsxy.cjs.map → scoring-CtkCFyFT.cjs.map} +1 -1
  56. package/dist/{scoring-BKNNTz-s.js → scoring-DD1GHcLI.js} +22 -42
  57. package/dist/{scoring-BKNNTz-s.js.map → scoring-DD1GHcLI.js.map} +1 -1
  58. package/dist/scoring.cjs +2 -2
  59. package/dist/scoring.d.cts +2 -2
  60. package/dist/scoring.d.ts +2 -2
  61. package/dist/scoring.js +2 -2
  62. package/dist/{xapi-NYrTlpID.cjs → xapi-7btSpx6v.cjs} +5 -8
  63. package/dist/{xapi-NYrTlpID.cjs.map → xapi-7btSpx6v.cjs.map} +1 -1
  64. package/dist/{xapi-wR6gu4qS.js → xapi-Cgicg-zU.js} +5 -8
  65. package/dist/{xapi-wR6gu4qS.js.map → xapi-Cgicg-zU.js.map} +1 -1
  66. package/dist/xapi.cjs +1 -1
  67. package/dist/xapi.d.cts +1 -1
  68. package/dist/xapi.d.ts +1 -1
  69. package/dist/xapi.js +1 -1
  70. package/package.json +2 -2
  71. package/dist/ai-BYryFkF9.d.cts.map +0 -1
  72. package/dist/ai-BYryFkF9.d.ts.map +0 -1
  73. package/dist/ai-writing-Cen7-3qs.cjs.map +0 -1
  74. package/dist/ai-writing-D8PdhJJz.js.map +0 -1
  75. package/dist/index-Bg0aeWtM.d.cts.map +0 -1
  76. package/dist/index-CxpiWedW.d.ts.map +0 -1
  77. package/dist/index-D7R3Ll8R.d.cts.map +0 -1
  78. package/dist/index-DUaW1Tj5.d.ts.map +0 -1
  79. package/dist/index-qMbxed1B.d.cts.map +0 -1
  80. package/dist/index-wMc1E_aM.d.ts.map +0 -1
  81. package/dist/item-group-DEB7nLID.cjs.map +0 -1
  82. package/dist/item-group-DdSUCUjM.js.map +0 -1
  83. package/dist/registry-Ce00A_OW.cjs.map +0 -1
  84. package/dist/registry-DaZRpqjW.js.map +0 -1
  85. package/dist/schemas-BioKFf3F.js.map +0 -1
  86. package/dist/schemas-DksueYsu.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,82 @@
1
1
  # @intellectif/lk-core
2
2
 
3
+ ## 1.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#122](https://github.com/intellectif/learning-kit/pull/122) [`4f59f0a`](https://github.com/intellectif/learning-kit/commit/4f59f0aee1868875a729af89a7ae275ff96bb218) Thanks [@diego28e](https://github.com/diego28e)! - **A question's own instructions**: multiple choice, fill in the blanks and gap select take an optional `instructions`, the task the learner reads before answering, as read aloud already does.
8
+
9
+ **Action required:** none, unless you already store a field under this name. Content is loose, so an `instructions` of your own on these three types validated before. It now has to be a string, and on a fill in the blanks or a gap select it may hold no `{{id}}` placeholder. Anything else fails validation at `instructions`. **No grade changes:** no scorer reads it, and the grade-stability corpus is unchanged.
10
+
11
+ - **What it is for:** "Complete the sentence. Use ONE word.", on a question served alone (an adaptive test's, or a bank shuffled across forms) where no item group can hold it. Instructions a run of questions shares stay in the group's text stimulus.
12
+ - **lk-core:**
13
+ - **The field.** `instructions?: string` on `MultipleChoiceData`, `FillInTheBlanksData` and `GapSelectData`, plain text. A `{{id}}` placeholder in a fill in the blanks' or a gap select's instructions is refused at `instructions`, since blanks and gaps live in the passage only.
14
+ - **Learner-visible.** `redact()` keeps it at every reveal level, and so do `withoutAuthorOnly()` and `redactItemGroup()`. `assertRedacted()` accepts it, and the `Redacted*` types carry it.
15
+ - **Schemas.** `jsonSchemaFor()` and `contentJsonSchema()` describe it.
16
+ - **AI help.** Hint and explanation facts carry `instructions` on these types, trimmed, apart from the question or the passage. A grouped question carries both its group's `material` and its own instructions. Tell your model that they are the task, not part of the text answered.
17
+ - **Drafts.** A model drafting these types may write `instructions`, and `checkAiDrafts` keeps them.
18
+ - **`@intellectif/lk-core/ai-check`** has one more case, `fib-instructions-hint`: the word-formation blank of `fib-formation-hint` served alone, with its task in its own instructions.
19
+ - **lk-react:** `<MultipleChoice>`, `<FillInTheBlanks>` and `<GapSelect>` draw the instructions first, before the media and the question or passage, in `.lk-mc-instructions`, `.lk-fib-instructions` or `.lk-gs-instructions`. The question's fieldset names them with `aria-describedby`. Blank instructions draw nothing. Inside `<ActivitySequence>`, a grouped question shows its group's material, then its own instructions. lk-react 23.3.0 peers on lk-core `^1.7.0`, so upgrade the two together.
20
+
21
+ Guide: https://github.com/intellectif/learning-kit/blob/main/docs/authoring.md#a-questions-own-instructions-17
22
+
23
+ ## 1.6.0
24
+
25
+ ### Minor Changes
26
+
27
+ - [#120](https://github.com/intellectif/learning-kit/pull/120) [`d5ee618`](https://github.com/intellectif/learning-kit/commit/d5ee6185d2a167794352b218486881c405b13b52) Thanks [@diego28e](https://github.com/diego28e)! - **Exporting and importing content**: list and re-point every file an item or a group uses, keep what each recording says for the author's side only, and describe content in one JSON Schema.
28
+
29
+ **Action required:** none. Every field is optional and every function new. Two cases to check:
30
+
31
+ - **A field you already store under these names.** If your content keeps a media `transcript` that is not a string, or a `script` that is not a list of `{ speaker, text }` turns, it now fails validation.
32
+ - **A `switch` over the critic's codes.** The critic has three new codes, so a `switch` over them without a `default` branch needs them.
33
+
34
+ - **Files:** `listMediaRefs(entry)` lists every media address in an activity or an item group: each one's path, kind, owner and language. It covers an item's `media`, a multiple-choice option's `media`, dictation's and read-aloud's `slowMedia`, and a stimulus's `media`, with their captions, tracks and posters. A recording with no file yet is listed with `url: null`.
35
+
36
+ ```ts
37
+ const files = listMediaRefs(entry).filter((ref) => ref.url !== null);
38
+ ```
39
+
40
+ `mapMediaRefs(entry, fn)` returns a copy with each address replaced and nothing else changed. With `(ref) => ref.url` the copy equals the input. A type you register says where it keeps files with `mediaSlots` on its descriptor.
41
+
42
+ ```ts
43
+ const imported = mapMediaRefs(entry, (ref) =>
44
+ ref.url === null ? null : storedUrlFor(ref.url)
45
+ );
46
+ ```
47
+
48
+ - **What a recording says:** an item's media, a listening option's media and a stimulus can carry an author-only `transcript` (plain text) and `script` (turns, each a `speaker` and a `text`).
49
+
50
+ - Both are removed by `redact()` and `redactItemGroup()` at every reveal level, and refused by `assertRedacted()`. No request for a learner's AI help reads them.
51
+ - `transcriptOf(holder)` gives the author-side text, the script as `Speaker: text` lines when there is no transcript. Pass it to `aiDraftsRequest` as its `source`.
52
+
53
+ ```jsonc
54
+ {
55
+ "type": "audio",
56
+ "url": "https://cdn.example/station.mp3",
57
+ "transcript": "Where does the train leave from? Platform four.",
58
+ "script": [
59
+ { "speaker": "Anna", "text": "Where does the train leave from?" },
60
+ { "speaker": "Ben", "text": "Platform four." }
61
+ ]
62
+ }
63
+ ```
64
+
65
+ - **Practice scored in the browser:** `withoutAuthorOnly(entry)` returns an item or a group without its author-only fields, and with its key and your own fields. Unlike `redact()`, whose output scorers refuse, it scores exactly as the stored item. Every vector of the grade-stability corpus shows it. Exams still go through `redact()`.
66
+
67
+ ```ts
68
+ res.json(withoutAuthorOnly(practiceItem));
69
+ ```
70
+
71
+ - **The critic's new codes:** `media_script_differs` (a transcript and a script that say different words), `media_transcript_differs` (a dictation's or a read-aloud's recording saying other words than the item), and `media_transcript_unused` (on a picture or an embed). The AI critic now reads a recording's transcript and script. It no longer reads a caption track's address or language, a poster, or a speaker's label.
72
+ - **JSON Schema:** `contentJsonSchema()` is one draft 2020-12 document whose root is a sequence entry: any registered activity type, or an item group with typed items. `jsonSchemaFor(type, { target: 'draft-2020-12' })` gives one type's schema in that draft. Draft 7 stays the default, so the existing exports do not change.
73
+
74
+ ```ts
75
+ writeFileSync("schema.json", JSON.stringify(contentJsonSchema(), null, 2));
76
+ ```
77
+
78
+ Guide: https://github.com/intellectif/learning-kit/blob/main/docs/authoring.md#exporting-and-importing-content-16
79
+
3
80
  ## 1.5.0
4
81
 
5
82
  ### Minor Changes
@@ -1,4 +1,3 @@
1
- //#region src/scoring/text-match.d.ts
2
1
  /**
3
2
  * Configurable free-text answer matching (R3.3).
4
3
  *
@@ -63,8 +62,6 @@ declare function levenshteinDistance(a: string, b: string, max: number): number;
63
62
  * semantics: `trim` + locale-insensitive `toLowerCase` + strict equality.
64
63
  */
65
64
  declare function matchText(input: string, accepted: string | readonly string[], policy?: TextMatchPolicy): TextMatchResult;
66
- //#endregion
67
- //#region src/types/grading.d.ts
68
65
  /**
69
66
  * Lifecycle of a deferred grade. A grade exists only in the `graded` state;
70
67
  * every other state means "no grade, and here is why" — which is precisely the
@@ -243,8 +240,6 @@ interface GradeRecord {
243
240
  /** Where `routeGrade` sent this grade, and why, when it was routed. */
244
241
  routing?: GradeRouting;
245
242
  }
246
- //#endregion
247
- //#region src/types/xapi.d.ts
248
243
  /**
249
244
  * An xAPI Activity object — the thing a statement is about.
250
245
  * This SDK only builds Activity-type objects (xAPI 1.0.3 §4.1.4.1).
@@ -402,8 +397,6 @@ interface XAPIError {
402
397
  /** Human-readable error description. */
403
398
  message: string;
404
399
  }
405
- //#endregion
406
- //#region src/types/activity.d.ts
407
400
  /**
408
401
  * Maps each ActivityType string to its corresponding data shape.
409
402
  *
@@ -477,6 +470,33 @@ interface ActivityMedia {
477
470
  * browser's own control bar, unlimited plays, free seeking and free speed.
478
471
  */
479
472
  playback?: MediaPlaybackPolicy;
473
+ /**
474
+ * Author-only: what the recording says, as plain text. For item generation,
475
+ * review and grading; never shown to the learner, and removed by `redact()`
476
+ * and `redactItemGroup()`, as a stimulus's `transcript` is. Meant for
477
+ * `audio` and `video`.
478
+ */
479
+ transcript?: string;
480
+ /**
481
+ * Author-only: the recording as turns, one per speaker, for casting voices
482
+ * and reading a dialogue. Removed by redaction, as `transcript` is. Where
483
+ * both are given, `transcript` is the text AI facts read; see
484
+ * {@link transcriptOf}.
485
+ */
486
+ script?: ScriptTurn[];
487
+ }
488
+ /**
489
+ * One speaker's turn in a recording's author-only `script`.
490
+ *
491
+ * `speaker` is a label the author chooses ("Anna", "Narrator", "Speaker 2"),
492
+ * the same one for every turn that voice speaks. Which voice reads it is the
493
+ * consuming application's choice; the SDK never names a voice.
494
+ */
495
+ interface ScriptTurn {
496
+ /** Non-empty after trimming; at most 60 characters. */
497
+ speaker: string;
498
+ /** What the speaker says. Non-empty after trimming. */
499
+ text: string;
480
500
  }
481
501
  /**
482
502
  * A hint to the browser's own control bar, emitted as a `controlsList` token.
@@ -574,6 +594,14 @@ interface MultipleChoiceOptionMedia {
574
594
  alt?: string;
575
595
  /** WebVTT captions for an audio option, rendered as a `<track>`. */
576
596
  captionsUrl?: string;
597
+ /**
598
+ * Author-only: what an audio option says. In a listening option this is the
599
+ * option's answer, so it is removed by `redact()` like every author-only
600
+ * field. See {@link ActivityMedia.transcript}.
601
+ */
602
+ transcript?: string;
603
+ /** Author-only: the option's recording as speaker turns. See {@link ActivityMedia.script}. */
604
+ script?: ScriptTurn[];
577
605
  }
578
606
  interface MultipleChoiceOption {
579
607
  /** Unique identifier for this option within the activity. */
@@ -602,6 +630,13 @@ interface MultipleChoiceData {
602
630
  id: string;
603
631
  /** Human-readable title used in xAPI statements and error boundaries. */
604
632
  title: string;
633
+ /**
634
+ * Optional instructions shown to the learner, as plain text: the task, read
635
+ * before the question and never part of it ("Choose the correct option to
636
+ * complete the conversation."). Every AI request about the item carries them.
637
+ * Instructions a run of questions shares go in an item group's text stimulus.
638
+ */
639
+ instructions?: string;
605
640
  /** The question stem presented to the learner, as plain text. */
606
641
  question: string;
607
642
  /**
@@ -739,6 +774,14 @@ interface GapSelectData {
739
774
  id: string;
740
775
  /** Human-readable title used in xAPI statements and error boundaries. */
741
776
  title: string;
777
+ /**
778
+ * Optional instructions shown to the learner, as plain text: the task, read
779
+ * before the passage and never part of it ("Complete the sentence. Use ONE
780
+ * word."). Every AI request about the item carries them. A `{{id}}`
781
+ * placeholder here is refused: gaps live in the passage only. Instructions
782
+ * a run of questions shares go in an item group's text stimulus.
783
+ */
784
+ instructions?: string;
742
785
  /** Passage text containing `{{gap_id}}` placeholders. */
743
786
  passage: string;
744
787
  /**
@@ -796,6 +839,14 @@ interface FillInTheBlanksData {
796
839
  id: string;
797
840
  /** Human-readable title used in xAPI statements and error boundaries. */
798
841
  title: string;
842
+ /**
843
+ * Optional instructions shown to the learner, as plain text: the task, read
844
+ * before the passage and never part of it ("Complete the sentence. Use ONE
845
+ * word."). Every AI request about the item carries them. A `{{id}}`
846
+ * placeholder here is refused: blanks live in the passage only. Instructions
847
+ * a run of questions shares go in an item group's text stimulus.
848
+ */
849
+ instructions?: string;
799
850
  /** Passage text containing `{{blank_id}}` placeholders. */
800
851
  passage: string;
801
852
  /**
@@ -1503,8 +1554,6 @@ interface InteractionEvent {
1503
1554
  /** Additional event-specific data. */
1504
1555
  payload: Record<string, unknown>;
1505
1556
  }
1506
- //#endregion
1507
- //#region src/types/authoring.d.ts
1508
1557
  /**
1509
1558
  * Why a draft is not an activity yet.
1510
1559
  *
@@ -1579,8 +1628,6 @@ interface DraftContext {
1579
1628
  */
1580
1629
  newId: () => string;
1581
1630
  }
1582
- //#endregion
1583
- //#region src/types/item-group.d.ts
1584
1631
  /** What a stimulus primarily is. Drives validation and layout, never scoring. */
1585
1632
  type StimulusKind = 'text' | 'audio' | 'video' | 'image' | 'mixed';
1586
1633
  /**
@@ -1590,8 +1637,8 @@ type StimulusKind = 'text' | 'audio' | 'video' | 'image' | 'mixed';
1590
1637
  * section alike, and needs no blueprint to exist.
1591
1638
  *
1592
1639
  * Learner-visible by definition: the point of a stimulus is that the learner
1593
- * reads or hears it. The one exception is `transcript`, an author asset that
1594
- * `redactItemGroup` removes.
1640
+ * reads or hears it. The exceptions are `transcript` and `script`, author
1641
+ * assets that `redactItemGroup` removes.
1595
1642
  */
1596
1643
  interface Stimulus {
1597
1644
  id: string;
@@ -1615,6 +1662,12 @@ interface Stimulus {
1615
1662
  * never shown to the learner. Removed by `redactItemGroup`.
1616
1663
  */
1617
1664
  transcript?: string;
1665
+ /**
1666
+ * Author-only: the recording as speaker turns, for casting voices. Removed
1667
+ * by `redactItemGroup`, as `transcript` is. A stimulus keeps both here, not
1668
+ * on its `media`; `transcriptOf` reads these first.
1669
+ */
1670
+ script?: ScriptTurn[];
1618
1671
  /** BCP 47 language tag of the material, when it differs from the items'. */
1619
1672
  locale?: string;
1620
1673
  /** Source credit, shown to the learner after the material. */
@@ -1793,8 +1846,6 @@ interface SequenceSlot<TItem = ActivityData> {
1793
1846
  /** Present when the slot comes from an item group. */
1794
1847
  group?: SequenceSlotGroup;
1795
1848
  }
1796
- //#endregion
1797
- //#region src/types/ai.d.ts
1798
1849
  /**
1799
1850
  * What an author allows AI to do for one item. Absent, or a feature left out,
1800
1851
  * leaves the choice to the deployment. `false` switches a feature off for this
@@ -1862,6 +1913,11 @@ interface AiOptionFact {
1862
1913
  }
1863
1914
  interface AiMultipleChoiceFacts extends AiFactsBase {
1864
1915
  activityType: 'multiple-choice';
1916
+ /**
1917
+ * The item's instructions, when it has any: the task the learner reads
1918
+ * before the question. They say what to do, and are never part of the text answered.
1919
+ */
1920
+ instructions?: string;
1865
1921
  question: string;
1866
1922
  mode: 'single' | 'multi';
1867
1923
  options: AiOptionFact[];
@@ -1884,6 +1940,11 @@ interface AiBlankFact {
1884
1940
  }
1885
1941
  interface AiFillInTheBlanksFacts extends AiFactsBase {
1886
1942
  activityType: 'fill-in-the-blanks';
1943
+ /**
1944
+ * The item's instructions, when it has any: the task the learner reads
1945
+ * before the passage. They say what to do, and are never part of the text answered.
1946
+ */
1947
+ instructions?: string;
1887
1948
  /** The passage, each blank written as `[1]`, `[2]`… in passage order. */
1888
1949
  passage: string;
1889
1950
  blanks: AiBlankFact[];
@@ -1906,6 +1967,11 @@ interface AiGapFact {
1906
1967
  }
1907
1968
  interface AiGapSelectFacts extends AiFactsBase {
1908
1969
  activityType: 'gap-select';
1970
+ /**
1971
+ * The item's instructions, when it has any: the task the learner reads
1972
+ * before the passage. They say what to do, and are never part of the text answered.
1973
+ */
1974
+ instructions?: string;
1909
1975
  /** The passage, each gap written as `[1]`, `[2]`… in passage order. */
1910
1976
  passage: string;
1911
1977
  gaps: AiGapFact[];
@@ -2606,6 +2672,5 @@ interface AiVideoDraft {
2606
2672
  /** What `critiqueItemGroupDraft` says of it. */
2607
2673
  findings: ItemFinding[];
2608
2674
  }
2609
- //#endregion
2610
- export { AiVerdict as $, MultipleChoiceData as $t, AiGapSelectFacts as A, XAPIVerbObject as An, ActivityType as At, AiHintRequest as B, InlineCorrection as Bn, FillInTheBlanksLearnerResponse as Bt, AiDraftsCall as C, XAPIContext as Cn, ItemFinding as Ct, AiFeature as D, XAPIResult as Dn, ActivityFeedback as Dt, AiExplanationRequest as E, XAPIObject as En, ActivityDataMap as Et, AiGradingFacts as F, Grader as Fn, DictationEquivalence as Ft, AiProvenance as G, GapSelectLearnerResponse as Gt, AiMaterialFacts as H, TextMatchResult as Hn, GapSelectChoice as Ht, AiGradingJudgement as I, GraderConfiguration as In, DictationLearnerResponse as It, AiRefusal as J, ItemOutcome as Jt, AiReadingFacts as K, InteractionEvent as Kt, AiGradingRequest as L, GraderKind as Ln, DictationSlowMedia as Lt, AiGrade as M, GradeRecord as Mn, DeferredReason as Mt, AiGradedCriterion as N, GradeRouting as Nn, DeferredScoringPartial as Nt, AiFillInTheBlanksFacts as O, XAPIScore as On, ActivityMedia as Ot, AiGradingCriterionFact as P, GradeRoutingReason as Pn, DictationData as Pt, AiTextResult as Q, MediaTrack as Qt, AiGradingRequestProblem as R, GraderUsage as Rn, DictationTolerance as Rt, AiDrafts as S, XAPIConfig as Sn, DraftValidationResult as St, AiDraftsRun as T, XAPIError as Tn, ActivityData as Tt, AiMultipleChoiceFacts as U, levenshteinDistance as Un, GapSelectData as Ut, AiItemFacts as V, TextMatchPolicy as Vn, GapSelectBank as Vt, AiOptionFact as W, matchText as Wn, GapSelectGap as Wt, AiSoundFact as X, LearnerResponseMap as Xt, AiRubricCriterionFact as Y, LearnerResponse as Yt, AiSupportedActivityType as Z, MediaPlaybackPolicy as Zt, AiDraftCaption as _, WrittenResponseLearnerResponse as _n, DraftComplete as _t, AiCoachingRequest as a, ReadAloudDimension as an, AiWritingFeedbackRequest as at, AiDraftSource as b, WrittenResponseRubricLevel as bn, DraftNotComplete as bt, AiCriterionJudgement as c, ReadAloudSlowMedia as cn, MediaProgress as ct, AiCritiqueFinding as d, ScoringDetail as dn, SequenceSlot as dt, MultipleChoiceLearnerResponse as en, AiVideoDraft as et, AiCritiqueFindingResult as f, ScoringOutcome as fn, SequenceSlotGroup as ft, AiDictationFacts as g, WrittenResponseData as gn, TimelineCue as gt, AiCritiqueResult as h, ValidationResult as hn, TimelineChapter as ht, AiCoaching as i, ReadAloudData as in, AiWritingFeedback as it, AiGeneratedDraft as j, CriterionScore as jn, BlankConfig as jt, AiGapFact as k, XAPIStatement as kn, ActivityResult as kt, AiCritique as l, RecordingBounds as ln, MediaTimeline as lt, AiCritiqueRequest as m, ValidationError as mn, StimulusKind as mt, AiActivityInput as n, MultipleChoiceOptionMedia as nn, AiWritingCorrection as nt, AiCoachingResult as o, ReadAloudDimensionWeight as on, AiWritingFeedbackResult as ot, AiCritiqueKind as p, ScoringResult as pn, Stimulus as pt, AiReadingWordFact as q, InteractionKind as qt, AiBlankFact as r, NativeControlHint as rn, AiWritingFacts as rt, AiCoachingWord as s, ReadAloudLearnerResponse as sn, ItemGroup as st, ActivityAiPermissions as t, MultipleChoiceOption as tn, AiWordFact as tt, AiCritiqueField as u, RecordingRef as un, SequenceEntry as ut, AiDraftProblem as v, WrittenResponseRubric as vn, DraftContext as vt, AiDraftsRequest as w, XAPIContextActivities as wn, ItemFindingSeverity as wt, AiDraftType as x, XAPIActor as xn, DraftSeverity as xt, AiDraftSettings as y, WrittenResponseRubricCriterion as yn, DraftIssue as yt, AiGroupInput as z, GradingState as zn, FillInTheBlanksData as zt };
2611
- //# sourceMappingURL=ai-BYryFkF9.d.ts.map
2675
+ export { AiVerdict as $, MultipleChoiceData as $t, AiGapSelectFacts as A, XAPIStatement as An, ActivityType as At, AiHintRequest as B, GradingState as Bn, FillInTheBlanksLearnerResponse as Bt, AiDraftsCall as C, XAPIConfig as Cn, ItemFinding as Ct, AiFeature as D, XAPIObject as Dn, ActivityFeedback as Dt, AiExplanationRequest as E, XAPIError as En, ActivityDataMap as Et, AiGradingFacts as F, GradeRoutingReason as Fn, DictationEquivalence as Ft, AiProvenance as G, matchText as Gn, GapSelectLearnerResponse as Gt, AiMaterialFacts as H, TextMatchPolicy as Hn, GapSelectChoice as Ht, AiGradingJudgement as I, Grader as In, DictationLearnerResponse as It, AiRefusal as J, ItemOutcome as Jt, AiReadingFacts as K, InteractionEvent as Kt, AiGradingRequest as L, GraderConfiguration as Ln, DictationSlowMedia as Lt, AiGrade as M, CriterionScore as Mn, DeferredReason as Mt, AiGradedCriterion as N, GradeRecord as Nn, DeferredScoringPartial as Nt, AiFillInTheBlanksFacts as O, XAPIResult as On, ActivityMedia as Ot, AiGradingCriterionFact as P, GradeRouting as Pn, DictationData as Pt, AiTextResult as Q, MediaTrack as Qt, AiGradingRequestProblem as R, GraderKind as Rn, DictationTolerance as Rt, AiDrafts as S, XAPIActor as Sn, DraftValidationResult as St, AiDraftsRun as T, XAPIContextActivities as Tn, ActivityData as Tt, AiMultipleChoiceFacts as U, TextMatchResult as Un, GapSelectData as Ut, AiItemFacts as V, InlineCorrection as Vn, GapSelectBank as Vt, AiOptionFact as W, levenshteinDistance as Wn, GapSelectGap as Wt, AiSoundFact as X, LearnerResponseMap as Xt, AiRubricCriterionFact as Y, LearnerResponse as Yt, AiSupportedActivityType as Z, MediaPlaybackPolicy as Zt, AiDraftCaption as _, WrittenResponseData as _n, DraftComplete as _t, AiCoachingRequest as a, ReadAloudDimension as an, AiWritingFeedbackRequest as at, AiDraftSource as b, WrittenResponseRubricCriterion as bn, DraftNotComplete as bt, AiCriterionJudgement as c, ReadAloudSlowMedia as cn, MediaProgress as ct, AiCritiqueFinding as d, ScoringDetail as dn, SequenceSlot as dt, MultipleChoiceLearnerResponse as en, AiVideoDraft as et, AiCritiqueFindingResult as f, ScoringOutcome as fn, SequenceSlotGroup as ft, AiDictationFacts as g, ValidationResult as gn, TimelineCue as gt, AiCritiqueResult as h, ValidationError as hn, TimelineChapter as ht, AiCoaching as i, ReadAloudData as in, AiWritingFeedback as it, AiGeneratedDraft as j, XAPIVerbObject as jn, BlankConfig as jt, AiGapFact as k, XAPIScore as kn, ActivityResult as kt, AiCritique as l, RecordingBounds as ln, MediaTimeline as lt, AiCritiqueRequest as m, ScriptTurn as mn, StimulusKind as mt, AiActivityInput as n, MultipleChoiceOptionMedia as nn, AiWritingCorrection as nt, AiCoachingResult as o, ReadAloudDimensionWeight as on, AiWritingFeedbackResult as ot, AiCritiqueKind as p, ScoringResult as pn, Stimulus as pt, AiReadingWordFact as q, InteractionKind as qt, AiBlankFact as r, NativeControlHint as rn, AiWritingFacts as rt, AiCoachingWord as s, ReadAloudLearnerResponse as sn, ItemGroup as st, ActivityAiPermissions as t, MultipleChoiceOption as tn, AiWordFact as tt, AiCritiqueField as u, RecordingRef as un, SequenceEntry as ut, AiDraftProblem as v, WrittenResponseLearnerResponse as vn, DraftContext as vt, AiDraftsRequest as w, XAPIContext as wn, ItemFindingSeverity as wt, AiDraftType as x, WrittenResponseRubricLevel as xn, DraftSeverity as xt, AiDraftSettings as y, WrittenResponseRubric as yn, DraftIssue as yt, AiGroupInput as z, GraderUsage as zn, FillInTheBlanksData as zt };
2676
+ //# sourceMappingURL=ai-B1wYrqcB.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-B1wYrqcB.d.cts","names":[],"sources":["../src/scoring/text-match.ts","../src/types/grading.ts","../src/types/xapi.ts","../src/types/activity.ts","../src/types/authoring.ts","../src/types/item-group.ts","../src/types/ai.ts"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- //#region src/scoring/text-match.d.ts
2
1
  /**
3
2
  * Configurable free-text answer matching (R3.3).
4
3
  *
@@ -63,8 +62,6 @@ declare function levenshteinDistance(a: string, b: string, max: number): number;
63
62
  * semantics: `trim` + locale-insensitive `toLowerCase` + strict equality.
64
63
  */
65
64
  declare function matchText(input: string, accepted: string | readonly string[], policy?: TextMatchPolicy): TextMatchResult;
66
- //#endregion
67
- //#region src/types/grading.d.ts
68
65
  /**
69
66
  * Lifecycle of a deferred grade. A grade exists only in the `graded` state;
70
67
  * every other state means "no grade, and here is why" — which is precisely the
@@ -243,8 +240,6 @@ interface GradeRecord {
243
240
  /** Where `routeGrade` sent this grade, and why, when it was routed. */
244
241
  routing?: GradeRouting;
245
242
  }
246
- //#endregion
247
- //#region src/types/xapi.d.ts
248
243
  /**
249
244
  * An xAPI Activity object — the thing a statement is about.
250
245
  * This SDK only builds Activity-type objects (xAPI 1.0.3 §4.1.4.1).
@@ -402,8 +397,6 @@ interface XAPIError {
402
397
  /** Human-readable error description. */
403
398
  message: string;
404
399
  }
405
- //#endregion
406
- //#region src/types/activity.d.ts
407
400
  /**
408
401
  * Maps each ActivityType string to its corresponding data shape.
409
402
  *
@@ -477,6 +470,33 @@ interface ActivityMedia {
477
470
  * browser's own control bar, unlimited plays, free seeking and free speed.
478
471
  */
479
472
  playback?: MediaPlaybackPolicy;
473
+ /**
474
+ * Author-only: what the recording says, as plain text. For item generation,
475
+ * review and grading; never shown to the learner, and removed by `redact()`
476
+ * and `redactItemGroup()`, as a stimulus's `transcript` is. Meant for
477
+ * `audio` and `video`.
478
+ */
479
+ transcript?: string;
480
+ /**
481
+ * Author-only: the recording as turns, one per speaker, for casting voices
482
+ * and reading a dialogue. Removed by redaction, as `transcript` is. Where
483
+ * both are given, `transcript` is the text AI facts read; see
484
+ * {@link transcriptOf}.
485
+ */
486
+ script?: ScriptTurn[];
487
+ }
488
+ /**
489
+ * One speaker's turn in a recording's author-only `script`.
490
+ *
491
+ * `speaker` is a label the author chooses ("Anna", "Narrator", "Speaker 2"),
492
+ * the same one for every turn that voice speaks. Which voice reads it is the
493
+ * consuming application's choice; the SDK never names a voice.
494
+ */
495
+ interface ScriptTurn {
496
+ /** Non-empty after trimming; at most 60 characters. */
497
+ speaker: string;
498
+ /** What the speaker says. Non-empty after trimming. */
499
+ text: string;
480
500
  }
481
501
  /**
482
502
  * A hint to the browser's own control bar, emitted as a `controlsList` token.
@@ -574,6 +594,14 @@ interface MultipleChoiceOptionMedia {
574
594
  alt?: string;
575
595
  /** WebVTT captions for an audio option, rendered as a `<track>`. */
576
596
  captionsUrl?: string;
597
+ /**
598
+ * Author-only: what an audio option says. In a listening option this is the
599
+ * option's answer, so it is removed by `redact()` like every author-only
600
+ * field. See {@link ActivityMedia.transcript}.
601
+ */
602
+ transcript?: string;
603
+ /** Author-only: the option's recording as speaker turns. See {@link ActivityMedia.script}. */
604
+ script?: ScriptTurn[];
577
605
  }
578
606
  interface MultipleChoiceOption {
579
607
  /** Unique identifier for this option within the activity. */
@@ -602,6 +630,13 @@ interface MultipleChoiceData {
602
630
  id: string;
603
631
  /** Human-readable title used in xAPI statements and error boundaries. */
604
632
  title: string;
633
+ /**
634
+ * Optional instructions shown to the learner, as plain text: the task, read
635
+ * before the question and never part of it ("Choose the correct option to
636
+ * complete the conversation."). Every AI request about the item carries them.
637
+ * Instructions a run of questions shares go in an item group's text stimulus.
638
+ */
639
+ instructions?: string;
605
640
  /** The question stem presented to the learner, as plain text. */
606
641
  question: string;
607
642
  /**
@@ -739,6 +774,14 @@ interface GapSelectData {
739
774
  id: string;
740
775
  /** Human-readable title used in xAPI statements and error boundaries. */
741
776
  title: string;
777
+ /**
778
+ * Optional instructions shown to the learner, as plain text: the task, read
779
+ * before the passage and never part of it ("Complete the sentence. Use ONE
780
+ * word."). Every AI request about the item carries them. A `{{id}}`
781
+ * placeholder here is refused: gaps live in the passage only. Instructions
782
+ * a run of questions shares go in an item group's text stimulus.
783
+ */
784
+ instructions?: string;
742
785
  /** Passage text containing `{{gap_id}}` placeholders. */
743
786
  passage: string;
744
787
  /**
@@ -796,6 +839,14 @@ interface FillInTheBlanksData {
796
839
  id: string;
797
840
  /** Human-readable title used in xAPI statements and error boundaries. */
798
841
  title: string;
842
+ /**
843
+ * Optional instructions shown to the learner, as plain text: the task, read
844
+ * before the passage and never part of it ("Complete the sentence. Use ONE
845
+ * word."). Every AI request about the item carries them. A `{{id}}`
846
+ * placeholder here is refused: blanks live in the passage only. Instructions
847
+ * a run of questions shares go in an item group's text stimulus.
848
+ */
849
+ instructions?: string;
799
850
  /** Passage text containing `{{blank_id}}` placeholders. */
800
851
  passage: string;
801
852
  /**
@@ -1503,8 +1554,6 @@ interface InteractionEvent {
1503
1554
  /** Additional event-specific data. */
1504
1555
  payload: Record<string, unknown>;
1505
1556
  }
1506
- //#endregion
1507
- //#region src/types/authoring.d.ts
1508
1557
  /**
1509
1558
  * Why a draft is not an activity yet.
1510
1559
  *
@@ -1579,8 +1628,6 @@ interface DraftContext {
1579
1628
  */
1580
1629
  newId: () => string;
1581
1630
  }
1582
- //#endregion
1583
- //#region src/types/item-group.d.ts
1584
1631
  /** What a stimulus primarily is. Drives validation and layout, never scoring. */
1585
1632
  type StimulusKind = 'text' | 'audio' | 'video' | 'image' | 'mixed';
1586
1633
  /**
@@ -1590,8 +1637,8 @@ type StimulusKind = 'text' | 'audio' | 'video' | 'image' | 'mixed';
1590
1637
  * section alike, and needs no blueprint to exist.
1591
1638
  *
1592
1639
  * Learner-visible by definition: the point of a stimulus is that the learner
1593
- * reads or hears it. The one exception is `transcript`, an author asset that
1594
- * `redactItemGroup` removes.
1640
+ * reads or hears it. The exceptions are `transcript` and `script`, author
1641
+ * assets that `redactItemGroup` removes.
1595
1642
  */
1596
1643
  interface Stimulus {
1597
1644
  id: string;
@@ -1615,6 +1662,12 @@ interface Stimulus {
1615
1662
  * never shown to the learner. Removed by `redactItemGroup`.
1616
1663
  */
1617
1664
  transcript?: string;
1665
+ /**
1666
+ * Author-only: the recording as speaker turns, for casting voices. Removed
1667
+ * by `redactItemGroup`, as `transcript` is. A stimulus keeps both here, not
1668
+ * on its `media`; `transcriptOf` reads these first.
1669
+ */
1670
+ script?: ScriptTurn[];
1618
1671
  /** BCP 47 language tag of the material, when it differs from the items'. */
1619
1672
  locale?: string;
1620
1673
  /** Source credit, shown to the learner after the material. */
@@ -1793,8 +1846,6 @@ interface SequenceSlot<TItem = ActivityData> {
1793
1846
  /** Present when the slot comes from an item group. */
1794
1847
  group?: SequenceSlotGroup;
1795
1848
  }
1796
- //#endregion
1797
- //#region src/types/ai.d.ts
1798
1849
  /**
1799
1850
  * What an author allows AI to do for one item. Absent, or a feature left out,
1800
1851
  * leaves the choice to the deployment. `false` switches a feature off for this
@@ -1862,6 +1913,11 @@ interface AiOptionFact {
1862
1913
  }
1863
1914
  interface AiMultipleChoiceFacts extends AiFactsBase {
1864
1915
  activityType: 'multiple-choice';
1916
+ /**
1917
+ * The item's instructions, when it has any: the task the learner reads
1918
+ * before the question. They say what to do, and are never part of the text answered.
1919
+ */
1920
+ instructions?: string;
1865
1921
  question: string;
1866
1922
  mode: 'single' | 'multi';
1867
1923
  options: AiOptionFact[];
@@ -1884,6 +1940,11 @@ interface AiBlankFact {
1884
1940
  }
1885
1941
  interface AiFillInTheBlanksFacts extends AiFactsBase {
1886
1942
  activityType: 'fill-in-the-blanks';
1943
+ /**
1944
+ * The item's instructions, when it has any: the task the learner reads
1945
+ * before the passage. They say what to do, and are never part of the text answered.
1946
+ */
1947
+ instructions?: string;
1887
1948
  /** The passage, each blank written as `[1]`, `[2]`… in passage order. */
1888
1949
  passage: string;
1889
1950
  blanks: AiBlankFact[];
@@ -1906,6 +1967,11 @@ interface AiGapFact {
1906
1967
  }
1907
1968
  interface AiGapSelectFacts extends AiFactsBase {
1908
1969
  activityType: 'gap-select';
1970
+ /**
1971
+ * The item's instructions, when it has any: the task the learner reads
1972
+ * before the passage. They say what to do, and are never part of the text answered.
1973
+ */
1974
+ instructions?: string;
1909
1975
  /** The passage, each gap written as `[1]`, `[2]`… in passage order. */
1910
1976
  passage: string;
1911
1977
  gaps: AiGapFact[];
@@ -2606,6 +2672,5 @@ interface AiVideoDraft {
2606
2672
  /** What `critiqueItemGroupDraft` says of it. */
2607
2673
  findings: ItemFinding[];
2608
2674
  }
2609
- //#endregion
2610
- export { AiVerdict as $, MultipleChoiceData as $t, AiGapSelectFacts as A, XAPIVerbObject as An, ActivityType as At, AiHintRequest as B, InlineCorrection as Bn, FillInTheBlanksLearnerResponse as Bt, AiDraftsCall as C, XAPIContext as Cn, ItemFinding as Ct, AiFeature as D, XAPIResult as Dn, ActivityFeedback as Dt, AiExplanationRequest as E, XAPIObject as En, ActivityDataMap as Et, AiGradingFacts as F, Grader as Fn, DictationEquivalence as Ft, AiProvenance as G, GapSelectLearnerResponse as Gt, AiMaterialFacts as H, TextMatchResult as Hn, GapSelectChoice as Ht, AiGradingJudgement as I, GraderConfiguration as In, DictationLearnerResponse as It, AiRefusal as J, ItemOutcome as Jt, AiReadingFacts as K, InteractionEvent as Kt, AiGradingRequest as L, GraderKind as Ln, DictationSlowMedia as Lt, AiGrade as M, GradeRecord as Mn, DeferredReason as Mt, AiGradedCriterion as N, GradeRouting as Nn, DeferredScoringPartial as Nt, AiFillInTheBlanksFacts as O, XAPIScore as On, ActivityMedia as Ot, AiGradingCriterionFact as P, GradeRoutingReason as Pn, DictationData as Pt, AiTextResult as Q, MediaTrack as Qt, AiGradingRequestProblem as R, GraderUsage as Rn, DictationTolerance as Rt, AiDrafts as S, XAPIConfig as Sn, DraftValidationResult as St, AiDraftsRun as T, XAPIError as Tn, ActivityData as Tt, AiMultipleChoiceFacts as U, levenshteinDistance as Un, GapSelectData as Ut, AiItemFacts as V, TextMatchPolicy as Vn, GapSelectBank as Vt, AiOptionFact as W, matchText as Wn, GapSelectGap as Wt, AiSoundFact as X, LearnerResponseMap as Xt, AiRubricCriterionFact as Y, LearnerResponse as Yt, AiSupportedActivityType as Z, MediaPlaybackPolicy as Zt, AiDraftCaption as _, WrittenResponseLearnerResponse as _n, DraftComplete as _t, AiCoachingRequest as a, ReadAloudDimension as an, AiWritingFeedbackRequest as at, AiDraftSource as b, WrittenResponseRubricLevel as bn, DraftNotComplete as bt, AiCriterionJudgement as c, ReadAloudSlowMedia as cn, MediaProgress as ct, AiCritiqueFinding as d, ScoringDetail as dn, SequenceSlot as dt, MultipleChoiceLearnerResponse as en, AiVideoDraft as et, AiCritiqueFindingResult as f, ScoringOutcome as fn, SequenceSlotGroup as ft, AiDictationFacts as g, WrittenResponseData as gn, TimelineCue as gt, AiCritiqueResult as h, ValidationResult as hn, TimelineChapter as ht, AiCoaching as i, ReadAloudData as in, AiWritingFeedback as it, AiGeneratedDraft as j, CriterionScore as jn, BlankConfig as jt, AiGapFact as k, XAPIStatement as kn, ActivityResult as kt, AiCritique as l, RecordingBounds as ln, MediaTimeline as lt, AiCritiqueRequest as m, ValidationError as mn, StimulusKind as mt, AiActivityInput as n, MultipleChoiceOptionMedia as nn, AiWritingCorrection as nt, AiCoachingResult as o, ReadAloudDimensionWeight as on, AiWritingFeedbackResult as ot, AiCritiqueKind as p, ScoringResult as pn, Stimulus as pt, AiReadingWordFact as q, InteractionKind as qt, AiBlankFact as r, NativeControlHint as rn, AiWritingFacts as rt, AiCoachingWord as s, ReadAloudLearnerResponse as sn, ItemGroup as st, ActivityAiPermissions as t, MultipleChoiceOption as tn, AiWordFact as tt, AiCritiqueField as u, RecordingRef as un, SequenceEntry as ut, AiDraftProblem as v, WrittenResponseRubric as vn, DraftContext as vt, AiDraftsRequest as w, XAPIContextActivities as wn, ItemFindingSeverity as wt, AiDraftType as x, XAPIActor as xn, DraftSeverity as xt, AiDraftSettings as y, WrittenResponseRubricCriterion as yn, DraftIssue as yt, AiGroupInput as z, GradingState as zn, FillInTheBlanksData as zt };
2611
- //# sourceMappingURL=ai-BYryFkF9.d.cts.map
2675
+ export { AiVerdict as $, MultipleChoiceData as $t, AiGapSelectFacts as A, XAPIStatement as An, ActivityType as At, AiHintRequest as B, GradingState as Bn, FillInTheBlanksLearnerResponse as Bt, AiDraftsCall as C, XAPIConfig as Cn, ItemFinding as Ct, AiFeature as D, XAPIObject as Dn, ActivityFeedback as Dt, AiExplanationRequest as E, XAPIError as En, ActivityDataMap as Et, AiGradingFacts as F, GradeRoutingReason as Fn, DictationEquivalence as Ft, AiProvenance as G, matchText as Gn, GapSelectLearnerResponse as Gt, AiMaterialFacts as H, TextMatchPolicy as Hn, GapSelectChoice as Ht, AiGradingJudgement as I, Grader as In, DictationLearnerResponse as It, AiRefusal as J, ItemOutcome as Jt, AiReadingFacts as K, InteractionEvent as Kt, AiGradingRequest as L, GraderConfiguration as Ln, DictationSlowMedia as Lt, AiGrade as M, CriterionScore as Mn, DeferredReason as Mt, AiGradedCriterion as N, GradeRecord as Nn, DeferredScoringPartial as Nt, AiFillInTheBlanksFacts as O, XAPIResult as On, ActivityMedia as Ot, AiGradingCriterionFact as P, GradeRouting as Pn, DictationData as Pt, AiTextResult as Q, MediaTrack as Qt, AiGradingRequestProblem as R, GraderKind as Rn, DictationTolerance as Rt, AiDrafts as S, XAPIActor as Sn, DraftValidationResult as St, AiDraftsRun as T, XAPIContextActivities as Tn, ActivityData as Tt, AiMultipleChoiceFacts as U, TextMatchResult as Un, GapSelectData as Ut, AiItemFacts as V, InlineCorrection as Vn, GapSelectBank as Vt, AiOptionFact as W, levenshteinDistance as Wn, GapSelectGap as Wt, AiSoundFact as X, LearnerResponseMap as Xt, AiRubricCriterionFact as Y, LearnerResponse as Yt, AiSupportedActivityType as Z, MediaPlaybackPolicy as Zt, AiDraftCaption as _, WrittenResponseData as _n, DraftComplete as _t, AiCoachingRequest as a, ReadAloudDimension as an, AiWritingFeedbackRequest as at, AiDraftSource as b, WrittenResponseRubricCriterion as bn, DraftNotComplete as bt, AiCriterionJudgement as c, ReadAloudSlowMedia as cn, MediaProgress as ct, AiCritiqueFinding as d, ScoringDetail as dn, SequenceSlot as dt, MultipleChoiceLearnerResponse as en, AiVideoDraft as et, AiCritiqueFindingResult as f, ScoringOutcome as fn, SequenceSlotGroup as ft, AiDictationFacts as g, ValidationResult as gn, TimelineCue as gt, AiCritiqueResult as h, ValidationError as hn, TimelineChapter as ht, AiCoaching as i, ReadAloudData as in, AiWritingFeedback as it, AiGeneratedDraft as j, XAPIVerbObject as jn, BlankConfig as jt, AiGapFact as k, XAPIScore as kn, ActivityResult as kt, AiCritique as l, RecordingBounds as ln, MediaTimeline as lt, AiCritiqueRequest as m, ScriptTurn as mn, StimulusKind as mt, AiActivityInput as n, MultipleChoiceOptionMedia as nn, AiWritingCorrection as nt, AiCoachingResult as o, ReadAloudDimensionWeight as on, AiWritingFeedbackResult as ot, AiCritiqueKind as p, ScoringResult as pn, Stimulus as pt, AiReadingWordFact as q, InteractionKind as qt, AiBlankFact as r, NativeControlHint as rn, AiWritingFacts as rt, AiCoachingWord as s, ReadAloudLearnerResponse as sn, ItemGroup as st, ActivityAiPermissions as t, MultipleChoiceOption as tn, AiWordFact as tt, AiCritiqueField as u, RecordingRef as un, SequenceEntry as ut, AiDraftProblem as v, WrittenResponseLearnerResponse as vn, DraftContext as vt, AiDraftsRequest as w, XAPIContext as wn, ItemFindingSeverity as wt, AiDraftType as x, WrittenResponseRubricLevel as xn, DraftSeverity as xt, AiDraftSettings as y, WrittenResponseRubric as yn, DraftIssue as yt, AiGroupInput as z, GraderUsage as zn, FillInTheBlanksData as zt };
2676
+ //# sourceMappingURL=ai-B1wYrqcB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-B1wYrqcB.d.ts","names":[],"sources":["../src/scoring/text-match.ts","../src/types/grading.ts","../src/types/xapi.ts","../src/types/activity.ts","../src/types/authoring.ts","../src/types/item-group.ts","../src/types/ai.ts"],"mappings":"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"}
package/dist/ai-check.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_ai_writing = require("./ai-writing-Cen7-3qs.cjs");
3
- const require_scoring = require("./scoring-lKQVYsxy.cjs");
4
- //#region src/ai-check/cases.ts
2
+ const require_ai_writing = require("./ai-writing-DrPTV3R2.cjs");
3
+ const require_scoring = require("./scoring-CtkCFyFT.cjs");
4
+ // src/ai-check/cases.ts
5
5
  /**
6
6
  * The items the cases are built from. Small, ordinary language-course content
7
7
  * — and deliberately awkward in the places a model slips:
@@ -18,6 +18,8 @@ const require_scoring = require("./scoring-lKQVYsxy.cjs");
18
18
  * - questions in item groups: a reading passage that prints a question's
19
19
  * answer, which a hint must point to without quoting, and a run of blanks
20
20
  * whose instructions only the group states;
21
+ * - the same blank served alone, as an adaptive test serves it, whose task
22
+ * only its own instructions state;
21
23
  * - essays to grade on a rubric of three criteria, two judged on levels and
22
24
  * one on a score, so a grade that drops a criterion or leaves a scale is
23
25
  * caught.
@@ -181,6 +183,12 @@ const formationPart = {
181
183
  },
182
184
  items: [formation]
183
185
  };
186
+ /** The same blank served alone, as an adaptive test serves it: the task is in its own instructions. */
187
+ const formationAlone = {
188
+ ...formation,
189
+ id: "ai-check-formation-alone",
190
+ instructions: "Use the word in capitals at the end of the sentence to form a word that fits the gap."
191
+ };
184
192
  const weekend = {
185
193
  schemaVersion: "1.0",
186
194
  type: "written-response",
@@ -706,6 +714,7 @@ function aiCheckCases() {
706
714
  hintCase("gap-hint-2", "Asked again with the first gap wrong", landscape, picked({ g1: "campo" }), ["Piensa en la forma del terreno."]),
707
715
  hintCase("mc-reading-hint", "Has not answered a question whose answer its group's passage prints", springTides, chose([]), [], tides),
708
716
  hintCase("fib-formation-hint", "A word-formation blank, under the instructions its group gives", formation, typed({}), [], formationPart),
717
+ hintCase("fib-instructions-hint", "The same blank served alone, under its own instructions", formationAlone, typed({})),
709
718
  writingCase("writing-mistakes", "A first draft with tense, article and agreement mistakes", "Last weekend I go to the market and buyed a apple. My friends was there too, so we don't go home early. Then I go to the cinema."),
710
719
  writingCase("writing-clean", "A first draft with no mistakes to correct", "Last weekend I went to the market and bought an apple. My friends were there too, so we stayed until the evening. Then we went to the cinema."),
711
720
  writingCase("writing-revised", "A second draft that fixed some mistakes", "Last weekend I went to the market and bought a apple. My friends was there too, so we didn't go home early.", ["Check your past tenses: \"go\" and \"buyed\" should be past forms."]),
@@ -793,8 +802,7 @@ function aiCheckCases() {
793
802
  gradingCase("grading-in-spanish", "The essay with mistakes, with comments asked for in Spanish", "Last weekend I go to the market and buyed a apple. My friends was there too, so we don't go home early. Then I go to the cinema.", { learnerLocale: "es" })
794
803
  ];
795
804
  }
796
- //#endregion
797
- //#region src/ai-check/index.ts
805
+ // src/ai-check/index.ts
798
806
  /**
799
807
  * A test kit for the prompts behind your AI ports.
800
808
  *
@@ -1037,7 +1045,6 @@ function formatAiCheckReport(report) {
1037
1045
  }
1038
1046
  return lines.join("\n");
1039
1047
  }
1040
- //#endregion
1041
1048
  exports.aiCheckCases = aiCheckCases;
1042
1049
  exports.formatAiCheckReport = formatAiCheckReport;
1043
1050
  exports.runAiCheck = runAiCheck;