learngraph 0.4.0 → 0.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.
- package/dist/cjs/api/routes/analytics.js +288 -0
- package/dist/cjs/api/routes/analytics.js.map +1 -0
- package/dist/cjs/api/routes/assessments.js +269 -0
- package/dist/cjs/api/routes/assessments.js.map +1 -0
- package/dist/cjs/api/routes/curriculum.js +345 -0
- package/dist/cjs/api/routes/curriculum.js.map +1 -0
- package/dist/cjs/api/routes/edges.js +162 -0
- package/dist/cjs/api/routes/edges.js.map +1 -0
- package/dist/cjs/api/routes/explore.js +224 -0
- package/dist/cjs/api/routes/explore.js.map +1 -0
- package/dist/cjs/api/routes/learners.js +324 -0
- package/dist/cjs/api/routes/learners.js.map +1 -0
- package/dist/cjs/api/routes/me.js +404 -0
- package/dist/cjs/api/routes/me.js.map +1 -0
- package/dist/cjs/api/routes/skills.js +319 -0
- package/dist/cjs/api/routes/skills.js.map +1 -0
- package/dist/cjs/api/server.js +185 -0
- package/dist/cjs/api/server.js.map +1 -0
- package/dist/cjs/api/types.js +10 -0
- package/dist/cjs/api/types.js.map +1 -0
- package/dist/cjs/assessment/adaptive.js +390 -0
- package/dist/cjs/assessment/adaptive.js.map +1 -0
- package/dist/cjs/assessment/bkt.js +362 -0
- package/dist/cjs/assessment/bkt.js.map +1 -0
- package/dist/cjs/assessment/index.js +54 -0
- package/dist/cjs/assessment/index.js.map +1 -0
- package/dist/cjs/assessment/irt.js +420 -0
- package/dist/cjs/assessment/irt.js.map +1 -0
- package/dist/cjs/assessment/mastery-engine.js +411 -0
- package/dist/cjs/assessment/mastery-engine.js.map +1 -0
- package/dist/cjs/components/LearningPathView.js +320 -0
- package/dist/cjs/components/LearningPathView.js.map +1 -0
- package/dist/cjs/components/ProgressDashboard.js +308 -0
- package/dist/cjs/components/ProgressDashboard.js.map +1 -0
- package/dist/cjs/components/SkillCard.js +264 -0
- package/dist/cjs/components/SkillCard.js.map +1 -0
- package/dist/cjs/components/SkillExplorer.js +401 -0
- package/dist/cjs/components/SkillExplorer.js.map +1 -0
- package/dist/cjs/components/SkillGraph.js +435 -0
- package/dist/cjs/components/SkillGraph.js.map +1 -0
- package/dist/cjs/components/hooks.js +510 -0
- package/dist/cjs/components/hooks.js.map +1 -0
- package/dist/cjs/components/index.js +77 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/components/types.js +34 -0
- package/dist/cjs/components/types.js.map +1 -0
- package/dist/cjs/index.js +36 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/llm/adapters/anthropic.js +91 -3
- package/dist/cjs/llm/adapters/anthropic.js.map +1 -1
- package/dist/cjs/llm/adapters/gemini.js +101 -8
- package/dist/cjs/llm/adapters/gemini.js.map +1 -1
- package/dist/cjs/llm/adapters/index.js +42 -1
- package/dist/cjs/llm/adapters/index.js.map +1 -1
- package/dist/cjs/llm/adapters/ollama.js +120 -3
- package/dist/cjs/llm/adapters/ollama.js.map +1 -1
- package/dist/cjs/llm/adapters/openai.js +108 -2
- package/dist/cjs/llm/adapters/openai.js.map +1 -1
- package/dist/cjs/mcp/cli.js +302 -0
- package/dist/cjs/mcp/cli.js.map +1 -0
- package/dist/cjs/mcp/index.js +79 -0
- package/dist/cjs/mcp/index.js.map +1 -0
- package/dist/cjs/mcp/prompts.js +425 -0
- package/dist/cjs/mcp/prompts.js.map +1 -0
- package/dist/cjs/mcp/resources.js +371 -0
- package/dist/cjs/mcp/resources.js.map +1 -0
- package/dist/cjs/mcp/server.js +410 -0
- package/dist/cjs/mcp/server.js.map +1 -0
- package/dist/cjs/mcp/tools.js +612 -0
- package/dist/cjs/mcp/tools.js.map +1 -0
- package/dist/cjs/mcp/types.js +10 -0
- package/dist/cjs/mcp/types.js.map +1 -0
- package/dist/cjs/query/index.js +23 -4
- package/dist/cjs/query/index.js.map +1 -1
- package/dist/cjs/query/path.js +313 -0
- package/dist/cjs/query/path.js.map +1 -0
- package/dist/cjs/query/spaced-repetition.js +298 -0
- package/dist/cjs/query/spaced-repetition.js.map +1 -0
- package/dist/cjs/query/zpd.js +216 -0
- package/dist/cjs/query/zpd.js.map +1 -0
- package/dist/cjs/types/assessment.js +46 -0
- package/dist/cjs/types/assessment.js.map +1 -0
- package/dist/cjs/types/bloom.js +12 -1
- package/dist/cjs/types/bloom.js.map +1 -1
- package/dist/cjs/types/index.js +7 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/esm/api/routes/analytics.js +285 -0
- package/dist/esm/api/routes/analytics.js.map +1 -0
- package/dist/esm/api/routes/assessments.js +266 -0
- package/dist/esm/api/routes/assessments.js.map +1 -0
- package/dist/esm/api/routes/curriculum.js +342 -0
- package/dist/esm/api/routes/curriculum.js.map +1 -0
- package/dist/esm/api/routes/edges.js +159 -0
- package/dist/esm/api/routes/edges.js.map +1 -0
- package/dist/esm/api/routes/explore.js +221 -0
- package/dist/esm/api/routes/explore.js.map +1 -0
- package/dist/esm/api/routes/learners.js +321 -0
- package/dist/esm/api/routes/learners.js.map +1 -0
- package/dist/esm/api/routes/me.js +401 -0
- package/dist/esm/api/routes/me.js.map +1 -0
- package/dist/esm/api/routes/skills.js +316 -0
- package/dist/esm/api/routes/skills.js.map +1 -0
- package/dist/esm/api/server.js +179 -0
- package/dist/esm/api/server.js.map +1 -0
- package/dist/esm/api/types.js +9 -0
- package/dist/esm/api/types.js.map +1 -0
- package/dist/esm/assessment/adaptive.js +384 -0
- package/dist/esm/assessment/adaptive.js.map +1 -0
- package/dist/esm/assessment/bkt.js +354 -0
- package/dist/esm/assessment/bkt.js.map +1 -0
- package/dist/esm/assessment/index.js +21 -0
- package/dist/esm/assessment/index.js.map +1 -0
- package/dist/esm/assessment/irt.js +406 -0
- package/dist/esm/assessment/irt.js.map +1 -0
- package/dist/esm/assessment/mastery-engine.js +406 -0
- package/dist/esm/assessment/mastery-engine.js.map +1 -0
- package/dist/esm/components/LearningPathView.js +316 -0
- package/dist/esm/components/LearningPathView.js.map +1 -0
- package/dist/esm/components/ProgressDashboard.js +304 -0
- package/dist/esm/components/ProgressDashboard.js.map +1 -0
- package/dist/esm/components/SkillCard.js +260 -0
- package/dist/esm/components/SkillCard.js.map +1 -0
- package/dist/esm/components/SkillExplorer.js +397 -0
- package/dist/esm/components/SkillExplorer.js.map +1 -0
- package/dist/esm/components/SkillGraph.js +398 -0
- package/dist/esm/components/SkillGraph.js.map +1 -0
- package/dist/esm/components/hooks.js +502 -0
- package/dist/esm/components/hooks.js.map +1 -0
- package/dist/esm/components/index.js +61 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/components/types.js +31 -0
- package/dist/esm/components/types.js.map +1 -0
- package/dist/esm/index.js +13 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/llm/adapters/anthropic.js +88 -2
- package/dist/esm/llm/adapters/anthropic.js.map +1 -1
- package/dist/esm/llm/adapters/gemini.js +98 -7
- package/dist/esm/llm/adapters/gemini.js.map +1 -1
- package/dist/esm/llm/adapters/index.js +15 -4
- package/dist/esm/llm/adapters/index.js.map +1 -1
- package/dist/esm/llm/adapters/ollama.js +117 -2
- package/dist/esm/llm/adapters/ollama.js.map +1 -1
- package/dist/esm/llm/adapters/openai.js +105 -1
- package/dist/esm/llm/adapters/openai.js.map +1 -1
- package/dist/esm/mcp/cli.js +267 -0
- package/dist/esm/mcp/cli.js.map +1 -0
- package/dist/esm/mcp/index.js +39 -0
- package/dist/esm/mcp/index.js.map +1 -0
- package/dist/esm/mcp/prompts.js +419 -0
- package/dist/esm/mcp/prompts.js.map +1 -0
- package/dist/esm/mcp/resources.js +359 -0
- package/dist/esm/mcp/resources.js.map +1 -0
- package/dist/esm/mcp/server.js +372 -0
- package/dist/esm/mcp/server.js.map +1 -0
- package/dist/esm/mcp/tools.js +598 -0
- package/dist/esm/mcp/tools.js.map +1 -0
- package/dist/esm/mcp/types.js +9 -0
- package/dist/esm/mcp/types.js.map +1 -0
- package/dist/esm/query/index.js +11 -5
- package/dist/esm/query/index.js.map +1 -1
- package/dist/esm/query/path.js +308 -0
- package/dist/esm/query/path.js.map +1 -0
- package/dist/esm/query/spaced-repetition.js +292 -0
- package/dist/esm/query/spaced-repetition.js.map +1 -0
- package/dist/esm/query/zpd.js +211 -0
- package/dist/esm/query/zpd.js.map +1 -0
- package/dist/esm/types/assessment.js +40 -0
- package/dist/esm/types/assessment.js.map +1 -0
- package/dist/esm/types/bloom.js +11 -0
- package/dist/esm/types/bloom.js.map +1 -1
- package/dist/esm/types/index.js +2 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/types/api/routes/analytics.d.ts +14 -0
- package/dist/types/api/routes/analytics.d.ts.map +1 -0
- package/dist/types/api/routes/assessments.d.ts +14 -0
- package/dist/types/api/routes/assessments.d.ts.map +1 -0
- package/dist/types/api/routes/curriculum.d.ts +14 -0
- package/dist/types/api/routes/curriculum.d.ts.map +1 -0
- package/dist/types/api/routes/edges.d.ts +14 -0
- package/dist/types/api/routes/edges.d.ts.map +1 -0
- package/dist/types/api/routes/explore.d.ts +14 -0
- package/dist/types/api/routes/explore.d.ts.map +1 -0
- package/dist/types/api/routes/learners.d.ts +14 -0
- package/dist/types/api/routes/learners.d.ts.map +1 -0
- package/dist/types/api/routes/me.d.ts +14 -0
- package/dist/types/api/routes/me.d.ts.map +1 -0
- package/dist/types/api/routes/skills.d.ts +14 -0
- package/dist/types/api/routes/skills.d.ts.map +1 -0
- package/dist/types/api/server.d.ts +147 -0
- package/dist/types/api/server.d.ts.map +1 -0
- package/dist/types/api/types.d.ts +443 -0
- package/dist/types/api/types.d.ts.map +1 -0
- package/dist/types/assessment/adaptive.d.ts +155 -0
- package/dist/types/assessment/adaptive.d.ts.map +1 -0
- package/dist/types/assessment/bkt.d.ts +185 -0
- package/dist/types/assessment/bkt.d.ts.map +1 -0
- package/dist/types/assessment/index.d.ts +18 -0
- package/dist/types/assessment/index.d.ts.map +1 -0
- package/dist/types/assessment/irt.d.ts +159 -0
- package/dist/types/assessment/irt.d.ts.map +1 -0
- package/dist/types/assessment/mastery-engine.d.ts +178 -0
- package/dist/types/assessment/mastery-engine.d.ts.map +1 -0
- package/dist/types/components/LearningPathView.d.ts +40 -0
- package/dist/types/components/LearningPathView.d.ts.map +1 -0
- package/dist/types/components/ProgressDashboard.d.ts +49 -0
- package/dist/types/components/ProgressDashboard.d.ts.map +1 -0
- package/dist/types/components/SkillCard.d.ts +34 -0
- package/dist/types/components/SkillCard.d.ts.map +1 -0
- package/dist/types/components/SkillExplorer.d.ts +39 -0
- package/dist/types/components/SkillExplorer.d.ts.map +1 -0
- package/dist/types/components/SkillGraph.d.ts +38 -0
- package/dist/types/components/SkillGraph.d.ts.map +1 -0
- package/dist/types/components/hooks.d.ts +187 -0
- package/dist/types/components/hooks.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +59 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/types/components/types.d.ts +410 -0
- package/dist/types/components/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/llm/adapters/anthropic.d.ts +84 -1
- package/dist/types/llm/adapters/anthropic.d.ts.map +1 -1
- package/dist/types/llm/adapters/gemini.d.ts +93 -6
- package/dist/types/llm/adapters/gemini.d.ts.map +1 -1
- package/dist/types/llm/adapters/index.d.ts +13 -4
- package/dist/types/llm/adapters/index.d.ts.map +1 -1
- package/dist/types/llm/adapters/ollama.d.ts +126 -1
- package/dist/types/llm/adapters/ollama.d.ts.map +1 -1
- package/dist/types/llm/adapters/openai.d.ts +104 -1
- package/dist/types/llm/adapters/openai.d.ts.map +1 -1
- package/dist/types/mcp/cli.d.ts +15 -0
- package/dist/types/mcp/cli.d.ts.map +1 -0
- package/dist/types/mcp/index.d.ts +32 -0
- package/dist/types/mcp/index.d.ts.map +1 -0
- package/dist/types/mcp/prompts.d.ts +27 -0
- package/dist/types/mcp/prompts.d.ts.map +1 -0
- package/dist/types/mcp/resources.d.ts +59 -0
- package/dist/types/mcp/resources.d.ts.map +1 -0
- package/dist/types/mcp/server.d.ts +136 -0
- package/dist/types/mcp/server.d.ts.map +1 -0
- package/dist/types/mcp/tools.d.ts +344 -0
- package/dist/types/mcp/tools.d.ts.map +1 -0
- package/dist/types/mcp/types.d.ts +137 -0
- package/dist/types/mcp/types.d.ts.map +1 -0
- package/dist/types/query/index.d.ts +8 -0
- package/dist/types/query/index.d.ts.map +1 -1
- package/dist/types/query/path.d.ts +102 -0
- package/dist/types/query/path.d.ts.map +1 -0
- package/dist/types/query/spaced-repetition.d.ts +135 -0
- package/dist/types/query/spaced-repetition.d.ts.map +1 -0
- package/dist/types/query/zpd.d.ts +97 -0
- package/dist/types/query/zpd.d.ts.map +1 -0
- package/dist/types/types/assessment.d.ts +512 -0
- package/dist/types/types/assessment.d.ts.map +1 -0
- package/dist/types/types/bloom.d.ts +4 -0
- package/dist/types/types/bloom.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +3 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/package.json +48 -3
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zone of Proximal Development (ZPD) Calculator
|
|
3
|
+
*
|
|
4
|
+
* Implements Vygotsky's Zone of Proximal Development theory to identify
|
|
5
|
+
* skills that are "just right" for a learner - challenging but achievable.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Default options for ZPD calculation
|
|
11
|
+
*/
|
|
12
|
+
export const ZPD_DEFAULTS = {
|
|
13
|
+
difficultyTolerance: 0.2,
|
|
14
|
+
prioritizeThresholdConcepts: true,
|
|
15
|
+
maxResults: 50,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* ZPD Calculator
|
|
19
|
+
*
|
|
20
|
+
* Calculates the Zone of Proximal Development for a learner based on:
|
|
21
|
+
* 1. Current mastery states
|
|
22
|
+
* 2. Prerequisite graph structure
|
|
23
|
+
* 3. Skill difficulty levels
|
|
24
|
+
*
|
|
25
|
+
* A skill is in the ZPD if:
|
|
26
|
+
* - All prerequisites are mastered
|
|
27
|
+
* - The skill is not yet mastered
|
|
28
|
+
* - The skill difficulty is within tolerance of learner ability
|
|
29
|
+
*/
|
|
30
|
+
export class ZPDCalculator {
|
|
31
|
+
storage;
|
|
32
|
+
constructor(storage) {
|
|
33
|
+
this.storage = storage;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Calculate ZPD for a learner
|
|
37
|
+
*
|
|
38
|
+
* @param learner - Learner profile with mastery states
|
|
39
|
+
* @param options - Calculation options
|
|
40
|
+
* @returns ZPD result with ready skills and blocked skills
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const calculator = new ZPDCalculator(storage);
|
|
45
|
+
*
|
|
46
|
+
* const learner = {
|
|
47
|
+
* masteryStates: new Map([
|
|
48
|
+
* ['skill-1', { skillId: 'skill-1', mastery: 0.9, ... }],
|
|
49
|
+
* ['skill-2', { skillId: 'skill-2', mastery: 0.3, ... }],
|
|
50
|
+
* ])
|
|
51
|
+
* };
|
|
52
|
+
*
|
|
53
|
+
* const zpd = await calculator.calculate(learner);
|
|
54
|
+
* console.log('Ready to learn:', zpd.ready.map(s => s.name));
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
async calculate(learner, options = {}) {
|
|
58
|
+
const opts = { ...ZPD_DEFAULTS, ...options };
|
|
59
|
+
// Get all skills from storage
|
|
60
|
+
let allSkills = await this.storage.findSkills({});
|
|
61
|
+
// Apply filters
|
|
62
|
+
if (opts.filterTags && opts.filterTags.length > 0) {
|
|
63
|
+
allSkills = allSkills.filter((skill) => opts.filterTags.some((tag) => skill.tags.includes(tag)));
|
|
64
|
+
}
|
|
65
|
+
if (opts.filterDomain) {
|
|
66
|
+
allSkills = allSkills.filter((skill) => skill.metadata?.domain === opts.filterDomain);
|
|
67
|
+
}
|
|
68
|
+
// Calculate learner ability level if not provided
|
|
69
|
+
const abilityLevel = learner.abilityLevel ?? this.calculateAbilityLevel(learner);
|
|
70
|
+
// Categorize skills
|
|
71
|
+
const zpd = [];
|
|
72
|
+
const ready = [];
|
|
73
|
+
const blocked = new Map();
|
|
74
|
+
let masteredCount = 0;
|
|
75
|
+
for (const skill of allSkills) {
|
|
76
|
+
const mastery = learner.masteryStates.get(skill.id);
|
|
77
|
+
const masteryLevel = mastery?.mastery ?? 0;
|
|
78
|
+
// Check if already mastered
|
|
79
|
+
if (masteryLevel >= skill.masteryThreshold) {
|
|
80
|
+
masteredCount++;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
// Get prerequisites
|
|
84
|
+
const prerequisites = await this.storage.getPrerequisitesOf(skill.id);
|
|
85
|
+
const unmetPrereqs = [];
|
|
86
|
+
for (const prereq of prerequisites) {
|
|
87
|
+
const prereqMastery = learner.masteryStates.get(prereq.id);
|
|
88
|
+
const prereqLevel = prereqMastery?.mastery ?? 0;
|
|
89
|
+
if (prereqLevel < prereq.masteryThreshold) {
|
|
90
|
+
unmetPrereqs.push(prereq.name);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (unmetPrereqs.length > 0) {
|
|
94
|
+
// Skill is blocked
|
|
95
|
+
blocked.set(skill.id, unmetPrereqs);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Skill is in ZPD (prerequisites met, not yet mastered)
|
|
99
|
+
zpd.push(skill);
|
|
100
|
+
// Check if within difficulty tolerance
|
|
101
|
+
const difficultyDelta = skill.difficulty - abilityLevel;
|
|
102
|
+
if (difficultyDelta <= opts.difficultyTolerance) {
|
|
103
|
+
ready.push(skill);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Sort ready skills by priority
|
|
108
|
+
this.sortByPriority(ready, opts.prioritizeThresholdConcepts);
|
|
109
|
+
// Limit results
|
|
110
|
+
const limitedReady = opts.maxResults ? ready.slice(0, opts.maxResults) : ready;
|
|
111
|
+
const limitedZpd = opts.maxResults ? zpd.slice(0, opts.maxResults) : zpd;
|
|
112
|
+
return {
|
|
113
|
+
zpd: limitedZpd,
|
|
114
|
+
ready: limitedReady,
|
|
115
|
+
blocked,
|
|
116
|
+
stats: {
|
|
117
|
+
totalSkills: allSkills.length,
|
|
118
|
+
mastered: masteredCount,
|
|
119
|
+
inZPD: zpd.length,
|
|
120
|
+
blocked: blocked.size,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the next recommended skill to learn
|
|
126
|
+
*
|
|
127
|
+
* @param learner - Learner profile
|
|
128
|
+
* @param options - ZPD options
|
|
129
|
+
* @returns The highest priority skill to learn next, or null if none available
|
|
130
|
+
*/
|
|
131
|
+
async getNextSkill(learner, options = {}) {
|
|
132
|
+
const zpd = await this.calculate(learner, { ...options, maxResults: 1 });
|
|
133
|
+
return zpd.ready[0] ?? zpd.zpd[0] ?? null;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Check if a specific skill is in the learner's ZPD
|
|
137
|
+
*
|
|
138
|
+
* @param skillId - Skill to check
|
|
139
|
+
* @param learner - Learner profile
|
|
140
|
+
* @returns Object with inZPD status and blocking prerequisites if any
|
|
141
|
+
*/
|
|
142
|
+
async isInZPD(skillId, learner) {
|
|
143
|
+
const skill = await this.storage.getSkill(skillId);
|
|
144
|
+
if (!skill) {
|
|
145
|
+
return { inZPD: false, blocking: ['Skill not found'] };
|
|
146
|
+
}
|
|
147
|
+
// Check if already mastered
|
|
148
|
+
const mastery = learner.masteryStates.get(skillId);
|
|
149
|
+
if (mastery && mastery.mastery >= skill.masteryThreshold) {
|
|
150
|
+
return { inZPD: false, blocking: [] };
|
|
151
|
+
}
|
|
152
|
+
// Check prerequisites
|
|
153
|
+
const prerequisites = await this.storage.getPrerequisitesOf(skillId);
|
|
154
|
+
const blocking = [];
|
|
155
|
+
for (const prereq of prerequisites) {
|
|
156
|
+
const prereqMastery = learner.masteryStates.get(prereq.id);
|
|
157
|
+
const prereqLevel = prereqMastery?.mastery ?? 0;
|
|
158
|
+
if (prereqLevel < prereq.masteryThreshold) {
|
|
159
|
+
blocking.push(prereq.name);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
inZPD: blocking.length === 0,
|
|
164
|
+
blocking,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Calculate learner ability level from mastery states
|
|
169
|
+
*/
|
|
170
|
+
calculateAbilityLevel(learner) {
|
|
171
|
+
if (learner.masteryStates.size === 0) {
|
|
172
|
+
return 0.3; // Default starting ability
|
|
173
|
+
}
|
|
174
|
+
let totalWeighted = 0;
|
|
175
|
+
let totalWeight = 0;
|
|
176
|
+
for (const state of learner.masteryStates.values()) {
|
|
177
|
+
// Weight by mastery level (higher mastery = more confident estimate)
|
|
178
|
+
const weight = state.mastery;
|
|
179
|
+
totalWeighted += state.mastery * weight;
|
|
180
|
+
totalWeight += weight;
|
|
181
|
+
}
|
|
182
|
+
return totalWeight > 0 ? totalWeighted / totalWeight : 0.3;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Sort skills by learning priority
|
|
186
|
+
*/
|
|
187
|
+
sortByPriority(skills, prioritizeThreshold) {
|
|
188
|
+
skills.sort((a, b) => {
|
|
189
|
+
// Threshold concepts first (if enabled)
|
|
190
|
+
if (prioritizeThreshold) {
|
|
191
|
+
if (a.isThresholdConcept && !b.isThresholdConcept)
|
|
192
|
+
return -1;
|
|
193
|
+
if (!a.isThresholdConcept && b.isThresholdConcept)
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
// Then by difficulty (easier first for progressive learning)
|
|
197
|
+
if (a.difficulty !== b.difficulty) {
|
|
198
|
+
return a.difficulty - b.difficulty;
|
|
199
|
+
}
|
|
200
|
+
// Finally by estimated time (shorter first)
|
|
201
|
+
return a.estimatedMinutes - b.estimatedMinutes;
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Create a ZPD calculator
|
|
207
|
+
*/
|
|
208
|
+
export function createZPDCalculator(storage) {
|
|
209
|
+
return new ZPDCalculator(storage);
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=zpd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zpd.js","sourceRoot":"","sources":["../../../src/query/zpd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assessment Types
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive type definitions for the assessment framework including:
|
|
5
|
+
* - Question types (multiple choice, free response, etc.)
|
|
6
|
+
* - Assessment structures
|
|
7
|
+
* - Item Response Theory (IRT) parameters
|
|
8
|
+
* - Bayesian Knowledge Tracing (BKT) parameters
|
|
9
|
+
* - Evidence of learning
|
|
10
|
+
*
|
|
11
|
+
* @packageDocumentation
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Create a typed QuestionId from a string
|
|
15
|
+
*/
|
|
16
|
+
export function createQuestionId(id) {
|
|
17
|
+
return id;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a typed AssessmentId from a string
|
|
21
|
+
*/
|
|
22
|
+
export function createAssessmentId(id) {
|
|
23
|
+
return id;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a typed ResponseId from a string
|
|
27
|
+
*/
|
|
28
|
+
export function createResponseId(id) {
|
|
29
|
+
return id;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Default BKT parameters (empirically derived)
|
|
33
|
+
*/
|
|
34
|
+
export const BKT_DEFAULTS = {
|
|
35
|
+
pInit: 0.3, // 30% prior mastery
|
|
36
|
+
pLearn: 0.1, // 10% chance to learn per opportunity
|
|
37
|
+
pSlip: 0.1, // 10% slip rate
|
|
38
|
+
pGuess: 0.2, // 20% guess rate
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=assessment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assessment.js","sourceRoot":"","sources":["../../../src/types/assessment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,EAAgB,CAAC;AAC1B,CAAC;AAmGD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,EAAkB,CAAC;AAC5B,CAAC;AA+FD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,EAAgB,CAAC;AAC1B,CAAC;AAwJD;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,KAAK,EAAE,GAAG,EAAK,oBAAoB;IACnC,MAAM,EAAE,GAAG,EAAI,sCAAsC;IACrD,KAAK,EAAE,GAAG,EAAK,gBAAgB;IAC/B,MAAM,EAAE,GAAG,EAAI,iBAAiB;CACjC,CAAC"}
|
package/dist/esm/types/bloom.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bloom.js","sourceRoot":"","sources":["../../../src/types/bloom.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bloom.js","sourceRoot":"","sources":["../../../src/types/bloom.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types/index.js
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
|
-
export { BLOOM_LEVEL_ORDER, BLOOM_VERBS, detectBloomLevel, compareBloomLevels, meetsBloomThreshold, } from './bloom.js';
|
|
6
|
+
export { BLOOM_LEVELS, BLOOM_LEVEL_ORDER, BLOOM_VERBS, detectBloomLevel, compareBloomLevels, meetsBloomThreshold, } from './bloom.js';
|
|
7
7
|
export { createSkillId, SKILL_DEFAULTS, THRESHOLD_CONCEPT_MASTERY, isValidDifficulty, isValidMasteryThreshold, } from './skill.js';
|
|
8
8
|
export { createEdgeId, EDGE_STRENGTH_THRESHOLDS, isValidEdgeStrength, suggestEdgeType, } from './edge.js';
|
|
9
9
|
export { MASTERY_THRESHOLDS, hasMastery, masteryGap } from './mastery.js';
|
|
10
10
|
export { GRAPH_VERSION } from './graph.js';
|
|
11
|
+
export { createQuestionId, createAssessmentId, createResponseId, BKT_DEFAULTS, } from './assessment.js';
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,WAAW,CAAC;AAMnB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa1E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAMpB,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,WAAW,CAAC;AAMnB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa1E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgI3C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GACb,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analytics routes
|
|
3
|
+
*
|
|
4
|
+
* Endpoints for skill analytics and cohort analysis.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create analytics routes
|
|
12
|
+
*/
|
|
13
|
+
export declare function createAnalyticsRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/analytics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAmV3D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assessment routes
|
|
3
|
+
*
|
|
4
|
+
* Endpoints for assessments, questions, and adaptive testing.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create assessment routes
|
|
12
|
+
*/
|
|
13
|
+
export declare function createAssessmentRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=assessments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assessments.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/assessments.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CA6V5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curriculum routes
|
|
3
|
+
*
|
|
4
|
+
* Endpoints for curriculum management and bulk operations.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create curriculum routes
|
|
12
|
+
*/
|
|
13
|
+
export declare function createCurriculumRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=curriculum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curriculum.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/curriculum.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CA+W5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge routes
|
|
3
|
+
*
|
|
4
|
+
* CRUD endpoints for prerequisite edges between skills.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create edge routes
|
|
12
|
+
*/
|
|
13
|
+
export declare function createEdgeRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=edges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/edges.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAsMtD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explore routes
|
|
3
|
+
*
|
|
4
|
+
* Public skill exploration endpoints for discovery.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create explore routes for public skill discovery
|
|
12
|
+
*/
|
|
13
|
+
export declare function createExploreRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=explore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/explore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAmQzD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learner routes
|
|
3
|
+
*
|
|
4
|
+
* CRUD operations for learners and their mastery states.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create learner routes
|
|
12
|
+
*/
|
|
13
|
+
export declare function createLearnerRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=learners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learners.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/learners.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAgXzD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Student self-service routes (/me)
|
|
3
|
+
*
|
|
4
|
+
* Endpoints for authenticated students to manage their own learning.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create /me routes for student self-service
|
|
12
|
+
*/
|
|
13
|
+
export declare function createMeRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=me.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"me.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/me.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAM/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAwdpD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill routes
|
|
3
|
+
*
|
|
4
|
+
* CRUD operations and graph traversal for skills.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { ApiContext } from '../server.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create skill routes
|
|
12
|
+
*/
|
|
13
|
+
export declare function createSkillRoutes(ctx: ApiContext): Hono;
|
|
14
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../../src/api/routes/skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAW/C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAsWvD"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LearnGraph REST API Server
|
|
3
|
+
*
|
|
4
|
+
* Hono-based REST API for skill graphs, learners, and assessments.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { Hono } from 'hono';
|
|
9
|
+
import type { GraphStorage } from '../types/index.js';
|
|
10
|
+
import type { ApiResponse } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* API server configuration
|
|
13
|
+
*/
|
|
14
|
+
export interface ApiServerConfig {
|
|
15
|
+
/** Storage backend */
|
|
16
|
+
storage: GraphStorage;
|
|
17
|
+
/** Base path for API (default: /api) */
|
|
18
|
+
basePath?: string;
|
|
19
|
+
/** Enable CORS (default: true) */
|
|
20
|
+
cors?: boolean;
|
|
21
|
+
/** CORS origins (default: *) */
|
|
22
|
+
corsOrigins?: string[];
|
|
23
|
+
/** Enable request logging (default: true) */
|
|
24
|
+
logging?: boolean;
|
|
25
|
+
/** Enable timing headers (default: true) */
|
|
26
|
+
timing?: boolean;
|
|
27
|
+
/** Enable pretty JSON (default: false in production) */
|
|
28
|
+
prettyJson?: boolean;
|
|
29
|
+
/** Auth middleware (optional) */
|
|
30
|
+
authMiddleware?: (c: unknown, next: () => Promise<void>) => Promise<void | Response>;
|
|
31
|
+
/** Get current user ID from context */
|
|
32
|
+
getCurrentUserId?: (c: unknown) => string | undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extended storage for API with learner support
|
|
36
|
+
* The base GraphStorage handles skill graphs; this extends it with learner operations
|
|
37
|
+
*/
|
|
38
|
+
export interface ExtendedStorage extends GraphStorage {
|
|
39
|
+
createLearner?(input: {
|
|
40
|
+
metadata?: Record<string, unknown>;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
id: string;
|
|
43
|
+
metadata?: Record<string, unknown>;
|
|
44
|
+
createdAt: string;
|
|
45
|
+
updatedAt: string;
|
|
46
|
+
}>;
|
|
47
|
+
getLearner?(id: string): Promise<{
|
|
48
|
+
id: string;
|
|
49
|
+
metadata?: Record<string, unknown>;
|
|
50
|
+
createdAt: string;
|
|
51
|
+
updatedAt: string;
|
|
52
|
+
} | null>;
|
|
53
|
+
updateLearner?(id: string, updates: {
|
|
54
|
+
metadata?: Record<string, unknown>;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
id: string;
|
|
57
|
+
metadata?: Record<string, unknown>;
|
|
58
|
+
createdAt: string;
|
|
59
|
+
updatedAt: string;
|
|
60
|
+
}>;
|
|
61
|
+
deleteLearner?(id: string): Promise<void>;
|
|
62
|
+
getAllLearners?(): Promise<Array<{
|
|
63
|
+
id: string;
|
|
64
|
+
metadata?: Record<string, unknown>;
|
|
65
|
+
createdAt: string;
|
|
66
|
+
updatedAt: string;
|
|
67
|
+
}>>;
|
|
68
|
+
getMastery?(learnerId: string, skillId: string): Promise<{
|
|
69
|
+
skillId: string;
|
|
70
|
+
mastery: number;
|
|
71
|
+
confidence?: number;
|
|
72
|
+
lastUpdated?: string;
|
|
73
|
+
responseHistory?: unknown[];
|
|
74
|
+
} | null>;
|
|
75
|
+
getLearnerMastery?(learnerId: string): Promise<Array<{
|
|
76
|
+
skillId: string;
|
|
77
|
+
mastery: number;
|
|
78
|
+
confidence?: number;
|
|
79
|
+
lastUpdated?: string;
|
|
80
|
+
responseHistory?: unknown[];
|
|
81
|
+
}>>;
|
|
82
|
+
updateMastery?(learnerId: string, skillId: string, response: {
|
|
83
|
+
correct: boolean;
|
|
84
|
+
responseTimeMs?: number;
|
|
85
|
+
questionId?: string;
|
|
86
|
+
}): Promise<{
|
|
87
|
+
skillId: string;
|
|
88
|
+
mastery: number;
|
|
89
|
+
confidence?: number;
|
|
90
|
+
lastUpdated?: string;
|
|
91
|
+
responseHistory?: unknown[];
|
|
92
|
+
}>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* API context passed to route handlers
|
|
96
|
+
*/
|
|
97
|
+
export interface ApiContext {
|
|
98
|
+
storage: ExtendedStorage;
|
|
99
|
+
getCurrentUserId?: (c: unknown) => string | undefined;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Create success response
|
|
103
|
+
*/
|
|
104
|
+
export declare function success<T>(data: T, meta?: ApiResponse<T>['meta']): ApiResponse<T>;
|
|
105
|
+
/**
|
|
106
|
+
* Create error response
|
|
107
|
+
*/
|
|
108
|
+
export declare function error(code: string, message: string, details?: Record<string, unknown>): ApiResponse<never>;
|
|
109
|
+
/**
|
|
110
|
+
* Common error codes
|
|
111
|
+
*/
|
|
112
|
+
export declare const ErrorCodes: {
|
|
113
|
+
readonly NOT_FOUND: "NOT_FOUND";
|
|
114
|
+
readonly BAD_REQUEST: "BAD_REQUEST";
|
|
115
|
+
readonly UNAUTHORIZED: "UNAUTHORIZED";
|
|
116
|
+
readonly FORBIDDEN: "FORBIDDEN";
|
|
117
|
+
readonly CONFLICT: "CONFLICT";
|
|
118
|
+
readonly INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
119
|
+
readonly VALIDATION_ERROR: "VALIDATION_ERROR";
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Create the LearnGraph API server
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* import { createApiServer } from 'learngraph/api';
|
|
127
|
+
* import { MemoryStorage } from 'learngraph/storage';
|
|
128
|
+
*
|
|
129
|
+
* const storage = new MemoryStorage();
|
|
130
|
+
* await storage.connect({ backend: 'memory' });
|
|
131
|
+
*
|
|
132
|
+
* const app = createApiServer({ storage });
|
|
133
|
+
*
|
|
134
|
+
* // Start with Bun
|
|
135
|
+
* export default app;
|
|
136
|
+
*
|
|
137
|
+
* // Or with Node.js
|
|
138
|
+
* import { serve } from '@hono/node-server';
|
|
139
|
+
* serve({ fetch: app.fetch, port: 3000 });
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export declare function createApiServer(config: ApiServerConfig): Hono;
|
|
143
|
+
/**
|
|
144
|
+
* Export Hono type for type inference
|
|
145
|
+
*/
|
|
146
|
+
export type { Hono };
|
|
147
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/api/server.ts"],"names":[],"mappings":"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"}
|