learngraph 0.2.0 → 0.3.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 (58) hide show
  1. package/README.md +82 -1
  2. package/dist/cjs/llm/adapters/anthropic.js +124 -0
  3. package/dist/cjs/llm/adapters/anthropic.js.map +1 -0
  4. package/dist/cjs/llm/adapters/base.js +100 -0
  5. package/dist/cjs/llm/adapters/base.js.map +1 -0
  6. package/dist/cjs/llm/adapters/index.js +22 -0
  7. package/dist/cjs/llm/adapters/index.js.map +1 -0
  8. package/dist/cjs/llm/adapters/ollama.js +149 -0
  9. package/dist/cjs/llm/adapters/ollama.js.map +1 -0
  10. package/dist/cjs/llm/adapters/openai.js +126 -0
  11. package/dist/cjs/llm/adapters/openai.js.map +1 -0
  12. package/dist/cjs/llm/index.js +34 -5
  13. package/dist/cjs/llm/index.js.map +1 -1
  14. package/dist/cjs/llm/orchestrator.js +219 -0
  15. package/dist/cjs/llm/orchestrator.js.map +1 -0
  16. package/dist/cjs/llm/prompts.js +367 -0
  17. package/dist/cjs/llm/prompts.js.map +1 -0
  18. package/dist/cjs/types/llm.js +8 -0
  19. package/dist/cjs/types/llm.js.map +1 -0
  20. package/dist/esm/llm/adapters/anthropic.js +119 -0
  21. package/dist/esm/llm/adapters/anthropic.js.map +1 -0
  22. package/dist/esm/llm/adapters/base.js +95 -0
  23. package/dist/esm/llm/adapters/base.js.map +1 -0
  24. package/dist/esm/llm/adapters/index.js +10 -0
  25. package/dist/esm/llm/adapters/index.js.map +1 -0
  26. package/dist/esm/llm/adapters/ollama.js +144 -0
  27. package/dist/esm/llm/adapters/ollama.js.map +1 -0
  28. package/dist/esm/llm/adapters/openai.js +121 -0
  29. package/dist/esm/llm/adapters/openai.js.map +1 -0
  30. package/dist/esm/llm/index.js +12 -6
  31. package/dist/esm/llm/index.js.map +1 -1
  32. package/dist/esm/llm/orchestrator.js +214 -0
  33. package/dist/esm/llm/orchestrator.js.map +1 -0
  34. package/dist/esm/llm/prompts.js +360 -0
  35. package/dist/esm/llm/prompts.js.map +1 -0
  36. package/dist/esm/types/llm.js +7 -0
  37. package/dist/esm/types/llm.js.map +1 -0
  38. package/dist/types/llm/adapters/anthropic.d.ts +21 -0
  39. package/dist/types/llm/adapters/anthropic.d.ts.map +1 -0
  40. package/dist/types/llm/adapters/base.d.ts +46 -0
  41. package/dist/types/llm/adapters/base.d.ts.map +1 -0
  42. package/dist/types/llm/adapters/index.d.ts +11 -0
  43. package/dist/types/llm/adapters/index.d.ts.map +1 -0
  44. package/dist/types/llm/adapters/ollama.d.ts +30 -0
  45. package/dist/types/llm/adapters/ollama.d.ts.map +1 -0
  46. package/dist/types/llm/adapters/openai.d.ts +22 -0
  47. package/dist/types/llm/adapters/openai.d.ts.map +1 -0
  48. package/dist/types/llm/index.d.ts +5 -0
  49. package/dist/types/llm/index.d.ts.map +1 -1
  50. package/dist/types/llm/orchestrator.d.ts +35 -0
  51. package/dist/types/llm/orchestrator.d.ts.map +1 -0
  52. package/dist/types/llm/prompts.d.ts +269 -0
  53. package/dist/types/llm/prompts.d.ts.map +1 -0
  54. package/dist/types/types/index.d.ts +1 -0
  55. package/dist/types/types/index.d.ts.map +1 -1
  56. package/dist/types/types/llm.d.ts +298 -0
  57. package/dist/types/types/llm.d.ts.map +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,298 @@
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' | '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
+ * Message role in conversation
57
+ */
58
+ export type MessageRole = 'system' | 'user' | 'assistant';
59
+ /**
60
+ * Chat message
61
+ */
62
+ export interface ChatMessage {
63
+ role: MessageRole;
64
+ content: string;
65
+ }
66
+ /**
67
+ * LLM completion request
68
+ */
69
+ export interface CompletionRequest {
70
+ /** Messages for chat completion */
71
+ messages: ChatMessage[];
72
+ /** Override temperature for this request */
73
+ temperature?: number;
74
+ /** Override max tokens for this request */
75
+ maxTokens?: number;
76
+ /** Response format (for structured output) */
77
+ responseFormat?: 'text' | 'json';
78
+ /** JSON schema for structured output (if responseFormat is 'json') */
79
+ jsonSchema?: Record<string, unknown>;
80
+ }
81
+ /**
82
+ * LLM completion response
83
+ */
84
+ export interface CompletionResponse {
85
+ /** Generated text content */
86
+ content: string;
87
+ /** Parsed JSON (if responseFormat was 'json') */
88
+ json?: unknown;
89
+ /** Token usage statistics */
90
+ usage: {
91
+ promptTokens: number;
92
+ completionTokens: number;
93
+ totalTokens: number;
94
+ };
95
+ /** Model used for completion */
96
+ model: string;
97
+ /** Finish reason */
98
+ finishReason: 'stop' | 'length' | 'content_filter' | 'error';
99
+ }
100
+ /**
101
+ * Request to extract skills from curriculum content
102
+ */
103
+ export interface SkillExtractionRequest {
104
+ /** Raw curriculum/syllabus content */
105
+ content: string;
106
+ /** Content format hint */
107
+ format?: 'markdown' | 'text' | 'html' | 'pdf';
108
+ /** Domain/subject area hint */
109
+ domain?: string;
110
+ /** Target audience/grade level */
111
+ gradeLevel?: string;
112
+ /** Additional context for extraction */
113
+ context?: string;
114
+ /** Tags to apply to all extracted skills */
115
+ tags?: string[];
116
+ /** Minimum confidence threshold (0-1) */
117
+ minConfidence?: number;
118
+ }
119
+ /**
120
+ * LLM-extracted skill with metadata
121
+ */
122
+ export interface ExtractedSkillLLM {
123
+ /** Skill name (concise) */
124
+ name: string;
125
+ /** Skill description */
126
+ description: string;
127
+ /** Detected Bloom's level */
128
+ bloomLevel: BloomLevel;
129
+ /** Difficulty estimate (0-1) */
130
+ difficulty: number;
131
+ /** Confidence in extraction (0-1) */
132
+ confidence: number;
133
+ /** Whether this is a threshold concept */
134
+ isThresholdConcept: boolean;
135
+ /** Estimated time to master in minutes */
136
+ estimatedMinutes?: number;
137
+ /** Source text that generated this skill */
138
+ sourceText?: string;
139
+ /** LLM's reasoning for this extraction */
140
+ reasoning?: string;
141
+ /** Keywords/concepts associated with this skill */
142
+ keywords?: string[];
143
+ }
144
+ /**
145
+ * Result of skill extraction
146
+ */
147
+ export interface SkillExtractionResponse {
148
+ /** Extracted skills */
149
+ skills: ExtractedSkillLLM[];
150
+ /** Overall extraction confidence */
151
+ confidence: number;
152
+ /** Token usage */
153
+ usage: CompletionResponse['usage'];
154
+ /** Warnings or notes from extraction */
155
+ warnings: string[];
156
+ /** Processing time in milliseconds */
157
+ durationMs: number;
158
+ }
159
+ /**
160
+ * Request to infer prerequisites between skills
161
+ */
162
+ export interface PrerequisiteInferenceRequest {
163
+ /** Skills to analyze for prerequisites */
164
+ skills: Array<{
165
+ id: string;
166
+ name: string;
167
+ description: string;
168
+ bloomLevel: BloomLevel;
169
+ difficulty: number;
170
+ }>;
171
+ /** Domain context */
172
+ domain?: string;
173
+ /** Whether to infer transitive prerequisites */
174
+ inferTransitive?: boolean;
175
+ /** Minimum confidence for edge suggestion */
176
+ minConfidence?: number;
177
+ }
178
+ /**
179
+ * Inferred prerequisite relationship
180
+ */
181
+ export interface InferredPrerequisite {
182
+ /** Source skill ID (the prerequisite) */
183
+ sourceId: string;
184
+ /** Target skill ID (depends on source) */
185
+ targetId: string;
186
+ /** Relationship strength (0-1) */
187
+ strength: number;
188
+ /** Type of prerequisite */
189
+ type: 'hard' | 'soft' | 'recommended';
190
+ /** Confidence in this inference (0-1) */
191
+ confidence: number;
192
+ /** LLM's reasoning for this relationship */
193
+ reasoning: string;
194
+ }
195
+ /**
196
+ * Result of prerequisite inference
197
+ */
198
+ export interface PrerequisiteInferenceResponse {
199
+ /** Inferred prerequisites */
200
+ prerequisites: InferredPrerequisite[];
201
+ /** Token usage */
202
+ usage: CompletionResponse['usage'];
203
+ /** Processing time in milliseconds */
204
+ durationMs: number;
205
+ }
206
+ /**
207
+ * Request to analyze Bloom's level of text
208
+ */
209
+ export interface BloomAnalysisRequest {
210
+ /** Text to analyze */
211
+ text: string;
212
+ /** Context for analysis */
213
+ context?: string;
214
+ }
215
+ /**
216
+ * Result of Bloom's level analysis
217
+ */
218
+ export interface BloomAnalysisResponse {
219
+ /** Detected Bloom's level */
220
+ level: BloomLevel;
221
+ /** Confidence in detection (0-1) */
222
+ confidence: number;
223
+ /** Key verbs/phrases that indicated this level */
224
+ indicators: string[];
225
+ /** LLM's reasoning */
226
+ reasoning: string;
227
+ /** Token usage */
228
+ usage: CompletionResponse['usage'];
229
+ }
230
+ /**
231
+ * Request to decompose curriculum into a skill graph
232
+ */
233
+ export interface DecompositionRequest {
234
+ /** Curriculum content */
235
+ content: string;
236
+ /** Title of the course/curriculum */
237
+ title?: string;
238
+ /** Domain/subject */
239
+ domain?: string;
240
+ /** Target grade level */
241
+ gradeLevel?: string;
242
+ /** Additional context */
243
+ context?: string;
244
+ /** Maximum depth of skill hierarchy */
245
+ maxDepth?: number;
246
+ /** Whether to infer prerequisites */
247
+ inferPrerequisites?: boolean;
248
+ }
249
+ /**
250
+ * Result of curriculum decomposition
251
+ */
252
+ export interface DecompositionResponse {
253
+ /** Course/curriculum title */
254
+ title: string;
255
+ /** Extracted skills */
256
+ skills: ExtractedSkillLLM[];
257
+ /** Inferred prerequisites (if requested) */
258
+ prerequisites: InferredPrerequisite[];
259
+ /** Skill inputs ready for storage */
260
+ skillInputs: SkillNodeInput[];
261
+ /** Token usage */
262
+ usage: CompletionResponse['usage'];
263
+ /** Processing time in milliseconds */
264
+ durationMs: number;
265
+ /** Warnings from processing */
266
+ warnings: string[];
267
+ }
268
+ /**
269
+ * LLM adapter interface for different providers
270
+ */
271
+ export interface LLMAdapter {
272
+ /** Provider name */
273
+ readonly provider: LLMProvider;
274
+ /** Model identifier */
275
+ readonly model: string;
276
+ /** Send a completion request */
277
+ complete(request: CompletionRequest): Promise<CompletionResponse>;
278
+ /** Check if the adapter is properly configured */
279
+ isConfigured(): boolean;
280
+ /** Get current configuration (without sensitive data) */
281
+ getConfig(): Omit<LLMConfig, 'apiKey'>;
282
+ }
283
+ /**
284
+ * High-level LLM orchestrator for educational tasks
285
+ */
286
+ export interface LLMOrchestrator {
287
+ /** Extract skills from curriculum content */
288
+ extractSkills(request: SkillExtractionRequest): Promise<SkillExtractionResponse>;
289
+ /** Infer prerequisites between skills */
290
+ inferPrerequisites(request: PrerequisiteInferenceRequest): Promise<PrerequisiteInferenceResponse>;
291
+ /** Analyze Bloom's level of text */
292
+ analyzeBloomLevel(request: BloomAnalysisRequest): Promise<BloomAnalysisResponse>;
293
+ /** Full curriculum decomposition */
294
+ decompose(request: DecompositionRequest): Promise<DecompositionResponse>;
295
+ /** Get the underlying adapter */
296
+ getAdapter(): LLMAdapter;
297
+ }
298
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../src/types/llm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "learngraph",
3
- "version": "0.2.0",
3
+ "version": "0.3.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",