learngraph 0.2.0 → 0.4.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/README.md +82 -1
- package/dist/cjs/llm/adapters/anthropic.js +124 -0
- package/dist/cjs/llm/adapters/anthropic.js.map +1 -0
- package/dist/cjs/llm/adapters/base.js +100 -0
- package/dist/cjs/llm/adapters/base.js.map +1 -0
- package/dist/cjs/llm/adapters/gemini.js +156 -0
- package/dist/cjs/llm/adapters/gemini.js.map +1 -0
- package/dist/cjs/llm/adapters/index.js +33 -0
- package/dist/cjs/llm/adapters/index.js.map +1 -0
- package/dist/cjs/llm/adapters/mediapipe.js +290 -0
- package/dist/cjs/llm/adapters/mediapipe.js.map +1 -0
- package/dist/cjs/llm/adapters/ollama.js +149 -0
- package/dist/cjs/llm/adapters/ollama.js.map +1 -0
- package/dist/cjs/llm/adapters/openai.js +126 -0
- package/dist/cjs/llm/adapters/openai.js.map +1 -0
- package/dist/cjs/llm/adapters/openrouter.js +190 -0
- package/dist/cjs/llm/adapters/openrouter.js.map +1 -0
- package/dist/cjs/llm/index.js +42 -5
- package/dist/cjs/llm/index.js.map +1 -1
- package/dist/cjs/llm/orchestrator.js +219 -0
- package/dist/cjs/llm/orchestrator.js.map +1 -0
- package/dist/cjs/llm/prompts.js +367 -0
- package/dist/cjs/llm/prompts.js.map +1 -0
- package/dist/cjs/types/llm.js +8 -0
- package/dist/cjs/types/llm.js.map +1 -0
- package/dist/esm/llm/adapters/anthropic.js +119 -0
- package/dist/esm/llm/adapters/anthropic.js.map +1 -0
- package/dist/esm/llm/adapters/base.js +95 -0
- package/dist/esm/llm/adapters/base.js.map +1 -0
- package/dist/esm/llm/adapters/gemini.js +151 -0
- package/dist/esm/llm/adapters/gemini.js.map +1 -0
- package/dist/esm/llm/adapters/index.js +13 -0
- package/dist/esm/llm/adapters/index.js.map +1 -0
- package/dist/esm/llm/adapters/mediapipe.js +252 -0
- package/dist/esm/llm/adapters/mediapipe.js.map +1 -0
- package/dist/esm/llm/adapters/ollama.js +144 -0
- package/dist/esm/llm/adapters/ollama.js.map +1 -0
- package/dist/esm/llm/adapters/openai.js +121 -0
- package/dist/esm/llm/adapters/openai.js.map +1 -0
- package/dist/esm/llm/adapters/openrouter.js +185 -0
- package/dist/esm/llm/adapters/openrouter.js.map +1 -0
- package/dist/esm/llm/index.js +12 -6
- package/dist/esm/llm/index.js.map +1 -1
- package/dist/esm/llm/orchestrator.js +214 -0
- package/dist/esm/llm/orchestrator.js.map +1 -0
- package/dist/esm/llm/prompts.js +360 -0
- package/dist/esm/llm/prompts.js.map +1 -0
- package/dist/esm/types/llm.js +7 -0
- package/dist/esm/types/llm.js.map +1 -0
- package/dist/types/llm/adapters/anthropic.d.ts +21 -0
- package/dist/types/llm/adapters/anthropic.d.ts.map +1 -0
- package/dist/types/llm/adapters/base.d.ts +46 -0
- package/dist/types/llm/adapters/base.d.ts.map +1 -0
- package/dist/types/llm/adapters/gemini.d.ts +30 -0
- package/dist/types/llm/adapters/gemini.d.ts.map +1 -0
- package/dist/types/llm/adapters/index.d.ts +14 -0
- package/dist/types/llm/adapters/index.d.ts.map +1 -0
- package/dist/types/llm/adapters/mediapipe.d.ts +113 -0
- package/dist/types/llm/adapters/mediapipe.d.ts.map +1 -0
- package/dist/types/llm/adapters/ollama.d.ts +30 -0
- package/dist/types/llm/adapters/ollama.d.ts.map +1 -0
- package/dist/types/llm/adapters/openai.d.ts +22 -0
- package/dist/types/llm/adapters/openai.d.ts.map +1 -0
- package/dist/types/llm/adapters/openrouter.d.ts +58 -0
- package/dist/types/llm/adapters/openrouter.d.ts.map +1 -0
- package/dist/types/llm/index.d.ts +5 -0
- package/dist/types/llm/index.d.ts.map +1 -1
- package/dist/types/llm/orchestrator.d.ts +35 -0
- package/dist/types/llm/orchestrator.d.ts.map +1 -0
- package/dist/types/llm/prompts.d.ts +269 -0
- package/dist/types/llm/prompts.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/llm.d.ts +337 -0
- package/dist/types/types/llm.d.ts.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM provider types for skill extraction and prerequisite inference
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { BloomLevel } from './bloom.js';
|
|
7
|
+
import type { SkillNodeInput } from './skill.js';
|
|
8
|
+
/**
|
|
9
|
+
* Supported LLM providers
|
|
10
|
+
*/
|
|
11
|
+
export type LLMProvider = 'openai' | 'anthropic' | 'ollama' | 'gemini' | 'openrouter' | 'mediapipe' | 'custom';
|
|
12
|
+
/**
|
|
13
|
+
* Base configuration for all LLM providers
|
|
14
|
+
*/
|
|
15
|
+
export interface LLMConfig {
|
|
16
|
+
/** Provider type */
|
|
17
|
+
provider: LLMProvider;
|
|
18
|
+
/** Model identifier (e.g., 'gpt-4o', 'claude-3-5-sonnet-20241022', 'llama3.2') */
|
|
19
|
+
model: string;
|
|
20
|
+
/** API key (not needed for Ollama) */
|
|
21
|
+
apiKey?: string;
|
|
22
|
+
/** Base URL for API (optional, for custom endpoints) */
|
|
23
|
+
baseUrl?: string;
|
|
24
|
+
/** Maximum tokens to generate */
|
|
25
|
+
maxTokens?: number;
|
|
26
|
+
/** Temperature for generation (0-1) */
|
|
27
|
+
temperature?: number;
|
|
28
|
+
/** Request timeout in milliseconds */
|
|
29
|
+
timeout?: number;
|
|
30
|
+
/** Number of retries on failure */
|
|
31
|
+
retries?: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* OpenAI-specific configuration
|
|
35
|
+
*/
|
|
36
|
+
export interface OpenAIConfig extends LLMConfig {
|
|
37
|
+
provider: 'openai';
|
|
38
|
+
/** Organization ID (optional) */
|
|
39
|
+
organization?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Anthropic-specific configuration
|
|
43
|
+
*/
|
|
44
|
+
export interface AnthropicConfig extends LLMConfig {
|
|
45
|
+
provider: 'anthropic';
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ollama-specific configuration (local models)
|
|
49
|
+
*/
|
|
50
|
+
export interface OllamaConfig extends LLMConfig {
|
|
51
|
+
provider: 'ollama';
|
|
52
|
+
/** Default: http://localhost:11434 */
|
|
53
|
+
baseUrl?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Google Gemini-specific configuration
|
|
57
|
+
*/
|
|
58
|
+
export interface GeminiConfig extends LLMConfig {
|
|
59
|
+
provider: 'gemini';
|
|
60
|
+
/** Project ID for Vertex AI (optional, uses generativelanguage.googleapis.com by default) */
|
|
61
|
+
projectId?: string;
|
|
62
|
+
/** Region for Vertex AI (optional) */
|
|
63
|
+
region?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* OpenRouter-specific configuration
|
|
67
|
+
*/
|
|
68
|
+
export interface OpenRouterConfig extends LLMConfig {
|
|
69
|
+
provider: 'openrouter';
|
|
70
|
+
/** Your site URL for rankings (optional) */
|
|
71
|
+
siteUrl?: string;
|
|
72
|
+
/** Your app name for rankings (optional) */
|
|
73
|
+
appName?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* MediaPipe LLM Inference configuration (local Gemma models)
|
|
77
|
+
*
|
|
78
|
+
* Runs models locally in browser or Node.js using WebGPU/WebAssembly.
|
|
79
|
+
* Supports Gemma 2B, Gemma 7B, Gemma 2 2B, and Gemma 3n models.
|
|
80
|
+
*/
|
|
81
|
+
export interface MediaPipeConfig extends LLMConfig {
|
|
82
|
+
provider: 'mediapipe';
|
|
83
|
+
/** Path to the model file (.bin) - required */
|
|
84
|
+
modelPath: string;
|
|
85
|
+
/** Maximum tokens to generate (default: 1024) */
|
|
86
|
+
maxTokens?: number;
|
|
87
|
+
/** Random seed for generation */
|
|
88
|
+
randomSeed?: number;
|
|
89
|
+
/** Top-K sampling (default: 40) */
|
|
90
|
+
topK?: number;
|
|
91
|
+
/** Number of tokens to use for LoRA ranks (optional) */
|
|
92
|
+
loraRanks?: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Message role in conversation
|
|
96
|
+
*/
|
|
97
|
+
export type MessageRole = 'system' | 'user' | 'assistant';
|
|
98
|
+
/**
|
|
99
|
+
* Chat message
|
|
100
|
+
*/
|
|
101
|
+
export interface ChatMessage {
|
|
102
|
+
role: MessageRole;
|
|
103
|
+
content: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* LLM completion request
|
|
107
|
+
*/
|
|
108
|
+
export interface CompletionRequest {
|
|
109
|
+
/** Messages for chat completion */
|
|
110
|
+
messages: ChatMessage[];
|
|
111
|
+
/** Override temperature for this request */
|
|
112
|
+
temperature?: number;
|
|
113
|
+
/** Override max tokens for this request */
|
|
114
|
+
maxTokens?: number;
|
|
115
|
+
/** Response format (for structured output) */
|
|
116
|
+
responseFormat?: 'text' | 'json';
|
|
117
|
+
/** JSON schema for structured output (if responseFormat is 'json') */
|
|
118
|
+
jsonSchema?: Record<string, unknown>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* LLM completion response
|
|
122
|
+
*/
|
|
123
|
+
export interface CompletionResponse {
|
|
124
|
+
/** Generated text content */
|
|
125
|
+
content: string;
|
|
126
|
+
/** Parsed JSON (if responseFormat was 'json') */
|
|
127
|
+
json?: unknown;
|
|
128
|
+
/** Token usage statistics */
|
|
129
|
+
usage: {
|
|
130
|
+
promptTokens: number;
|
|
131
|
+
completionTokens: number;
|
|
132
|
+
totalTokens: number;
|
|
133
|
+
};
|
|
134
|
+
/** Model used for completion */
|
|
135
|
+
model: string;
|
|
136
|
+
/** Finish reason */
|
|
137
|
+
finishReason: 'stop' | 'length' | 'content_filter' | 'error';
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Request to extract skills from curriculum content
|
|
141
|
+
*/
|
|
142
|
+
export interface SkillExtractionRequest {
|
|
143
|
+
/** Raw curriculum/syllabus content */
|
|
144
|
+
content: string;
|
|
145
|
+
/** Content format hint */
|
|
146
|
+
format?: 'markdown' | 'text' | 'html' | 'pdf';
|
|
147
|
+
/** Domain/subject area hint */
|
|
148
|
+
domain?: string;
|
|
149
|
+
/** Target audience/grade level */
|
|
150
|
+
gradeLevel?: string;
|
|
151
|
+
/** Additional context for extraction */
|
|
152
|
+
context?: string;
|
|
153
|
+
/** Tags to apply to all extracted skills */
|
|
154
|
+
tags?: string[];
|
|
155
|
+
/** Minimum confidence threshold (0-1) */
|
|
156
|
+
minConfidence?: number;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* LLM-extracted skill with metadata
|
|
160
|
+
*/
|
|
161
|
+
export interface ExtractedSkillLLM {
|
|
162
|
+
/** Skill name (concise) */
|
|
163
|
+
name: string;
|
|
164
|
+
/** Skill description */
|
|
165
|
+
description: string;
|
|
166
|
+
/** Detected Bloom's level */
|
|
167
|
+
bloomLevel: BloomLevel;
|
|
168
|
+
/** Difficulty estimate (0-1) */
|
|
169
|
+
difficulty: number;
|
|
170
|
+
/** Confidence in extraction (0-1) */
|
|
171
|
+
confidence: number;
|
|
172
|
+
/** Whether this is a threshold concept */
|
|
173
|
+
isThresholdConcept: boolean;
|
|
174
|
+
/** Estimated time to master in minutes */
|
|
175
|
+
estimatedMinutes?: number;
|
|
176
|
+
/** Source text that generated this skill */
|
|
177
|
+
sourceText?: string;
|
|
178
|
+
/** LLM's reasoning for this extraction */
|
|
179
|
+
reasoning?: string;
|
|
180
|
+
/** Keywords/concepts associated with this skill */
|
|
181
|
+
keywords?: string[];
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Result of skill extraction
|
|
185
|
+
*/
|
|
186
|
+
export interface SkillExtractionResponse {
|
|
187
|
+
/** Extracted skills */
|
|
188
|
+
skills: ExtractedSkillLLM[];
|
|
189
|
+
/** Overall extraction confidence */
|
|
190
|
+
confidence: number;
|
|
191
|
+
/** Token usage */
|
|
192
|
+
usage: CompletionResponse['usage'];
|
|
193
|
+
/** Warnings or notes from extraction */
|
|
194
|
+
warnings: string[];
|
|
195
|
+
/** Processing time in milliseconds */
|
|
196
|
+
durationMs: number;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Request to infer prerequisites between skills
|
|
200
|
+
*/
|
|
201
|
+
export interface PrerequisiteInferenceRequest {
|
|
202
|
+
/** Skills to analyze for prerequisites */
|
|
203
|
+
skills: Array<{
|
|
204
|
+
id: string;
|
|
205
|
+
name: string;
|
|
206
|
+
description: string;
|
|
207
|
+
bloomLevel: BloomLevel;
|
|
208
|
+
difficulty: number;
|
|
209
|
+
}>;
|
|
210
|
+
/** Domain context */
|
|
211
|
+
domain?: string;
|
|
212
|
+
/** Whether to infer transitive prerequisites */
|
|
213
|
+
inferTransitive?: boolean;
|
|
214
|
+
/** Minimum confidence for edge suggestion */
|
|
215
|
+
minConfidence?: number;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Inferred prerequisite relationship
|
|
219
|
+
*/
|
|
220
|
+
export interface InferredPrerequisite {
|
|
221
|
+
/** Source skill ID (the prerequisite) */
|
|
222
|
+
sourceId: string;
|
|
223
|
+
/** Target skill ID (depends on source) */
|
|
224
|
+
targetId: string;
|
|
225
|
+
/** Relationship strength (0-1) */
|
|
226
|
+
strength: number;
|
|
227
|
+
/** Type of prerequisite */
|
|
228
|
+
type: 'hard' | 'soft' | 'recommended';
|
|
229
|
+
/** Confidence in this inference (0-1) */
|
|
230
|
+
confidence: number;
|
|
231
|
+
/** LLM's reasoning for this relationship */
|
|
232
|
+
reasoning: string;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Result of prerequisite inference
|
|
236
|
+
*/
|
|
237
|
+
export interface PrerequisiteInferenceResponse {
|
|
238
|
+
/** Inferred prerequisites */
|
|
239
|
+
prerequisites: InferredPrerequisite[];
|
|
240
|
+
/** Token usage */
|
|
241
|
+
usage: CompletionResponse['usage'];
|
|
242
|
+
/** Processing time in milliseconds */
|
|
243
|
+
durationMs: number;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Request to analyze Bloom's level of text
|
|
247
|
+
*/
|
|
248
|
+
export interface BloomAnalysisRequest {
|
|
249
|
+
/** Text to analyze */
|
|
250
|
+
text: string;
|
|
251
|
+
/** Context for analysis */
|
|
252
|
+
context?: string;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Result of Bloom's level analysis
|
|
256
|
+
*/
|
|
257
|
+
export interface BloomAnalysisResponse {
|
|
258
|
+
/** Detected Bloom's level */
|
|
259
|
+
level: BloomLevel;
|
|
260
|
+
/** Confidence in detection (0-1) */
|
|
261
|
+
confidence: number;
|
|
262
|
+
/** Key verbs/phrases that indicated this level */
|
|
263
|
+
indicators: string[];
|
|
264
|
+
/** LLM's reasoning */
|
|
265
|
+
reasoning: string;
|
|
266
|
+
/** Token usage */
|
|
267
|
+
usage: CompletionResponse['usage'];
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Request to decompose curriculum into a skill graph
|
|
271
|
+
*/
|
|
272
|
+
export interface DecompositionRequest {
|
|
273
|
+
/** Curriculum content */
|
|
274
|
+
content: string;
|
|
275
|
+
/** Title of the course/curriculum */
|
|
276
|
+
title?: string;
|
|
277
|
+
/** Domain/subject */
|
|
278
|
+
domain?: string;
|
|
279
|
+
/** Target grade level */
|
|
280
|
+
gradeLevel?: string;
|
|
281
|
+
/** Additional context */
|
|
282
|
+
context?: string;
|
|
283
|
+
/** Maximum depth of skill hierarchy */
|
|
284
|
+
maxDepth?: number;
|
|
285
|
+
/** Whether to infer prerequisites */
|
|
286
|
+
inferPrerequisites?: boolean;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Result of curriculum decomposition
|
|
290
|
+
*/
|
|
291
|
+
export interface DecompositionResponse {
|
|
292
|
+
/** Course/curriculum title */
|
|
293
|
+
title: string;
|
|
294
|
+
/** Extracted skills */
|
|
295
|
+
skills: ExtractedSkillLLM[];
|
|
296
|
+
/** Inferred prerequisites (if requested) */
|
|
297
|
+
prerequisites: InferredPrerequisite[];
|
|
298
|
+
/** Skill inputs ready for storage */
|
|
299
|
+
skillInputs: SkillNodeInput[];
|
|
300
|
+
/** Token usage */
|
|
301
|
+
usage: CompletionResponse['usage'];
|
|
302
|
+
/** Processing time in milliseconds */
|
|
303
|
+
durationMs: number;
|
|
304
|
+
/** Warnings from processing */
|
|
305
|
+
warnings: string[];
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* LLM adapter interface for different providers
|
|
309
|
+
*/
|
|
310
|
+
export interface LLMAdapter {
|
|
311
|
+
/** Provider name */
|
|
312
|
+
readonly provider: LLMProvider;
|
|
313
|
+
/** Model identifier */
|
|
314
|
+
readonly model: string;
|
|
315
|
+
/** Send a completion request */
|
|
316
|
+
complete(request: CompletionRequest): Promise<CompletionResponse>;
|
|
317
|
+
/** Check if the adapter is properly configured */
|
|
318
|
+
isConfigured(): boolean;
|
|
319
|
+
/** Get current configuration (without sensitive data) */
|
|
320
|
+
getConfig(): Omit<LLMConfig, 'apiKey'>;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* High-level LLM orchestrator for educational tasks
|
|
324
|
+
*/
|
|
325
|
+
export interface LLMOrchestrator {
|
|
326
|
+
/** Extract skills from curriculum content */
|
|
327
|
+
extractSkills(request: SkillExtractionRequest): Promise<SkillExtractionResponse>;
|
|
328
|
+
/** Infer prerequisites between skills */
|
|
329
|
+
inferPrerequisites(request: PrerequisiteInferenceRequest): Promise<PrerequisiteInferenceResponse>;
|
|
330
|
+
/** Analyze Bloom's level of text */
|
|
331
|
+
analyzeBloomLevel(request: BloomAnalysisRequest): Promise<BloomAnalysisResponse>;
|
|
332
|
+
/** Full curriculum decomposition */
|
|
333
|
+
decompose(request: DecompositionRequest): Promise<DecompositionResponse>;
|
|
334
|
+
/** Get the underlying adapter */
|
|
335
|
+
getAdapter(): LLMAdapter;
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/types/llm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE/G;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oBAAoB;IACpB,QAAQ,EAAE,WAAW,CAAC;IAEtB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IAEd,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IACnB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IACnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,QAAQ,EAAE,QAAQ,CAAC;IACnB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,QAAQ,EAAE,YAAY,CAAC;IACvB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,QAAQ,EAAE,WAAW,CAAC;IACtB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAExB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEjC,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAEhB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,6BAA6B;IAC7B,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,oBAAoB;IACpB,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,gBAAgB,GAAG,OAAO,CAAC;CAC9D;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAE9C,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,6BAA6B;IAC7B,UAAU,EAAE,UAAU,CAAC;IAEvB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAE5B,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,uBAAuB;IACvB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAE5B,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IAEnB,kBAAkB;IAClB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEnC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,0CAA0C;IAC1C,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IAEH,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IAEjB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAEjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IAEtC,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,6BAA6B;IAC7B,aAAa,EAAE,oBAAoB,EAAE,CAAC;IAEtC,kBAAkB;IAClB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEnC,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,UAAU,CAAC;IAElB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IAEnB,kDAAkD;IAClD,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAElB,kBAAkB;IAClB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CACpC;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAE5B,4CAA4C;IAC5C,aAAa,EAAE,oBAAoB,EAAE,CAAC;IAEtC,qCAAqC;IACrC,WAAW,EAAE,cAAc,EAAE,CAAC;IAE9B,kBAAkB;IAClB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEnC,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IAEnB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAE/B,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAElE,kDAAkD;IAClD,YAAY,IAAI,OAAO,CAAC;IAExB,yDAAyD;IACzD,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,aAAa,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEjF,yCAAyC;IACzC,kBAAkB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAElG,oCAAoC;IACpC,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEjF,oCAAoC;IACpC,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEzE,iCAAiC;IACjC,UAAU,IAAI,UAAU,CAAC;CAC1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "learngraph",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "The world's first AI-powered learning path generator. Transform syllabi into personalized mastery paths with Zone of Proximal Development (ZPD), Bloom's Taxonomy, spaced repetition, and Bayesian Knowledge Tracing built in. Every student's path to mastery.",
|
|
5
5
|
"author": "Dr. Ernesto Lee <dr.ernesto.lee@gmail.com>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -160,7 +160,8 @@
|
|
|
160
160
|
"peerDependencies": {
|
|
161
161
|
"neo4j-driver": "^5.0.0",
|
|
162
162
|
"level": "^8.0.0",
|
|
163
|
-
"levelgraph": "^3.0.0"
|
|
163
|
+
"levelgraph": "^3.0.0",
|
|
164
|
+
"@mediapipe/tasks-genai": "^0.10.0"
|
|
164
165
|
},
|
|
165
166
|
"peerDependenciesMeta": {
|
|
166
167
|
"neo4j-driver": {
|
|
@@ -171,6 +172,9 @@
|
|
|
171
172
|
},
|
|
172
173
|
"levelgraph": {
|
|
173
174
|
"optional": true
|
|
175
|
+
},
|
|
176
|
+
"@mediapipe/tasks-genai": {
|
|
177
|
+
"optional": true
|
|
174
178
|
}
|
|
175
179
|
}
|
|
176
180
|
}
|