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.
Files changed (259) hide show
  1. package/dist/cjs/api/routes/analytics.js +288 -0
  2. package/dist/cjs/api/routes/analytics.js.map +1 -0
  3. package/dist/cjs/api/routes/assessments.js +269 -0
  4. package/dist/cjs/api/routes/assessments.js.map +1 -0
  5. package/dist/cjs/api/routes/curriculum.js +345 -0
  6. package/dist/cjs/api/routes/curriculum.js.map +1 -0
  7. package/dist/cjs/api/routes/edges.js +162 -0
  8. package/dist/cjs/api/routes/edges.js.map +1 -0
  9. package/dist/cjs/api/routes/explore.js +224 -0
  10. package/dist/cjs/api/routes/explore.js.map +1 -0
  11. package/dist/cjs/api/routes/learners.js +324 -0
  12. package/dist/cjs/api/routes/learners.js.map +1 -0
  13. package/dist/cjs/api/routes/me.js +404 -0
  14. package/dist/cjs/api/routes/me.js.map +1 -0
  15. package/dist/cjs/api/routes/skills.js +319 -0
  16. package/dist/cjs/api/routes/skills.js.map +1 -0
  17. package/dist/cjs/api/server.js +185 -0
  18. package/dist/cjs/api/server.js.map +1 -0
  19. package/dist/cjs/api/types.js +10 -0
  20. package/dist/cjs/api/types.js.map +1 -0
  21. package/dist/cjs/assessment/adaptive.js +390 -0
  22. package/dist/cjs/assessment/adaptive.js.map +1 -0
  23. package/dist/cjs/assessment/bkt.js +362 -0
  24. package/dist/cjs/assessment/bkt.js.map +1 -0
  25. package/dist/cjs/assessment/index.js +54 -0
  26. package/dist/cjs/assessment/index.js.map +1 -0
  27. package/dist/cjs/assessment/irt.js +420 -0
  28. package/dist/cjs/assessment/irt.js.map +1 -0
  29. package/dist/cjs/assessment/mastery-engine.js +411 -0
  30. package/dist/cjs/assessment/mastery-engine.js.map +1 -0
  31. package/dist/cjs/components/LearningPathView.js +320 -0
  32. package/dist/cjs/components/LearningPathView.js.map +1 -0
  33. package/dist/cjs/components/ProgressDashboard.js +308 -0
  34. package/dist/cjs/components/ProgressDashboard.js.map +1 -0
  35. package/dist/cjs/components/SkillCard.js +264 -0
  36. package/dist/cjs/components/SkillCard.js.map +1 -0
  37. package/dist/cjs/components/SkillExplorer.js +401 -0
  38. package/dist/cjs/components/SkillExplorer.js.map +1 -0
  39. package/dist/cjs/components/SkillGraph.js +435 -0
  40. package/dist/cjs/components/SkillGraph.js.map +1 -0
  41. package/dist/cjs/components/hooks.js +510 -0
  42. package/dist/cjs/components/hooks.js.map +1 -0
  43. package/dist/cjs/components/index.js +77 -0
  44. package/dist/cjs/components/index.js.map +1 -0
  45. package/dist/cjs/components/types.js +34 -0
  46. package/dist/cjs/components/types.js.map +1 -0
  47. package/dist/cjs/index.js +36 -2
  48. package/dist/cjs/index.js.map +1 -1
  49. package/dist/cjs/llm/adapters/anthropic.js +91 -3
  50. package/dist/cjs/llm/adapters/anthropic.js.map +1 -1
  51. package/dist/cjs/llm/adapters/gemini.js +101 -8
  52. package/dist/cjs/llm/adapters/gemini.js.map +1 -1
  53. package/dist/cjs/llm/adapters/index.js +42 -1
  54. package/dist/cjs/llm/adapters/index.js.map +1 -1
  55. package/dist/cjs/llm/adapters/ollama.js +120 -3
  56. package/dist/cjs/llm/adapters/ollama.js.map +1 -1
  57. package/dist/cjs/llm/adapters/openai.js +108 -2
  58. package/dist/cjs/llm/adapters/openai.js.map +1 -1
  59. package/dist/cjs/mcp/cli.js +302 -0
  60. package/dist/cjs/mcp/cli.js.map +1 -0
  61. package/dist/cjs/mcp/index.js +79 -0
  62. package/dist/cjs/mcp/index.js.map +1 -0
  63. package/dist/cjs/mcp/prompts.js +425 -0
  64. package/dist/cjs/mcp/prompts.js.map +1 -0
  65. package/dist/cjs/mcp/resources.js +371 -0
  66. package/dist/cjs/mcp/resources.js.map +1 -0
  67. package/dist/cjs/mcp/server.js +410 -0
  68. package/dist/cjs/mcp/server.js.map +1 -0
  69. package/dist/cjs/mcp/tools.js +612 -0
  70. package/dist/cjs/mcp/tools.js.map +1 -0
  71. package/dist/cjs/mcp/types.js +10 -0
  72. package/dist/cjs/mcp/types.js.map +1 -0
  73. package/dist/cjs/query/index.js +23 -4
  74. package/dist/cjs/query/index.js.map +1 -1
  75. package/dist/cjs/query/path.js +313 -0
  76. package/dist/cjs/query/path.js.map +1 -0
  77. package/dist/cjs/query/spaced-repetition.js +298 -0
  78. package/dist/cjs/query/spaced-repetition.js.map +1 -0
  79. package/dist/cjs/query/zpd.js +216 -0
  80. package/dist/cjs/query/zpd.js.map +1 -0
  81. package/dist/cjs/types/assessment.js +46 -0
  82. package/dist/cjs/types/assessment.js.map +1 -0
  83. package/dist/cjs/types/bloom.js +12 -1
  84. package/dist/cjs/types/bloom.js.map +1 -1
  85. package/dist/cjs/types/index.js +7 -1
  86. package/dist/cjs/types/index.js.map +1 -1
  87. package/dist/esm/api/routes/analytics.js +285 -0
  88. package/dist/esm/api/routes/analytics.js.map +1 -0
  89. package/dist/esm/api/routes/assessments.js +266 -0
  90. package/dist/esm/api/routes/assessments.js.map +1 -0
  91. package/dist/esm/api/routes/curriculum.js +342 -0
  92. package/dist/esm/api/routes/curriculum.js.map +1 -0
  93. package/dist/esm/api/routes/edges.js +159 -0
  94. package/dist/esm/api/routes/edges.js.map +1 -0
  95. package/dist/esm/api/routes/explore.js +221 -0
  96. package/dist/esm/api/routes/explore.js.map +1 -0
  97. package/dist/esm/api/routes/learners.js +321 -0
  98. package/dist/esm/api/routes/learners.js.map +1 -0
  99. package/dist/esm/api/routes/me.js +401 -0
  100. package/dist/esm/api/routes/me.js.map +1 -0
  101. package/dist/esm/api/routes/skills.js +316 -0
  102. package/dist/esm/api/routes/skills.js.map +1 -0
  103. package/dist/esm/api/server.js +179 -0
  104. package/dist/esm/api/server.js.map +1 -0
  105. package/dist/esm/api/types.js +9 -0
  106. package/dist/esm/api/types.js.map +1 -0
  107. package/dist/esm/assessment/adaptive.js +384 -0
  108. package/dist/esm/assessment/adaptive.js.map +1 -0
  109. package/dist/esm/assessment/bkt.js +354 -0
  110. package/dist/esm/assessment/bkt.js.map +1 -0
  111. package/dist/esm/assessment/index.js +21 -0
  112. package/dist/esm/assessment/index.js.map +1 -0
  113. package/dist/esm/assessment/irt.js +406 -0
  114. package/dist/esm/assessment/irt.js.map +1 -0
  115. package/dist/esm/assessment/mastery-engine.js +406 -0
  116. package/dist/esm/assessment/mastery-engine.js.map +1 -0
  117. package/dist/esm/components/LearningPathView.js +316 -0
  118. package/dist/esm/components/LearningPathView.js.map +1 -0
  119. package/dist/esm/components/ProgressDashboard.js +304 -0
  120. package/dist/esm/components/ProgressDashboard.js.map +1 -0
  121. package/dist/esm/components/SkillCard.js +260 -0
  122. package/dist/esm/components/SkillCard.js.map +1 -0
  123. package/dist/esm/components/SkillExplorer.js +397 -0
  124. package/dist/esm/components/SkillExplorer.js.map +1 -0
  125. package/dist/esm/components/SkillGraph.js +398 -0
  126. package/dist/esm/components/SkillGraph.js.map +1 -0
  127. package/dist/esm/components/hooks.js +502 -0
  128. package/dist/esm/components/hooks.js.map +1 -0
  129. package/dist/esm/components/index.js +61 -0
  130. package/dist/esm/components/index.js.map +1 -0
  131. package/dist/esm/components/types.js +31 -0
  132. package/dist/esm/components/types.js.map +1 -0
  133. package/dist/esm/index.js +13 -1
  134. package/dist/esm/index.js.map +1 -1
  135. package/dist/esm/llm/adapters/anthropic.js +88 -2
  136. package/dist/esm/llm/adapters/anthropic.js.map +1 -1
  137. package/dist/esm/llm/adapters/gemini.js +98 -7
  138. package/dist/esm/llm/adapters/gemini.js.map +1 -1
  139. package/dist/esm/llm/adapters/index.js +15 -4
  140. package/dist/esm/llm/adapters/index.js.map +1 -1
  141. package/dist/esm/llm/adapters/ollama.js +117 -2
  142. package/dist/esm/llm/adapters/ollama.js.map +1 -1
  143. package/dist/esm/llm/adapters/openai.js +105 -1
  144. package/dist/esm/llm/adapters/openai.js.map +1 -1
  145. package/dist/esm/mcp/cli.js +267 -0
  146. package/dist/esm/mcp/cli.js.map +1 -0
  147. package/dist/esm/mcp/index.js +39 -0
  148. package/dist/esm/mcp/index.js.map +1 -0
  149. package/dist/esm/mcp/prompts.js +419 -0
  150. package/dist/esm/mcp/prompts.js.map +1 -0
  151. package/dist/esm/mcp/resources.js +359 -0
  152. package/dist/esm/mcp/resources.js.map +1 -0
  153. package/dist/esm/mcp/server.js +372 -0
  154. package/dist/esm/mcp/server.js.map +1 -0
  155. package/dist/esm/mcp/tools.js +598 -0
  156. package/dist/esm/mcp/tools.js.map +1 -0
  157. package/dist/esm/mcp/types.js +9 -0
  158. package/dist/esm/mcp/types.js.map +1 -0
  159. package/dist/esm/query/index.js +11 -5
  160. package/dist/esm/query/index.js.map +1 -1
  161. package/dist/esm/query/path.js +308 -0
  162. package/dist/esm/query/path.js.map +1 -0
  163. package/dist/esm/query/spaced-repetition.js +292 -0
  164. package/dist/esm/query/spaced-repetition.js.map +1 -0
  165. package/dist/esm/query/zpd.js +211 -0
  166. package/dist/esm/query/zpd.js.map +1 -0
  167. package/dist/esm/types/assessment.js +40 -0
  168. package/dist/esm/types/assessment.js.map +1 -0
  169. package/dist/esm/types/bloom.js +11 -0
  170. package/dist/esm/types/bloom.js.map +1 -1
  171. package/dist/esm/types/index.js +2 -1
  172. package/dist/esm/types/index.js.map +1 -1
  173. package/dist/types/api/routes/analytics.d.ts +14 -0
  174. package/dist/types/api/routes/analytics.d.ts.map +1 -0
  175. package/dist/types/api/routes/assessments.d.ts +14 -0
  176. package/dist/types/api/routes/assessments.d.ts.map +1 -0
  177. package/dist/types/api/routes/curriculum.d.ts +14 -0
  178. package/dist/types/api/routes/curriculum.d.ts.map +1 -0
  179. package/dist/types/api/routes/edges.d.ts +14 -0
  180. package/dist/types/api/routes/edges.d.ts.map +1 -0
  181. package/dist/types/api/routes/explore.d.ts +14 -0
  182. package/dist/types/api/routes/explore.d.ts.map +1 -0
  183. package/dist/types/api/routes/learners.d.ts +14 -0
  184. package/dist/types/api/routes/learners.d.ts.map +1 -0
  185. package/dist/types/api/routes/me.d.ts +14 -0
  186. package/dist/types/api/routes/me.d.ts.map +1 -0
  187. package/dist/types/api/routes/skills.d.ts +14 -0
  188. package/dist/types/api/routes/skills.d.ts.map +1 -0
  189. package/dist/types/api/server.d.ts +147 -0
  190. package/dist/types/api/server.d.ts.map +1 -0
  191. package/dist/types/api/types.d.ts +443 -0
  192. package/dist/types/api/types.d.ts.map +1 -0
  193. package/dist/types/assessment/adaptive.d.ts +155 -0
  194. package/dist/types/assessment/adaptive.d.ts.map +1 -0
  195. package/dist/types/assessment/bkt.d.ts +185 -0
  196. package/dist/types/assessment/bkt.d.ts.map +1 -0
  197. package/dist/types/assessment/index.d.ts +18 -0
  198. package/dist/types/assessment/index.d.ts.map +1 -0
  199. package/dist/types/assessment/irt.d.ts +159 -0
  200. package/dist/types/assessment/irt.d.ts.map +1 -0
  201. package/dist/types/assessment/mastery-engine.d.ts +178 -0
  202. package/dist/types/assessment/mastery-engine.d.ts.map +1 -0
  203. package/dist/types/components/LearningPathView.d.ts +40 -0
  204. package/dist/types/components/LearningPathView.d.ts.map +1 -0
  205. package/dist/types/components/ProgressDashboard.d.ts +49 -0
  206. package/dist/types/components/ProgressDashboard.d.ts.map +1 -0
  207. package/dist/types/components/SkillCard.d.ts +34 -0
  208. package/dist/types/components/SkillCard.d.ts.map +1 -0
  209. package/dist/types/components/SkillExplorer.d.ts +39 -0
  210. package/dist/types/components/SkillExplorer.d.ts.map +1 -0
  211. package/dist/types/components/SkillGraph.d.ts +38 -0
  212. package/dist/types/components/SkillGraph.d.ts.map +1 -0
  213. package/dist/types/components/hooks.d.ts +187 -0
  214. package/dist/types/components/hooks.d.ts.map +1 -0
  215. package/dist/types/components/index.d.ts +59 -0
  216. package/dist/types/components/index.d.ts.map +1 -0
  217. package/dist/types/components/types.d.ts +410 -0
  218. package/dist/types/components/types.d.ts.map +1 -0
  219. package/dist/types/index.d.ts +2 -1
  220. package/dist/types/index.d.ts.map +1 -1
  221. package/dist/types/llm/adapters/anthropic.d.ts +84 -1
  222. package/dist/types/llm/adapters/anthropic.d.ts.map +1 -1
  223. package/dist/types/llm/adapters/gemini.d.ts +93 -6
  224. package/dist/types/llm/adapters/gemini.d.ts.map +1 -1
  225. package/dist/types/llm/adapters/index.d.ts +13 -4
  226. package/dist/types/llm/adapters/index.d.ts.map +1 -1
  227. package/dist/types/llm/adapters/ollama.d.ts +126 -1
  228. package/dist/types/llm/adapters/ollama.d.ts.map +1 -1
  229. package/dist/types/llm/adapters/openai.d.ts +104 -1
  230. package/dist/types/llm/adapters/openai.d.ts.map +1 -1
  231. package/dist/types/mcp/cli.d.ts +15 -0
  232. package/dist/types/mcp/cli.d.ts.map +1 -0
  233. package/dist/types/mcp/index.d.ts +32 -0
  234. package/dist/types/mcp/index.d.ts.map +1 -0
  235. package/dist/types/mcp/prompts.d.ts +27 -0
  236. package/dist/types/mcp/prompts.d.ts.map +1 -0
  237. package/dist/types/mcp/resources.d.ts +59 -0
  238. package/dist/types/mcp/resources.d.ts.map +1 -0
  239. package/dist/types/mcp/server.d.ts +136 -0
  240. package/dist/types/mcp/server.d.ts.map +1 -0
  241. package/dist/types/mcp/tools.d.ts +344 -0
  242. package/dist/types/mcp/tools.d.ts.map +1 -0
  243. package/dist/types/mcp/types.d.ts +137 -0
  244. package/dist/types/mcp/types.d.ts.map +1 -0
  245. package/dist/types/query/index.d.ts +8 -0
  246. package/dist/types/query/index.d.ts.map +1 -1
  247. package/dist/types/query/path.d.ts +102 -0
  248. package/dist/types/query/path.d.ts.map +1 -0
  249. package/dist/types/query/spaced-repetition.d.ts +135 -0
  250. package/dist/types/query/spaced-repetition.d.ts.map +1 -0
  251. package/dist/types/query/zpd.d.ts +97 -0
  252. package/dist/types/query/zpd.d.ts.map +1 -0
  253. package/dist/types/types/assessment.d.ts +512 -0
  254. package/dist/types/types/assessment.d.ts.map +1 -0
  255. package/dist/types/types/bloom.d.ts +4 -0
  256. package/dist/types/types/bloom.d.ts.map +1 -1
  257. package/dist/types/types/index.d.ts +3 -1
  258. package/dist/types/types/index.d.ts.map +1 -1
  259. 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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"}