@intellectif/lk-core 1.12.0 → 1.14.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.
- package/CHANGELOG.md +26 -0
- package/README.md +1 -1
- package/dist/ai-check.cjs +2 -2
- package/dist/ai-check.d.cts +1 -1
- package/dist/ai-check.d.ts +1 -1
- package/dist/ai-check.js +2 -2
- package/dist/{ai-Cu17iVHa.d.cts → ai-mC-5XhBc.d.cts} +212 -5
- package/dist/ai-mC-5XhBc.d.cts.map +1 -0
- package/dist/{ai-Cu17iVHa.d.ts → ai-mC-5XhBc.d.ts} +212 -5
- package/dist/ai-mC-5XhBc.d.ts.map +1 -0
- package/dist/{ai-writing-gO4GRscd.cjs → ai-writing-Bm2TUWQ-.cjs} +24 -5
- package/dist/ai-writing-Bm2TUWQ-.cjs.map +1 -0
- package/dist/{ai-writing-BgeeCOl7.js → ai-writing-D3oREPsp.js} +24 -5
- package/dist/ai-writing-D3oREPsp.js.map +1 -0
- package/dist/{index-BTZWUwOe.d.ts → index-2UQ5v6NZ.d.ts} +2 -2
- package/dist/{index-BTZWUwOe.d.ts.map → index-2UQ5v6NZ.d.ts.map} +1 -1
- package/dist/{index-B1zEN1Ur.d.ts → index-BudO4ES2.d.ts} +2 -2
- package/dist/{index-B1zEN1Ur.d.ts.map → index-BudO4ES2.d.ts.map} +1 -1
- package/dist/{index-BfUyl6ml.d.ts → index-CFKxHXAY.d.ts} +33 -4
- package/dist/index-CFKxHXAY.d.ts.map +1 -0
- package/dist/{index-DjZ1vIVg.d.cts → index-CagMlF4b.d.cts} +33 -4
- package/dist/index-CagMlF4b.d.cts.map +1 -0
- package/dist/{index-CpamCGyZ.d.cts → index-CqmNcMFM.d.cts} +2 -2
- package/dist/{index-CpamCGyZ.d.cts.map → index-CqmNcMFM.d.cts.map} +1 -1
- package/dist/{index-DYnacygI.d.cts → index-MgPVCiSJ.d.cts} +2 -2
- package/dist/{index-DYnacygI.d.cts.map → index-MgPVCiSJ.d.cts.map} +1 -1
- package/dist/index.cjs +17 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +90 -13
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +90 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -8
- package/dist/index.js.map +1 -1
- package/dist/{item-group-CnlBLM9Z.js → item-group-BIl1ZJHg.js} +55 -22
- package/dist/item-group-BIl1ZJHg.js.map +1 -0
- package/dist/{item-group-CRZNJ08j.cjs → item-group-DOk562oI.cjs} +55 -22
- package/dist/item-group-DOk562oI.cjs.map +1 -0
- package/dist/{registry-BClnM5V3.js → registry-CroAI5nc.js} +898 -8
- package/dist/registry-CroAI5nc.js.map +1 -0
- package/dist/{registry-DgLcT4rZ.cjs → registry-Dw19lNo2.cjs} +933 -7
- package/dist/registry-Dw19lNo2.cjs.map +1 -0
- package/dist/{schemas-BA8Y8z-S.cjs → schemas-CEv2otNw.cjs} +3 -3
- package/dist/{schemas-BA8Y8z-S.cjs.map → schemas-CEv2otNw.cjs.map} +1 -1
- package/dist/{schemas-VZnN68qG.js → schemas-COw7muXH.js} +3 -3
- package/dist/{schemas-VZnN68qG.js.map → schemas-COw7muXH.js.map} +1 -1
- package/dist/schemas.cjs +3 -3
- package/dist/schemas.d.cts +2 -2
- package/dist/schemas.d.ts +2 -2
- package/dist/schemas.js +3 -3
- package/dist/{scoring-BxDiwN7I.js → scoring-BxvOhHE0.js} +2 -2
- package/dist/{scoring-BxDiwN7I.js.map → scoring-BxvOhHE0.js.map} +1 -1
- package/dist/{scoring-Cfu_2qQ1.cjs → scoring-EpNBJ8Fs.cjs} +2 -2
- package/dist/{scoring-Cfu_2qQ1.cjs.map → scoring-EpNBJ8Fs.cjs.map} +1 -1
- package/dist/scoring.cjs +2 -2
- package/dist/scoring.d.cts +2 -2
- package/dist/scoring.d.ts +2 -2
- package/dist/scoring.js +2 -2
- package/dist/{xapi-BhROEuZQ.cjs → xapi-C-cQgWRX.cjs} +2 -2
- package/dist/{xapi-BhROEuZQ.cjs.map → xapi-C-cQgWRX.cjs.map} +1 -1
- package/dist/{xapi-BitXmAYB.js → xapi-DHHm7Os9.js} +2 -2
- package/dist/{xapi-BitXmAYB.js.map → xapi-DHHm7Os9.js.map} +1 -1
- package/dist/xapi.cjs +1 -1
- package/dist/xapi.d.cts +1 -1
- package/dist/xapi.d.ts +1 -1
- package/dist/xapi.js +1 -1
- package/package.json +1 -1
- package/vectors/scoring.json +1767 -1
- package/vectors/validation.json +1458 -1
- package/dist/ai-Cu17iVHa.d.cts.map +0 -1
- package/dist/ai-Cu17iVHa.d.ts.map +0 -1
- package/dist/ai-writing-BgeeCOl7.js.map +0 -1
- package/dist/ai-writing-gO4GRscd.cjs.map +0 -1
- package/dist/index-BfUyl6ml.d.ts.map +0 -1
- package/dist/index-DjZ1vIVg.d.cts.map +0 -1
- package/dist/item-group-CRZNJ08j.cjs.map +0 -1
- package/dist/item-group-CnlBLM9Z.js.map +0 -1
- package/dist/registry-BClnM5V3.js.map +0 -1
- package/dist/registry-DgLcT4rZ.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @intellectif/lk-core
|
|
2
2
|
|
|
3
|
+
## 1.14.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#172](https://github.com/intellectif/learning-kit/pull/172) [`5fcbfb4`](https://github.com/intellectif/learning-kit/commit/5fcbfb41bc99f9e8d9245fddccedf48fea3b1ba3) Thanks [@diego28e](https://github.com/diego28e)! - **Mark the Words: the learner marks the words a task asks for in a text — every past-tense verb, the linkers — with `<MarkTheWords>` to draw it**
|
|
8
|
+
|
|
9
|
+
**Action required:** none for content and grades. Install lk-core 1.14.0 with lk-react 23.11.0. **No grade changes:** every stored grade and validation result replays as before. Type-level additions: `mark-the-words` joins `BUILT_IN_ACTIVITY_TYPES` and `INTERACTIVE_VIDEO_ITEM_TYPES`, and `RedactedMarkTheWordsData` joins `RedactedActivity`, so a `switch` or `Record` exhaustive over one of them needs an entry. A host that registered its own `mark-the-words` type must rename it.
|
|
10
|
+
|
|
11
|
+
- **lk-core:** the `mark-the-words` activity type — `MarkTheWordsData` with a `text` and `targets`, each a quote of one or more words with an `occurrence` where the words repeat. Words are cut by the SDK's own `lk-words@1` (`markableWords`), the same in every runtime, and a response names marked words by position (`marked`). A target counts when all its words are marked; each wrong mark costs a target's worth, never below 0. Redaction keeps the text and removes the targets entirely. Draft checks under `mw_*` codes, three critic findings (`mw_targets_dense` warns when marking every word would score), the xAPI `choice` interaction, `markTheWordsFromMarkup` for starred text such as H5P's, and frozen grade and validation vectors. A video quiz may hold one.
|
|
12
|
+
- **lk-react:** `<MarkTheWords>` (also `@intellectif/lk-react/components/MarkTheWords`): the text as written, each word an option of a multi-select listbox with one tab stop — arrow keys, Home and End move, Space or Enter marks. After a check each word is marked right, wrong, or missed where the delivery policy shows answers, in its name as well as its colour. `<ActivitySequence>`, `<ActivityPreview>` and `<InteractiveVideo>` draw it. New strings: `markWordsLabel`, `markCount`, `markCorrect`, `markWrong`, `markMissed`. New class hooks: `.lk-mw` and its parts. See https://github.com/intellectif/learning-kit/blob/main/docs/authoring.md#mark-the-words--select-the-words-a-task-asks-for-114
|
|
13
|
+
- Not yet: AI explanations, hints, drafts and variants for a mark-the-words item.
|
|
14
|
+
|
|
15
|
+
## 1.13.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- [#170](https://github.com/intellectif/learning-kit/pull/170) [`5697510`](https://github.com/intellectif/learning-kit/commit/569751058c8bb85015c75f7f59a7d3a1f827f7de) Thanks [@diego28e](https://github.com/diego28e)! - **Matching: prompts matched to a shared list — headings to paragraphs, statements to people, sentence beginnings to endings — with `<Matching>` to draw it**
|
|
20
|
+
|
|
21
|
+
**Action required:** none for content and grades. Install lk-core 1.13.0 with lk-react 23.10.0. **No grade changes:** every stored grade and validation result replays as before. Two type-level additions can need a line of code: `matching` joins `BUILT_IN_ACTIVITY_TYPES`, `INTERACTIVE_VIDEO_ITEM_TYPES` and `READING_ROUTE_ITEM_TYPES`, and `RedactedMatchingData` joins `RedactedActivity`, so a `switch` or `Record` that is exhaustive over one of them needs a `matching` entry. A host that registered an activity type of its own named `matching` must rename it before upgrading: `registerActivityType` refuses a second descriptor for a built-in type.
|
|
22
|
+
|
|
23
|
+
- **lk-core:** the `matching` activity type — `MatchingData` with `prompts`, a shared `options` list (each option a `label` such as "A" or "iv", and its text), an `optionsTitle`, `optionUse: 'once' | 'many'` and a seeded `shuffleOptions`. Scored per prompt by option id, `partial` or `all-or-nothing`; an unanswered prompt is `incorrect-omission`. Redaction keeps the list and the prompts and withholds each prompt's `correctOptionId` (`RedactedMatchingData`). Draft checks under `mt_*` codes, four critic findings (`mt_no_distractor` among them), the xAPI `matching` interaction, and frozen grade and validation vectors.
|
|
24
|
+
- **lk-core, reading routes:** a matching item's prompts are route questions, one per `partId`. The matching strategies — headings, information, features, sentence endings, multiple matching, gapped text and cross-text — accept it, and their elimination step points at the shared list. Route messages now name a part by its kind: "Gap", "Blank" or "Prompt".
|
|
25
|
+
- **lk-core, interactive video:** a video quiz may hold a matching question.
|
|
26
|
+
- **lk-react:** `<Matching>` (also `@intellectif/lk-react/components/Matching`): the list under its title, a native selector per prompt, and — with `optionUse: 'once'` — an option picked again moves from the prompt that held it, announced to screen readers. After a check it marks each prompt and shows the right option beside a wrong one where the delivery policy shows answers. `<ActivitySequence>`, `<ActivityPreview>`, `<ReadingRoute>` and `<InteractiveVideo>` draw it, and the sequence's seed guard covers `shuffleOptions`. New strings: `matchPlaceholder`, `matchOptionsLabel`, `matchOptionUsed`, `matchMoved`, `matchCorrectAnswer`. New class hooks: `.lk-mt` and its parts. See https://github.com/intellectif/learning-kit/blob/main/docs/authoring.md#matching--prompts-matched-to-a-shared-list-113
|
|
27
|
+
- Not yet: AI explanations, hints, drafts and variants for a matching item; `aiSupports('matching', …)` is `false`.
|
|
28
|
+
|
|
3
29
|
## 1.12.0
|
|
4
30
|
|
|
5
31
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ npm install @intellectif/lk-core
|
|
|
14
14
|
|
|
15
15
|
## What's in the box
|
|
16
16
|
|
|
17
|
-
- **Activity schemas** for `multiple-choice`, `fill-in-the-blanks`, `written-response`, `gap-select`, `dictation` and `
|
|
17
|
+
- **Activity schemas** for `multiple-choice`, `fill-in-the-blanks`, `written-response`, `gap-select`, `dictation`, `read-aloud`, `speaking-response`, `matching` and `mark-the-words`, with semantic refinements (e.g. *at least one correct option*, *single-select ⇒ exactly one correct*, *passage ↔ blank-id bijection*, *image/embed require `alt`*, *a dictation title never contains its whole transcript as words*, *a read-aloud's text leaves at least one word once punctuation is folded away*). Loose at every level, so your sidecar fields survive validation.
|
|
18
18
|
- **Interactive video** — an item group whose stimulus is a video can carry a `timeline`: quizzes at moments of the video, each holding questions of that group. The schema places every question in exactly one quiz, keeps the five embeddable types honest and refuses a dictation with no recording of its own; `readMediaProgress` reads a stored resume point without trusting it, and `composeTimelineScore` folds the video's questions into an attempt's score. See [docs/interactive-video.md](https://github.com/intellectif/learning-kit/blob/main/docs/interactive-video.md).
|
|
19
19
|
- **`validateActivity(type, data)`** — the authoritative runtime validator. Returns a typed `{ success, data }` or a structured `{ success: false, errors[] }`, and **throws `UnknownActivityTypeError` if `type` is not registered** — so guard it when validating a content bank that may carry types this build does not know. `validateItemGroup(data)` is the equivalent for a `Stimulus` + `ItemGroup` container, which `validateActivity` cannot take.
|
|
20
20
|
- **`validateDraft(type, draft)`** — for editors. Reports `complete`, `incomplete` (something not written yet) or `invalid` (something wrong), each issue with a `severity` and a `code` — documented for every problem the checks recognise — and deliberately no `success` boolean to misread. Stricter than `validateActivity`, never looser. **`createDraft(type, { newId })`** returns an empty draft to start from; a multiple-choice draft marks no option correct.
|
package/dist/ai-check.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_ai_writing = require("./ai-writing-
|
|
3
|
-
const require_scoring = require("./scoring-
|
|
2
|
+
const require_ai_writing = require("./ai-writing-Bm2TUWQ-.cjs");
|
|
3
|
+
const require_scoring = require("./scoring-EpNBJ8Fs.cjs");
|
|
4
4
|
// src/ai-check/cases.ts
|
|
5
5
|
/**
|
|
6
6
|
* The items the cases are built from. Small, ordinary language-course content
|
package/dist/ai-check.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ct as AiWritingFeedback, E as AiExplanationRequest, L as AiGradingJudgement, R as AiGradingRequest, S as AiDrafts, V as AiHintRequest, Y as AiRefusal, a as AiCoachingRequest, gt as AiVariantsRequest, ht as AiVariants, i as AiCoaching, it as AiTextResult, l as AiCritique, m as AiCritiqueRequest, w as AiDraftsRequest, wt as AiWritingFeedbackRequest } from "./ai-
|
|
1
|
+
import { Ct as AiWritingFeedback, E as AiExplanationRequest, L as AiGradingJudgement, R as AiGradingRequest, S as AiDrafts, V as AiHintRequest, Y as AiRefusal, a as AiCoachingRequest, gt as AiVariantsRequest, ht as AiVariants, i as AiCoaching, it as AiTextResult, l as AiCritique, m as AiCritiqueRequest, w as AiDraftsRequest, wt as AiWritingFeedbackRequest } from "./ai-mC-5XhBc.cjs";
|
|
2
2
|
/**
|
|
3
3
|
* One call to make against a host's port, and what a learner was looking at
|
|
4
4
|
* when the SDK would have made it.
|
package/dist/ai-check.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ct as AiWritingFeedback, E as AiExplanationRequest, L as AiGradingJudgement, R as AiGradingRequest, S as AiDrafts, V as AiHintRequest, Y as AiRefusal, a as AiCoachingRequest, gt as AiVariantsRequest, ht as AiVariants, i as AiCoaching, it as AiTextResult, l as AiCritique, m as AiCritiqueRequest, w as AiDraftsRequest, wt as AiWritingFeedbackRequest } from "./ai-
|
|
1
|
+
import { Ct as AiWritingFeedback, E as AiExplanationRequest, L as AiGradingJudgement, R as AiGradingRequest, S as AiDrafts, V as AiHintRequest, Y as AiRefusal, a as AiCoachingRequest, gt as AiVariantsRequest, ht as AiVariants, i as AiCoaching, it as AiTextResult, l as AiCritique, m as AiCritiqueRequest, w as AiDraftsRequest, wt as AiWritingFeedbackRequest } from "./ai-mC-5XhBc.js";
|
|
2
2
|
/**
|
|
3
3
|
* One call to make against a host's port, and what a learner was looking at
|
|
4
4
|
* when the SDK would have made it.
|
package/dist/ai-check.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as checkAiCoaching, D as checkAiCritique, E as aiCritiqueRequest, Q as aiCoachingRequest, b as aiDraftsRequest, c as aiVariantsRequest, f as aiGradingRequest, it as aiExplanationRequest, l as checkAiVariants, lt as checkAiExplanation, m as checkAiGrading, n as checkAiWritingFeedback, ot as aiHintRequest, t as aiWritingFeedbackRequest, ut as checkAiHint, x as checkAiDrafts } from "./ai-writing-
|
|
2
|
-
import { s as gradeReadAloud } from "./scoring-
|
|
1
|
+
import { $ as checkAiCoaching, D as checkAiCritique, E as aiCritiqueRequest, Q as aiCoachingRequest, b as aiDraftsRequest, c as aiVariantsRequest, f as aiGradingRequest, it as aiExplanationRequest, l as checkAiVariants, lt as checkAiExplanation, m as checkAiGrading, n as checkAiWritingFeedback, ot as aiHintRequest, t as aiWritingFeedbackRequest, ut as checkAiHint, x as checkAiDrafts } from "./ai-writing-D3oREPsp.js";
|
|
2
|
+
import { s as gradeReadAloud } from "./scoring-BxvOhHE0.js";
|
|
3
3
|
// src/ai-check/cases.ts
|
|
4
4
|
/**
|
|
5
5
|
* The items the cases are built from. Small, ordinary language-course content
|
|
@@ -420,6 +420,8 @@ interface ActivityDataMap {
|
|
|
420
420
|
dictation: DictationData;
|
|
421
421
|
'read-aloud': ReadAloudData;
|
|
422
422
|
'speaking-response': SpeakingResponseData;
|
|
423
|
+
matching: MatchingData;
|
|
424
|
+
'mark-the-words': MarkTheWordsData;
|
|
423
425
|
}
|
|
424
426
|
/**
|
|
425
427
|
* The set of activity types supported by learning-kit. Derived from
|
|
@@ -833,6 +835,170 @@ interface GapSelectData {
|
|
|
833
835
|
/** What an author allows AI to do for this item: see {@link ActivityAiPermissions}. */
|
|
834
836
|
ai?: ActivityAiPermissions;
|
|
835
837
|
}
|
|
838
|
+
/**
|
|
839
|
+
* One entry of a matching item's shared list: a heading, a person, a
|
|
840
|
+
* paragraph, a sentence ending.
|
|
841
|
+
*/
|
|
842
|
+
interface MatchingOption {
|
|
843
|
+
/** Unique identifier within the item. */
|
|
844
|
+
id: string;
|
|
845
|
+
/**
|
|
846
|
+
* The short key the learner answers with, as on the paper: `"A"`, `"iv"`.
|
|
847
|
+
* Shown before the text. Optional; unique within the item when given.
|
|
848
|
+
*/
|
|
849
|
+
label?: string;
|
|
850
|
+
/**
|
|
851
|
+
* What the learner reads: `"The cost of the new lines"`, `"Mary Lee"`. For a
|
|
852
|
+
* list that is only letters (which paragraph contains…), the letter itself.
|
|
853
|
+
*/
|
|
854
|
+
text: string;
|
|
855
|
+
}
|
|
856
|
+
/** One statement, question or sentence beginning the learner matches to an option. */
|
|
857
|
+
interface MatchingPrompt {
|
|
858
|
+
/** Unique identifier within the item. */
|
|
859
|
+
id: string;
|
|
860
|
+
/** What the learner reads, as plain text. */
|
|
861
|
+
text: string;
|
|
862
|
+
/** The `id` of the one option that answers it. */
|
|
863
|
+
correctOptionId: string;
|
|
864
|
+
/** Optional feedback shown beside this prompt after submission. */
|
|
865
|
+
feedback?: string;
|
|
866
|
+
}
|
|
867
|
+
/**
|
|
868
|
+
* Data contract for a Matching activity: several prompts, each matched to one
|
|
869
|
+
* entry of a shared list of options.
|
|
870
|
+
*
|
|
871
|
+
* It is the shape of the exam reading tasks that match: headings to
|
|
872
|
+
* paragraphs, statements to the paragraph or the person they come from,
|
|
873
|
+
* sentence beginnings to their endings, questions to the section that answers
|
|
874
|
+
* them. One list serves every prompt, and it is usually longer than the
|
|
875
|
+
* prompts, so the spare options are the distractors.
|
|
876
|
+
*
|
|
877
|
+
* It is **not** a {@link GapSelectData} with a bank, though both score a
|
|
878
|
+
* choice by identity. A matching prompt is a statement of its own, not a gap
|
|
879
|
+
* in a passage, and the list is the content the learner reads first — a list
|
|
880
|
+
* of headings, a list of people — with the labels the paper answers in.
|
|
881
|
+
* `optionUse: 'once'` says each option answers at most one prompt, which a
|
|
882
|
+
* word bank cannot say.
|
|
883
|
+
*/
|
|
884
|
+
interface MatchingData {
|
|
885
|
+
schemaVersion: '1.0';
|
|
886
|
+
type: 'matching';
|
|
887
|
+
/** Unique identifier for this activity. */
|
|
888
|
+
id: string;
|
|
889
|
+
/** Human-readable title used in xAPI statements and error boundaries. */
|
|
890
|
+
title: string;
|
|
891
|
+
/**
|
|
892
|
+
* Optional instructions shown to the learner, as plain text: the task, read
|
|
893
|
+
* before the lists ("Choose the correct heading for each paragraph from the
|
|
894
|
+
* list of headings below."). Every AI request about the item carries them.
|
|
895
|
+
*/
|
|
896
|
+
instructions?: string;
|
|
897
|
+
/** Optional title of the list of options, shown above it: `"List of Headings"`. */
|
|
898
|
+
optionsTitle?: string;
|
|
899
|
+
/** The statements to match, in the order the learner answers them. At least one. */
|
|
900
|
+
prompts: MatchingPrompt[];
|
|
901
|
+
/** The shared list, in the order shown. At least two. */
|
|
902
|
+
options: MatchingOption[];
|
|
903
|
+
/**
|
|
904
|
+
* `many` (default): an option may answer any number of prompts, as in
|
|
905
|
+
* "You may use any letter more than once". `once`: each option answers at
|
|
906
|
+
* most one prompt — the answer key never repeats one, and a learner who
|
|
907
|
+
* picks an option already used moves it to the new prompt.
|
|
908
|
+
*/
|
|
909
|
+
optionUse?: 'once' | 'many';
|
|
910
|
+
/** Scoring algorithm applied when the learner submits. */
|
|
911
|
+
scoringStrategy: 'all-or-nothing' | 'partial';
|
|
912
|
+
/**
|
|
913
|
+
* Whether the SDK shuffles the list of options. Off by default: an exam's
|
|
914
|
+
* list is printed in a fixed order. Seeded as `MultipleChoiceData.shuffle`
|
|
915
|
+
* is, and refused without a seed outside `practice` by `<ActivitySequence>`.
|
|
916
|
+
*/
|
|
917
|
+
shuffleOptions?: boolean;
|
|
918
|
+
/** Optional media shown above the lists. */
|
|
919
|
+
media?: ActivityMedia;
|
|
920
|
+
/** Optional authored overall feedback shown after submission. */
|
|
921
|
+
feedback?: ActivityFeedback;
|
|
922
|
+
/** Minimum scaled score [0–1] required to pass. Defaults to {@link DEFAULT_PASS_THRESHOLD} (0.7) when absent. */
|
|
923
|
+
passThreshold?: number;
|
|
924
|
+
/** BCP 47 language tag for the activity content. */
|
|
925
|
+
locale?: string;
|
|
926
|
+
/** IRI references to learning objectives addressed by this activity. */
|
|
927
|
+
learningObjectives?: string[];
|
|
928
|
+
/** Subjective difficulty on a 1–5 scale. */
|
|
929
|
+
difficultyLevel?: 1 | 2 | 3 | 4 | 5;
|
|
930
|
+
/** What an author allows AI to do for this item: see {@link ActivityAiPermissions}. */
|
|
931
|
+
ai?: ActivityAiPermissions;
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* A word, or several words in a row, of a mark-the-words text that the learner
|
|
935
|
+
* should mark. Written as a quote of the text, never as a position, so an edit
|
|
936
|
+
* elsewhere in the text leaves it standing.
|
|
937
|
+
*/
|
|
938
|
+
interface MarkTheWordsTarget {
|
|
939
|
+
/**
|
|
940
|
+
* The word or words, copied from the text: whole words, in order. Case and
|
|
941
|
+
* accents count; punctuation around them does not, and nor does the kind of
|
|
942
|
+
* apostrophe.
|
|
943
|
+
*/
|
|
944
|
+
text: string;
|
|
945
|
+
/**
|
|
946
|
+
* Which appearance, 1-based. Required when the words appear more than once
|
|
947
|
+
* in the text — the schema refuses a target that could be either.
|
|
948
|
+
*/
|
|
949
|
+
occurrence?: number;
|
|
950
|
+
/** Optional feedback shown beside the target after submission. */
|
|
951
|
+
feedback?: string;
|
|
952
|
+
}
|
|
953
|
+
/**
|
|
954
|
+
* Data contract for a Mark the Words activity: a text in which the learner
|
|
955
|
+
* marks the words a task asks for — every past-tense verb, the words that
|
|
956
|
+
* mean "big", the linkers — by selecting them.
|
|
957
|
+
*
|
|
958
|
+
* The text is cut into words by the SDK's own word cut (`lk-words@1`, see
|
|
959
|
+
* `markableWords`), and a response names words by their position in it.
|
|
960
|
+
*
|
|
961
|
+
* **Scoring.** Each target counts once, and only when every one of its words
|
|
962
|
+
* is marked. A marked word that is part of no target costs one target's worth:
|
|
963
|
+
* `partial` scores (targets found − words wrongly marked) / targets, never
|
|
964
|
+
* below 0, so marking every word earns nothing unless most words are targets
|
|
965
|
+
* — the critic warns when they are. `all-or-nothing` needs every target and no
|
|
966
|
+
* wrong word.
|
|
967
|
+
*/
|
|
968
|
+
interface MarkTheWordsData {
|
|
969
|
+
schemaVersion: '1.0';
|
|
970
|
+
type: 'mark-the-words';
|
|
971
|
+
/** Unique identifier for this activity. */
|
|
972
|
+
id: string;
|
|
973
|
+
/** Human-readable title used in xAPI statements and error boundaries. */
|
|
974
|
+
title: string;
|
|
975
|
+
/**
|
|
976
|
+
* Optional instructions shown to the learner, as plain text: the task, read
|
|
977
|
+
* before the text ("Mark every verb in the past simple."). Every AI request
|
|
978
|
+
* about the item carries them.
|
|
979
|
+
*/
|
|
980
|
+
instructions?: string;
|
|
981
|
+
/** The text the learner marks words in, as plain text. Paragraphs are separated by a blank line. At most 1500 words. */
|
|
982
|
+
text: string;
|
|
983
|
+
/** The words to mark. At least one; no two share a word. */
|
|
984
|
+
targets: MarkTheWordsTarget[];
|
|
985
|
+
/** Scoring algorithm applied when the learner submits. */
|
|
986
|
+
scoringStrategy: 'all-or-nothing' | 'partial';
|
|
987
|
+
/** Optional media shown above the text. */
|
|
988
|
+
media?: ActivityMedia;
|
|
989
|
+
/** Optional authored overall feedback shown after submission. */
|
|
990
|
+
feedback?: ActivityFeedback;
|
|
991
|
+
/** Minimum scaled score [0–1] required to pass. Defaults to {@link DEFAULT_PASS_THRESHOLD} (0.7) when absent. */
|
|
992
|
+
passThreshold?: number;
|
|
993
|
+
/** BCP 47 language tag for the activity content. */
|
|
994
|
+
locale?: string;
|
|
995
|
+
/** IRI references to learning objectives addressed by this activity. */
|
|
996
|
+
learningObjectives?: string[];
|
|
997
|
+
/** Subjective difficulty on a 1–5 scale. */
|
|
998
|
+
difficultyLevel?: 1 | 2 | 3 | 4 | 5;
|
|
999
|
+
/** What an author allows AI to do for this item: see {@link ActivityAiPermissions}. */
|
|
1000
|
+
ai?: ActivityAiPermissions;
|
|
1001
|
+
}
|
|
836
1002
|
interface FillInTheBlanksData {
|
|
837
1003
|
schemaVersion: '1.0';
|
|
838
1004
|
type: 'fill-in-the-blanks';
|
|
@@ -1172,6 +1338,8 @@ interface LearnerResponseMap {
|
|
|
1172
1338
|
dictation: DictationLearnerResponse;
|
|
1173
1339
|
'read-aloud': ReadAloudLearnerResponse;
|
|
1174
1340
|
'speaking-response': SpeakingResponseLearnerResponse;
|
|
1341
|
+
matching: MatchingLearnerResponse;
|
|
1342
|
+
'mark-the-words': MarkTheWordsLearnerResponse;
|
|
1175
1343
|
}
|
|
1176
1344
|
/** Union of all learner response shapes. */
|
|
1177
1345
|
type LearnerResponse = LearnerResponseMap[keyof LearnerResponseMap];
|
|
@@ -1225,6 +1393,45 @@ interface GapSelectLearnerResponse {
|
|
|
1225
1393
|
*/
|
|
1226
1394
|
hintsRevealed?: number;
|
|
1227
1395
|
}
|
|
1396
|
+
/**
|
|
1397
|
+
* Learner response for a Matching activity.
|
|
1398
|
+
*
|
|
1399
|
+
* A prompt the learner has not answered is **absent from the map, or holds an
|
|
1400
|
+
* empty string** — equivalent, as in {@link GapSelectLearnerResponse}, and
|
|
1401
|
+
* scored as `incorrect-omission`, never as a wrong answer.
|
|
1402
|
+
*/
|
|
1403
|
+
interface MatchingLearnerResponse {
|
|
1404
|
+
type: 'matching';
|
|
1405
|
+
/** Map of prompt ID to the ID of the option the learner matched it with. */
|
|
1406
|
+
matches: Record<string, string>;
|
|
1407
|
+
/**
|
|
1408
|
+
* Hints the learner was shown before submitting this answer, counted from
|
|
1409
|
+
* the start of the question — the author's and AI hints alike. Written by
|
|
1410
|
+
* the SDK's components in `practice`; absent or 0 means none. A scoring
|
|
1411
|
+
* policy's `hintPenalty` charges for them. Client-reported, like any count
|
|
1412
|
+
* a browser makes.
|
|
1413
|
+
*/
|
|
1414
|
+
hintsRevealed?: number;
|
|
1415
|
+
}
|
|
1416
|
+
/**
|
|
1417
|
+
* Learner response for a Mark the Words activity: the words marked, by their
|
|
1418
|
+
* 0-based position in the text's words (`markableWords`). Order does not
|
|
1419
|
+
* matter. A position that names no word, or repeats one, is ignored by the
|
|
1420
|
+
* scorer.
|
|
1421
|
+
*/
|
|
1422
|
+
interface MarkTheWordsLearnerResponse {
|
|
1423
|
+
type: 'mark-the-words';
|
|
1424
|
+
/** Positions of the marked words. */
|
|
1425
|
+
marked: number[];
|
|
1426
|
+
/**
|
|
1427
|
+
* Hints the learner was shown before submitting this answer, counted from
|
|
1428
|
+
* the start of the question — the author's and AI hints alike. Written by
|
|
1429
|
+
* the SDK's components in `practice`; absent or 0 means none. A scoring
|
|
1430
|
+
* policy's `hintPenalty` charges for them. Client-reported, like any count
|
|
1431
|
+
* a browser makes.
|
|
1432
|
+
*/
|
|
1433
|
+
hintsRevealed?: number;
|
|
1434
|
+
}
|
|
1228
1435
|
/** Learner response for a Written Response activity. */
|
|
1229
1436
|
interface WrittenResponseLearnerResponse {
|
|
1230
1437
|
type: 'written-response';
|
|
@@ -1843,7 +2050,7 @@ interface RouteTrap {
|
|
|
1843
2050
|
interface RouteQuestion {
|
|
1844
2051
|
/** The item's `id`. */
|
|
1845
2052
|
itemId: string;
|
|
1846
|
-
/** The blank or
|
|
2053
|
+
/** The blank, gap or prompt id. Required for fill-in-the-blanks, gap-select and matching; absent for multiple-choice. */
|
|
1847
2054
|
partId?: string;
|
|
1848
2055
|
strategy: RouteStrategyId;
|
|
1849
2056
|
/**
|
|
@@ -1894,7 +2101,7 @@ interface ReadingRoute {
|
|
|
1894
2101
|
paragraphLabels?: string[];
|
|
1895
2102
|
/** The stimulus's texts or sections, when it has several (cross-text, multiple matching). Their paragraphs add up to the passage's. */
|
|
1896
2103
|
sections?: RouteSection[];
|
|
1897
|
-
/** One per question of the group, in any order: numbering follows the items and their blanks or
|
|
2104
|
+
/** One per question of the group, in any order: numbering follows the items and their blanks, gaps or prompts. */
|
|
1898
2105
|
questions: RouteQuestion[];
|
|
1899
2106
|
}
|
|
1900
2107
|
/**
|
|
@@ -1963,7 +2170,7 @@ interface PassageLayout {
|
|
|
1963
2170
|
}
|
|
1964
2171
|
/** A route question with every quote resolved against the passage. */
|
|
1965
2172
|
interface PlannedQuestion {
|
|
1966
|
-
/** `itemId`, or `itemId#partId` for a blank or
|
|
2173
|
+
/** `itemId`, or `itemId#partId` for a blank, gap or prompt. Names the question in traces and summaries. */
|
|
1967
2174
|
key: string;
|
|
1968
2175
|
itemId: string;
|
|
1969
2176
|
partId?: string;
|
|
@@ -3551,5 +3758,5 @@ interface AiVariantsRun {
|
|
|
3551
3758
|
/** Every call, in order: the first, then each repair. */
|
|
3552
3759
|
calls: AiDraftsCall[];
|
|
3553
3760
|
}
|
|
3554
|
-
export { AiSpeakingGradingFacts as $,
|
|
3555
|
-
//# sourceMappingURL=ai-
|
|
3761
|
+
export { AiSpeakingGradingFacts as $, MarkTheWordsLearnerResponse as $n, GradingState as $r, RouteMoveId as $t, AiGapSelectFacts as A, ActivityResult as An, WrittenResponseData as Ar, SequenceSlot as At, AiGroupInput as B, FillInTheBlanksData as Bn, XAPIObject as Br, PlannedPair as Bt, AiDraftsCall as C, VersionFinding as Cn, SpeakingMeasure as Cr, AiWritingFeedback as Ct, AiFeature as D, ActivityDataMap as Dn, SpeakingRubricCriterion as Dr, MediaProgress as Dt, AiExplanationRequest as E, ActivityData as En, SpeakingRubric as Er, ItemGroup as Et, AiGradingCriterionFact as F, DictationData as Fn, XAPIActor as Fr, TimelineCue as Ft, AiOptionFact as G, GapSelectGap as Gn, CriterionScore as Gr, RouteAnswer as Gt, AiItemFacts as H, GapSelectBank as Hn, XAPIScore as Hr, PlannedTrap as Ht, AiGradingFacts as I, DictationEquivalence as In, XAPIConfig as Ir, PassageLayout as It, AiReadingWordFact as J, InteractionKind as Jn, GradeRoutingReason as Jr, RouteFadingOptions as Jt, AiProvenance as K, GapSelectLearnerResponse as Kn, GradeRecord as Kr, RouteCause as Kt, AiGradingJudgement as L, DictationLearnerResponse as Ln, XAPIContext as Lr, PassageParagraph as Lt, AiGeneratedVariant as M, BlankConfig as Mn, WrittenResponseRubric as Mr, Stimulus as Mt, AiGrade as N, DeferredReason as Nn, WrittenResponseRubricCriterion as Nr, StimulusKind as Nt, AiFillInTheBlanksFacts as O, ActivityFeedback as On, ValidationError as Or, MediaTimeline as Ot, AiGradedCriterion as P, DeferredScoringPartial as Pn, WrittenResponseRubricLevel as Pr, TimelineChapter as Pt, AiSpeakingCriterionFact as Q, MarkTheWordsData as Qn, GraderUsage as Qr, RouteLink as Qt, AiGradingRequest as R, DictationSlowMedia as Rn, XAPIContextActivities as Rr, PassageSection as Rt, AiDrafts as S, VersionComparison as Sn, ScriptTurn as Sr, AiWritingFacts as St, AiDraftsRun as T, VersionSlot as Tn, SpeakingResponseLearnerResponse as Tr, AiWritingFeedbackResult as Tt, AiMaterialFacts as U, GapSelectChoice as Un, XAPIStatement as Ur, QuotedRange as Ut, AiHintRequest as V, FillInTheBlanksLearnerResponse as Vn, XAPIResult as Vr, PlannedQuestion as Vt, AiMultipleChoiceFacts as W, GapSelectData as Wn, XAPIVerbObject as Wr, ReadingRoute as Wt, AiRubricCriterionFact as X, LearnerResponse as Xn, GraderConfiguration as Xr, RouteLearnerState as Xt, AiRefusal as Y, ItemOutcome as Yn, Grader as Yr, RouteKeyword as Yt, AiSoundFact as Z, LearnerResponseMap as Zn, GraderKind as Zr, RouteLevel as Zt, AiDraftCaption as _, DraftNotComplete as _n, RecordingBounds as _r, AiVariantsRun as _t, AiCoachingRequest as a, RouteSection as an, MediaPlaybackPolicy as ar, AiVariantDifficulty as at, AiDraftSource as b, ItemFinding as bn, ScoringOutcome as br, AiWordFact as bt, AiCriterionJudgement as c, RouteStrategySummary as cn, MultipleChoiceLearnerResponse as cr, AiVariantLevelFacts as ct, AiCritiqueFinding as d, RouteTrap as dn, NativeControlHint as dr, AiVariantPair as dt, InlineCorrection as ei, RoutePlan as en, MarkTheWordsTarget as er, AiSpeakingGradingRequest as et, AiCritiqueFindingResult as f, RouteTrapKind as fn, ReadAloudData as fr, AiVariantSkip as ft, AiDictationFacts as g, DraftIssue as gn, ReadAloudSlowMedia as gr, AiVariantsRequest as gt, AiCritiqueResult as h, DraftContext as hn, ReadAloudLearnerResponse as hr, AiVariants as ht, AiCoaching as i, matchText as ii, RouteQuote as in, MatchingPrompt as ir, AiTextResult as it, AiGeneratedDraft as j, ActivityType as jn, WrittenResponseLearnerResponse as jr, SequenceSlotGroup as jt, AiGapFact as k, ActivityMedia as kn, ValidationResult as kr, SequenceEntry as kt, AiCritique as l, RouteSummary as ln, MultipleChoiceOption as lr, AiVariantMismatch as lt, AiCritiqueRequest as m, DraftComplete as mn, ReadAloudDimensionWeight as mr, AiVariantTargets as mt, AiActivityInput as n, TextMatchResult as ni, RouteQuestionPart as nn, MatchingLearnerResponse as nr, AiSpeakingMeasureFact as nt, AiCoachingResult as o, RouteStep as on, MediaTrack as or, AiVariantExemplarFacts as ot, AiCritiqueKind as p, TextRange as pn, ReadAloudDimension as pr, AiVariantSkipCode as pt, AiReadingFacts as q, InteractionEvent as qn, GradeRouting as qr, RouteEvent as qt, AiBlankFact as r, levenshteinDistance as ri, RouteQuestionSummary as rn, MatchingOption as rr, AiSupportedActivityType as rt, AiCoachingWord as s, RouteStrategyId as sn, MultipleChoiceData as sr, AiVariantImage as st, ActivityAiPermissions as t, TextMatchPolicy as ti, RouteQuestion as tn, MatchingData as tr, AiSpeakingGradingRequestProblem as tt, AiCritiqueField as u, RouteTrace as un, MultipleChoiceOptionMedia as ur, AiVariantMissing as ut, AiDraftProblem as v, DraftSeverity as vn, RecordingRef as vr, AiVerdict as vt, AiDraftsRequest as w, VersionPaper as wn, SpeakingResponseData as wr, AiWritingFeedbackRequest as wt, AiDraftType as x, ItemFindingSeverity as xn, ScoringResult as xr, AiWritingCorrection as xt, AiDraftSettings as y, DraftValidationResult as yn, ScoringDetail as yr, AiVideoDraft as yt, AiGradingRequestProblem as z, DictationTolerance as zn, XAPIError as zr, PassageSentence as zt };
|
|
3762
|
+
//# sourceMappingURL=ai-mC-5XhBc.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-mC-5XhBc.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/reading-route.ts","../src/types/item-group.ts","../src/types/ai.ts"],"mappings":"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"}
|