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,443 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REST API Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the LearnGraph REST API.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import type { SkillId, QuestionId } from '../types/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Learner identifier (string alias for readability)
|
|
11
|
+
*/
|
|
12
|
+
export type LearnerId = string;
|
|
13
|
+
/**
|
|
14
|
+
* API Response wrapper
|
|
15
|
+
*/
|
|
16
|
+
export interface ApiResponse<T> {
|
|
17
|
+
success: boolean;
|
|
18
|
+
data?: T;
|
|
19
|
+
error?: ApiError;
|
|
20
|
+
meta?: ResponseMeta;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* API Error
|
|
24
|
+
*/
|
|
25
|
+
export interface ApiError {
|
|
26
|
+
code: string;
|
|
27
|
+
message: string;
|
|
28
|
+
details?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Response metadata (pagination, timing, etc.)
|
|
32
|
+
*/
|
|
33
|
+
export interface ResponseMeta {
|
|
34
|
+
total?: number;
|
|
35
|
+
page?: number;
|
|
36
|
+
pageSize?: number;
|
|
37
|
+
hasMore?: boolean;
|
|
38
|
+
requestId?: string;
|
|
39
|
+
timing?: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Common pagination parameters
|
|
43
|
+
*/
|
|
44
|
+
export interface PaginationParams {
|
|
45
|
+
page?: number;
|
|
46
|
+
pageSize?: number;
|
|
47
|
+
offset?: number;
|
|
48
|
+
limit?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Skill query parameters
|
|
52
|
+
*/
|
|
53
|
+
export interface SkillQueryParams extends PaginationParams {
|
|
54
|
+
tags?: string[];
|
|
55
|
+
bloomLevel?: string;
|
|
56
|
+
difficulty?: {
|
|
57
|
+
min?: number;
|
|
58
|
+
max?: number;
|
|
59
|
+
};
|
|
60
|
+
search?: string;
|
|
61
|
+
expand?: string[];
|
|
62
|
+
sortBy?: 'name' | 'difficulty' | 'createdAt' | 'updatedAt';
|
|
63
|
+
sortOrder?: 'asc' | 'desc';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Learner query parameters
|
|
67
|
+
*/
|
|
68
|
+
export interface LearnerQueryParams extends PaginationParams {
|
|
69
|
+
search?: string;
|
|
70
|
+
minMastery?: number;
|
|
71
|
+
maxMastery?: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create skill request
|
|
75
|
+
*/
|
|
76
|
+
export interface CreateSkillRequest {
|
|
77
|
+
name: string;
|
|
78
|
+
description: string;
|
|
79
|
+
bloomLevel: string;
|
|
80
|
+
difficulty?: number;
|
|
81
|
+
isThresholdConcept?: boolean;
|
|
82
|
+
masteryThreshold?: number;
|
|
83
|
+
estimatedMinutes?: number;
|
|
84
|
+
tags?: string[];
|
|
85
|
+
metadata?: Record<string, unknown>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Update skill request
|
|
89
|
+
*/
|
|
90
|
+
export interface UpdateSkillRequest {
|
|
91
|
+
name?: string;
|
|
92
|
+
description?: string;
|
|
93
|
+
bloomLevel?: string;
|
|
94
|
+
difficulty?: number;
|
|
95
|
+
isThresholdConcept?: boolean;
|
|
96
|
+
masteryThreshold?: number;
|
|
97
|
+
estimatedMinutes?: number;
|
|
98
|
+
tags?: string[];
|
|
99
|
+
metadata?: Record<string, unknown>;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Skill with expansion data
|
|
103
|
+
*/
|
|
104
|
+
export interface SkillWithExpansions {
|
|
105
|
+
id: SkillId;
|
|
106
|
+
name: string;
|
|
107
|
+
description: string;
|
|
108
|
+
bloomLevel: string;
|
|
109
|
+
difficulty: number;
|
|
110
|
+
isThresholdConcept: boolean;
|
|
111
|
+
masteryThreshold: number;
|
|
112
|
+
estimatedMinutes: number;
|
|
113
|
+
tags: string[];
|
|
114
|
+
metadata: Record<string, unknown>;
|
|
115
|
+
createdAt: string;
|
|
116
|
+
updatedAt: string;
|
|
117
|
+
prerequisites?: PrerequisiteSummary[];
|
|
118
|
+
dependents?: DependentSummary[];
|
|
119
|
+
questions?: QuestionSummary[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Prerequisite skill summary
|
|
123
|
+
*/
|
|
124
|
+
export interface PrerequisiteSummary {
|
|
125
|
+
id: SkillId;
|
|
126
|
+
name: string;
|
|
127
|
+
strength: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Dependent skill summary
|
|
131
|
+
*/
|
|
132
|
+
export interface DependentSummary {
|
|
133
|
+
id: SkillId;
|
|
134
|
+
name: string;
|
|
135
|
+
strength: number;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Question summary
|
|
139
|
+
*/
|
|
140
|
+
export interface QuestionSummary {
|
|
141
|
+
id: QuestionId;
|
|
142
|
+
prompt: string;
|
|
143
|
+
type: string;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Create edge request
|
|
147
|
+
*/
|
|
148
|
+
export interface CreateEdgeRequest {
|
|
149
|
+
from: SkillId;
|
|
150
|
+
to: SkillId;
|
|
151
|
+
strength?: number;
|
|
152
|
+
type?: string;
|
|
153
|
+
metadata?: Record<string, unknown>;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Update edge request
|
|
157
|
+
*/
|
|
158
|
+
export interface UpdateEdgeRequest {
|
|
159
|
+
strength?: number;
|
|
160
|
+
type?: string;
|
|
161
|
+
metadata?: Record<string, unknown>;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Create learner request
|
|
165
|
+
*/
|
|
166
|
+
export interface CreateLearnerRequest {
|
|
167
|
+
name?: string;
|
|
168
|
+
email?: string;
|
|
169
|
+
metadata?: Record<string, unknown>;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Learner profile response
|
|
173
|
+
*/
|
|
174
|
+
export interface LearnerProfileResponse {
|
|
175
|
+
id: LearnerId;
|
|
176
|
+
name?: string;
|
|
177
|
+
email?: string;
|
|
178
|
+
masteryCount: number;
|
|
179
|
+
averageMastery: number;
|
|
180
|
+
createdAt: string;
|
|
181
|
+
updatedAt: string;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Learner dashboard response
|
|
185
|
+
*/
|
|
186
|
+
export interface LearnerDashboardResponse {
|
|
187
|
+
profile: LearnerProfileResponse;
|
|
188
|
+
mastery: MasterySummary;
|
|
189
|
+
zpd: ZPDSummary;
|
|
190
|
+
reviews: ReviewSummary;
|
|
191
|
+
progress: ProgressSummary;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Mastery summary for dashboard
|
|
195
|
+
*/
|
|
196
|
+
export interface MasterySummary {
|
|
197
|
+
totalSkills: number;
|
|
198
|
+
masteredSkills: number;
|
|
199
|
+
inProgressSkills: number;
|
|
200
|
+
notStartedSkills: number;
|
|
201
|
+
averageMastery: number;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* ZPD summary for dashboard
|
|
205
|
+
*/
|
|
206
|
+
export interface ZPDSummary {
|
|
207
|
+
readyToLearn: number;
|
|
208
|
+
recommendedNext: SkillId[];
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Review summary for dashboard
|
|
212
|
+
*/
|
|
213
|
+
export interface ReviewSummary {
|
|
214
|
+
dueNow: number;
|
|
215
|
+
dueSoon: number;
|
|
216
|
+
nextReviewSkill?: SkillId;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Progress summary for dashboard
|
|
220
|
+
*/
|
|
221
|
+
export interface ProgressSummary {
|
|
222
|
+
streak: number;
|
|
223
|
+
lastActiveAt?: string;
|
|
224
|
+
skillsThisWeek: number;
|
|
225
|
+
totalTimeMinutes: number;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Record response request
|
|
229
|
+
*/
|
|
230
|
+
export interface RecordResponseRequest {
|
|
231
|
+
correct: boolean;
|
|
232
|
+
responseTimeMs?: number;
|
|
233
|
+
questionId?: QuestionId;
|
|
234
|
+
metadata?: Record<string, unknown>;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Mastery state response
|
|
238
|
+
*/
|
|
239
|
+
export interface MasteryStateResponse {
|
|
240
|
+
skillId: SkillId;
|
|
241
|
+
skillName: string;
|
|
242
|
+
mastery: number;
|
|
243
|
+
confidence: number;
|
|
244
|
+
isMastered: boolean;
|
|
245
|
+
lastPracticed?: string;
|
|
246
|
+
responseCount: number;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Learning path response
|
|
250
|
+
*/
|
|
251
|
+
export interface LearningPathResponse {
|
|
252
|
+
targetSkill?: SkillId;
|
|
253
|
+
skills: PathSkill[];
|
|
254
|
+
totalMinutes: number;
|
|
255
|
+
sessions: PathSession[];
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Skill in learning path
|
|
259
|
+
*/
|
|
260
|
+
export interface PathSkill {
|
|
261
|
+
id: SkillId;
|
|
262
|
+
name: string;
|
|
263
|
+
bloomLevel: string;
|
|
264
|
+
estimatedMinutes: number;
|
|
265
|
+
currentMastery: number;
|
|
266
|
+
isCheckpoint: boolean;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Study session in path
|
|
270
|
+
*/
|
|
271
|
+
export interface PathSession {
|
|
272
|
+
skills: SkillId[];
|
|
273
|
+
estimatedMinutes: number;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Start assessment session request
|
|
277
|
+
*/
|
|
278
|
+
export interface StartSessionRequest {
|
|
279
|
+
assessmentId: string;
|
|
280
|
+
config?: {
|
|
281
|
+
maxQuestions?: number;
|
|
282
|
+
timeLimit?: number;
|
|
283
|
+
targetPrecision?: number;
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Assessment session response
|
|
288
|
+
*/
|
|
289
|
+
export interface SessionResponse {
|
|
290
|
+
sessionId: string;
|
|
291
|
+
status: 'active' | 'completed' | 'terminated';
|
|
292
|
+
currentQuestion?: QuestionResponse;
|
|
293
|
+
questionsAnswered: number;
|
|
294
|
+
estimatedAbility?: number;
|
|
295
|
+
standardError?: number;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Question response
|
|
299
|
+
*/
|
|
300
|
+
export interface QuestionResponse {
|
|
301
|
+
id: QuestionId;
|
|
302
|
+
prompt: string;
|
|
303
|
+
type: string;
|
|
304
|
+
options?: string[];
|
|
305
|
+
skillId: SkillId;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Submit answer request
|
|
309
|
+
*/
|
|
310
|
+
export interface SubmitAnswerRequest {
|
|
311
|
+
answer: unknown;
|
|
312
|
+
responseTimeMs?: number;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Assessment result response
|
|
316
|
+
*/
|
|
317
|
+
export interface AssessmentResultResponse {
|
|
318
|
+
sessionId: string;
|
|
319
|
+
abilityEstimate: number;
|
|
320
|
+
standardError: number;
|
|
321
|
+
percentile: number;
|
|
322
|
+
questionsAnswered: number;
|
|
323
|
+
correctCount: number;
|
|
324
|
+
masteryUpdates: MasteryStateResponse[];
|
|
325
|
+
recommendations: SkillId[];
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Learning goal
|
|
329
|
+
*/
|
|
330
|
+
export interface LearningGoal {
|
|
331
|
+
id: string;
|
|
332
|
+
targetSkillId: SkillId;
|
|
333
|
+
targetSkillName: string;
|
|
334
|
+
targetDate?: string;
|
|
335
|
+
progress: number;
|
|
336
|
+
createdAt: string;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Create goal request
|
|
340
|
+
*/
|
|
341
|
+
export interface CreateGoalRequest {
|
|
342
|
+
targetSkillId: SkillId;
|
|
343
|
+
targetDate?: string;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Study session request
|
|
347
|
+
*/
|
|
348
|
+
export interface StartStudySessionRequest {
|
|
349
|
+
minutes: number;
|
|
350
|
+
skillIds?: SkillId[];
|
|
351
|
+
focus?: 'new' | 'review' | 'mixed';
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Study session response
|
|
355
|
+
*/
|
|
356
|
+
export interface StudySessionResponse {
|
|
357
|
+
sessionId: string;
|
|
358
|
+
estimatedMinutes: number;
|
|
359
|
+
skills: PathSkill[];
|
|
360
|
+
questionsTotal: number;
|
|
361
|
+
reviewsTotal: number;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Skill analytics response
|
|
365
|
+
*/
|
|
366
|
+
export interface SkillAnalyticsResponse {
|
|
367
|
+
skillId: SkillId;
|
|
368
|
+
skillName: string;
|
|
369
|
+
learnerCount: number;
|
|
370
|
+
averageMastery: number;
|
|
371
|
+
masteryDistribution: number[];
|
|
372
|
+
averageTimeToMastery: number;
|
|
373
|
+
commonMistakes: string[];
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Cohort analytics response
|
|
377
|
+
*/
|
|
378
|
+
export interface CohortAnalyticsResponse {
|
|
379
|
+
learnerCount: number;
|
|
380
|
+
averageMastery: number;
|
|
381
|
+
masteryDistribution: number[];
|
|
382
|
+
strugglingSkills: SkillId[];
|
|
383
|
+
topPerformers: LearnerId[];
|
|
384
|
+
atRiskLearners: LearnerId[];
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Prerequisites response
|
|
388
|
+
*/
|
|
389
|
+
export interface PrerequisitesResponse {
|
|
390
|
+
skillId: SkillId;
|
|
391
|
+
skillName: string;
|
|
392
|
+
prerequisites: PrerequisiteDetail[];
|
|
393
|
+
depth?: number;
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Prerequisite detail
|
|
397
|
+
*/
|
|
398
|
+
export interface PrerequisiteDetail {
|
|
399
|
+
id: SkillId;
|
|
400
|
+
name: string;
|
|
401
|
+
bloomLevel: string;
|
|
402
|
+
strength: number;
|
|
403
|
+
depth: number;
|
|
404
|
+
mastery?: number;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Dependents response
|
|
408
|
+
*/
|
|
409
|
+
export interface DependentsResponse {
|
|
410
|
+
skillId: SkillId;
|
|
411
|
+
skillName: string;
|
|
412
|
+
dependents: DependentDetail[];
|
|
413
|
+
depth?: number;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Dependent detail
|
|
417
|
+
*/
|
|
418
|
+
export interface DependentDetail {
|
|
419
|
+
id: SkillId;
|
|
420
|
+
name: string;
|
|
421
|
+
bloomLevel: string;
|
|
422
|
+
strength: number;
|
|
423
|
+
depth: number;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Path between skills response
|
|
427
|
+
*/
|
|
428
|
+
export interface SkillPathResponse {
|
|
429
|
+
from: SkillId;
|
|
430
|
+
to: SkillId;
|
|
431
|
+
path: PathNode[];
|
|
432
|
+
totalSteps: number;
|
|
433
|
+
exists: boolean;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Node in skill path
|
|
437
|
+
*/
|
|
438
|
+
export interface PathNode {
|
|
439
|
+
id: SkillId;
|
|
440
|
+
name: string;
|
|
441
|
+
step: number;
|
|
442
|
+
}
|
|
443
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adaptive Assessment Framework
|
|
3
|
+
*
|
|
4
|
+
* Implements adaptive testing with:
|
|
5
|
+
* - IRT-based item selection (Maximum Fisher Information)
|
|
6
|
+
* - Content balancing across skills
|
|
7
|
+
* - Termination criteria (precision, item count, time)
|
|
8
|
+
* - Real-time ability estimation
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import type { SkillId, QuestionId, Question, Assessment, IRTParameters, IRTAbilityEstimate, AdaptiveState, AdaptiveConfig, ItemSelection, TerminationCriteria } from '../types/index.js';
|
|
13
|
+
import { type IRTResponse } from './irt.js';
|
|
14
|
+
/**
|
|
15
|
+
* Default adaptive configuration
|
|
16
|
+
*/
|
|
17
|
+
export declare const ADAPTIVE_DEFAULTS: Required<AdaptiveConfig>;
|
|
18
|
+
/**
|
|
19
|
+
* Default termination criteria
|
|
20
|
+
*/
|
|
21
|
+
export declare const TERMINATION_DEFAULTS: Required<TerminationCriteria>;
|
|
22
|
+
/**
|
|
23
|
+
* Question pool for adaptive testing
|
|
24
|
+
*/
|
|
25
|
+
export interface QuestionPool {
|
|
26
|
+
/** Available questions */
|
|
27
|
+
questions: Map<QuestionId, Question>;
|
|
28
|
+
/** IRT parameters for questions (if calibrated) */
|
|
29
|
+
irtParams: Map<QuestionId, IRTParameters>;
|
|
30
|
+
/** Questions by skill */
|
|
31
|
+
bySkill: Map<SkillId, QuestionId[]>;
|
|
32
|
+
/** Exposure counts (for exposure control) */
|
|
33
|
+
exposureCounts: Map<QuestionId, number>;
|
|
34
|
+
/** Total administrations */
|
|
35
|
+
totalAdministrations: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Active adaptive session
|
|
39
|
+
*/
|
|
40
|
+
export interface AdaptiveSession {
|
|
41
|
+
/** Session ID */
|
|
42
|
+
id: string;
|
|
43
|
+
/** Assessment being administered */
|
|
44
|
+
assessmentId: string;
|
|
45
|
+
/** Learner ID */
|
|
46
|
+
learnerId: string;
|
|
47
|
+
/** Question pool */
|
|
48
|
+
pool: QuestionPool;
|
|
49
|
+
/** Administered questions in order */
|
|
50
|
+
administeredQuestions: QuestionId[];
|
|
51
|
+
/** Responses */
|
|
52
|
+
responses: IRTResponse[];
|
|
53
|
+
/** Current ability estimate */
|
|
54
|
+
abilityEstimate: IRTAbilityEstimate;
|
|
55
|
+
/** Content coverage counts */
|
|
56
|
+
contentCoverage: Map<SkillId, number>;
|
|
57
|
+
/** Start time */
|
|
58
|
+
startTime: Date;
|
|
59
|
+
/** Configuration */
|
|
60
|
+
config: Required<AdaptiveConfig>;
|
|
61
|
+
/** Termination criteria */
|
|
62
|
+
termination: Required<TerminationCriteria>;
|
|
63
|
+
/** Current state */
|
|
64
|
+
state: AdaptiveState;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Adaptive Assessment Engine
|
|
68
|
+
*
|
|
69
|
+
* Manages adaptive testing sessions with intelligent item selection.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const engine = new AdaptiveEngine();
|
|
74
|
+
*
|
|
75
|
+
* // Create session
|
|
76
|
+
* const session = engine.createSession(pool, assessment, 'learner-1');
|
|
77
|
+
*
|
|
78
|
+
* // Get next question
|
|
79
|
+
* const next = engine.selectNextQuestion(session);
|
|
80
|
+
* if (next) {
|
|
81
|
+
* // Present question to learner...
|
|
82
|
+
* session = engine.recordResponse(session, next.questionId, true);
|
|
83
|
+
* }
|
|
84
|
+
*
|
|
85
|
+
* // Check if complete
|
|
86
|
+
* if (engine.shouldTerminate(session)) {
|
|
87
|
+
* const result = engine.getResult(session);
|
|
88
|
+
* }
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare class AdaptiveEngine {
|
|
92
|
+
private readonly irtEstimator;
|
|
93
|
+
constructor();
|
|
94
|
+
/**
|
|
95
|
+
* Create a new adaptive session
|
|
96
|
+
*/
|
|
97
|
+
createSession(pool: QuestionPool, assessment: Assessment, learnerId: string, config?: AdaptiveConfig, termination?: TerminationCriteria): AdaptiveSession;
|
|
98
|
+
/**
|
|
99
|
+
* Select the next question using the configured strategy
|
|
100
|
+
*/
|
|
101
|
+
selectNextQuestion(session: AdaptiveSession): ItemSelection | null;
|
|
102
|
+
/**
|
|
103
|
+
* Record a response and update ability estimate
|
|
104
|
+
*/
|
|
105
|
+
recordResponse(session: AdaptiveSession, questionId: QuestionId, correct: boolean): AdaptiveSession;
|
|
106
|
+
/**
|
|
107
|
+
* Check if assessment should terminate
|
|
108
|
+
*/
|
|
109
|
+
shouldTerminate(session: AdaptiveSession): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Get reason for termination
|
|
112
|
+
*/
|
|
113
|
+
private getTerminationReason;
|
|
114
|
+
/**
|
|
115
|
+
* Get eligible questions based on constraints
|
|
116
|
+
*/
|
|
117
|
+
private getEligibleQuestions;
|
|
118
|
+
/**
|
|
119
|
+
* Maximum Fisher Information selection
|
|
120
|
+
*/
|
|
121
|
+
private selectMFI;
|
|
122
|
+
/**
|
|
123
|
+
* Kullback-Leibler information selection
|
|
124
|
+
* (Simplified implementation - selects based on KL divergence)
|
|
125
|
+
*/
|
|
126
|
+
private selectKL;
|
|
127
|
+
/**
|
|
128
|
+
* Expected Bayesian Information selection
|
|
129
|
+
*/
|
|
130
|
+
private selectEBI;
|
|
131
|
+
/**
|
|
132
|
+
* Minimum Expected Posterior Variance selection
|
|
133
|
+
*/
|
|
134
|
+
private selectMEPV;
|
|
135
|
+
/**
|
|
136
|
+
* Get session result
|
|
137
|
+
*/
|
|
138
|
+
getResult(session: AdaptiveSession): {
|
|
139
|
+
abilityEstimate: IRTAbilityEstimate;
|
|
140
|
+
score: number;
|
|
141
|
+
itemCount: number;
|
|
142
|
+
elapsedMinutes: number;
|
|
143
|
+
contentCoverage: Map<SkillId, number>;
|
|
144
|
+
terminationReason: string;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Create question pool from questions with IRT parameters
|
|
149
|
+
*/
|
|
150
|
+
export declare function createQuestionPool(questions: Question[], getIRTParams?: (q: Question) => IRTParameters | undefined): QuestionPool;
|
|
151
|
+
/**
|
|
152
|
+
* Create an adaptive engine
|
|
153
|
+
*/
|
|
154
|
+
export declare function createAdaptiveEngine(): AdaptiveEngine;
|
|
155
|
+
//# sourceMappingURL=adaptive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adaptive.d.ts","sourceRoot":"","sources":["../../../src/assessment/adaptive.ts"],"names":[],"mappings":"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"}
|