learngraph 0.1.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 (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/dist/cjs/education/index.js +18 -0
  4. package/dist/cjs/education/index.js.map +1 -0
  5. package/dist/cjs/graph/index.js +14 -0
  6. package/dist/cjs/graph/index.js.map +1 -0
  7. package/dist/cjs/index.js +61 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/llm/index.js +12 -0
  10. package/dist/cjs/llm/index.js.map +1 -0
  11. package/dist/cjs/parsers/index.js +11 -0
  12. package/dist/cjs/parsers/index.js.map +1 -0
  13. package/dist/cjs/query/index.js +12 -0
  14. package/dist/cjs/query/index.js.map +1 -0
  15. package/dist/cjs/storage/index.js +12 -0
  16. package/dist/cjs/storage/index.js.map +1 -0
  17. package/dist/cjs/types/bloom.js +174 -0
  18. package/dist/cjs/types/bloom.js.map +1 -0
  19. package/dist/cjs/types/edge.js +42 -0
  20. package/dist/cjs/types/edge.js.map +1 -0
  21. package/dist/cjs/types/graph.js +8 -0
  22. package/dist/cjs/types/graph.js.map +1 -0
  23. package/dist/cjs/types/index.js +32 -0
  24. package/dist/cjs/types/index.js.map +1 -0
  25. package/dist/cjs/types/mastery.js +31 -0
  26. package/dist/cjs/types/mastery.js.map +1 -0
  27. package/dist/cjs/types/query.js +3 -0
  28. package/dist/cjs/types/query.js.map +1 -0
  29. package/dist/cjs/types/skill.js +38 -0
  30. package/dist/cjs/types/skill.js.map +1 -0
  31. package/dist/cjs/types/storage.js +3 -0
  32. package/dist/cjs/types/storage.js.map +1 -0
  33. package/dist/esm/education/index.js +12 -0
  34. package/dist/esm/education/index.js.map +1 -0
  35. package/dist/esm/graph/index.js +10 -0
  36. package/dist/esm/graph/index.js.map +1 -0
  37. package/dist/esm/index.js +44 -0
  38. package/dist/esm/index.js.map +1 -0
  39. package/dist/esm/llm/index.js +12 -0
  40. package/dist/esm/llm/index.js.map +1 -0
  41. package/dist/esm/parsers/index.js +11 -0
  42. package/dist/esm/parsers/index.js.map +1 -0
  43. package/dist/esm/query/index.js +11 -0
  44. package/dist/esm/query/index.js.map +1 -0
  45. package/dist/esm/storage/index.js +11 -0
  46. package/dist/esm/storage/index.js.map +1 -0
  47. package/dist/esm/types/bloom.js +168 -0
  48. package/dist/esm/types/bloom.js.map +1 -0
  49. package/dist/esm/types/edge.js +36 -0
  50. package/dist/esm/types/edge.js.map +1 -0
  51. package/dist/esm/types/graph.js +5 -0
  52. package/dist/esm/types/graph.js.map +1 -0
  53. package/dist/esm/types/index.js +11 -0
  54. package/dist/esm/types/index.js.map +1 -0
  55. package/dist/esm/types/mastery.js +26 -0
  56. package/dist/esm/types/mastery.js.map +1 -0
  57. package/dist/esm/types/query.js +2 -0
  58. package/dist/esm/types/query.js.map +1 -0
  59. package/dist/esm/types/skill.js +32 -0
  60. package/dist/esm/types/skill.js.map +1 -0
  61. package/dist/esm/types/storage.js +2 -0
  62. package/dist/esm/types/storage.js.map +1 -0
  63. package/dist/types/education/index.d.ts +8 -0
  64. package/dist/types/education/index.d.ts.map +1 -0
  65. package/dist/types/graph/index.d.ts +8 -0
  66. package/dist/types/graph/index.d.ts.map +1 -0
  67. package/dist/types/index.d.ts +38 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/llm/index.d.ts +6 -0
  70. package/dist/types/llm/index.d.ts.map +1 -0
  71. package/dist/types/parsers/index.d.ts +6 -0
  72. package/dist/types/parsers/index.d.ts.map +1 -0
  73. package/dist/types/query/index.d.ts +7 -0
  74. package/dist/types/query/index.d.ts.map +1 -0
  75. package/dist/types/storage/index.d.ts +7 -0
  76. package/dist/types/storage/index.d.ts.map +1 -0
  77. package/dist/types/types/bloom.d.ts +33 -0
  78. package/dist/types/types/bloom.d.ts.map +1 -0
  79. package/dist/types/types/edge.d.ts +80 -0
  80. package/dist/types/types/edge.d.ts.map +1 -0
  81. package/dist/types/types/graph.d.ts +99 -0
  82. package/dist/types/types/graph.d.ts.map +1 -0
  83. package/dist/types/types/index.d.ts +18 -0
  84. package/dist/types/types/index.d.ts.map +1 -0
  85. package/dist/types/types/mastery.d.ts +89 -0
  86. package/dist/types/types/mastery.d.ts.map +1 -0
  87. package/dist/types/types/query.d.ts +155 -0
  88. package/dist/types/types/query.d.ts.map +1 -0
  89. package/dist/types/types/skill.d.ts +107 -0
  90. package/dist/types/types/skill.d.ts.map +1 -0
  91. package/dist/types/types/storage.d.ts +214 -0
  92. package/dist/types/types/storage.d.ts.map +1 -0
  93. package/package.json +149 -0
@@ -0,0 +1,214 @@
1
+ import type { SkillNode, SkillId, SkillNodeInput, SkillNodeUpdate } from './skill.js';
2
+ import type { PrerequisiteEdge, EdgeId, PrerequisiteEdgeInput } from './edge.js';
3
+ import type { Subgraph, GraphExport, GraphStats } from './graph.js';
4
+ import type { SkillQuery } from './query.js';
5
+ /**
6
+ * Storage backend types
7
+ */
8
+ export type StorageBackend = 'neo4j' | 'levelgraph' | 'memory';
9
+ /**
10
+ * Base configuration for all storage adapters
11
+ */
12
+ export interface StorageConfigBase {
13
+ /** Storage backend type */
14
+ backend: StorageBackend;
15
+ }
16
+ /**
17
+ * Neo4j connection configuration
18
+ */
19
+ export interface Neo4jConfig extends StorageConfigBase {
20
+ backend: 'neo4j';
21
+ /** Neo4j connection URI (e.g., "bolt://localhost:7687") */
22
+ uri: string;
23
+ /** Username for authentication */
24
+ username: string;
25
+ /** Password for authentication */
26
+ password: string;
27
+ /** Database name (default: "neo4j") */
28
+ database?: string;
29
+ /** Connection pool size (default: 50) */
30
+ maxConnectionPoolSize?: number;
31
+ /** Connection timeout in milliseconds (default: 30000) */
32
+ connectionTimeout?: number;
33
+ }
34
+ /**
35
+ * LevelGraph configuration
36
+ */
37
+ export interface LevelGraphConfig extends StorageConfigBase {
38
+ backend: 'levelgraph';
39
+ /** Path to the database directory (for Node.js) */
40
+ path?: string;
41
+ /** Database name for browser IndexedDB */
42
+ dbName?: string;
43
+ }
44
+ /**
45
+ * In-memory storage configuration (for testing)
46
+ */
47
+ export interface MemoryConfig extends StorageConfigBase {
48
+ backend: 'memory';
49
+ /** Optional initial data */
50
+ initialData?: GraphExport;
51
+ }
52
+ /**
53
+ * Union of all storage configurations
54
+ */
55
+ export type StorageConfig = Neo4jConfig | LevelGraphConfig | MemoryConfig;
56
+ /**
57
+ * Connection status
58
+ */
59
+ export interface ConnectionStatus {
60
+ connected: boolean;
61
+ backend: StorageBackend;
62
+ latencyMs?: number;
63
+ lastChecked: Date;
64
+ error?: string;
65
+ }
66
+ /**
67
+ * Result of bulk import operation
68
+ */
69
+ export interface ImportResult {
70
+ nodesCreated: number;
71
+ edgesCreated: number;
72
+ nodesSkipped: number;
73
+ edgesSkipped: number;
74
+ errors: Array<{
75
+ type: 'node' | 'edge';
76
+ id: string;
77
+ error: string;
78
+ }>;
79
+ durationMs: number;
80
+ }
81
+ /**
82
+ * Abstract interface for graph storage backends.
83
+ *
84
+ * This is the primary abstraction that allows swapping between
85
+ * Neo4j (production) and LevelGraph (browser/local development).
86
+ *
87
+ * All methods return Promises for async operation.
88
+ */
89
+ export interface GraphStorage {
90
+ /**
91
+ * Connect to the storage backend
92
+ */
93
+ connect(config: StorageConfig): Promise<void>;
94
+ /**
95
+ * Disconnect from the storage backend
96
+ */
97
+ disconnect(): Promise<void>;
98
+ /**
99
+ * Check if connected to the storage backend
100
+ */
101
+ isConnected(): boolean;
102
+ /**
103
+ * Get connection status with health check
104
+ */
105
+ getStatus(): Promise<ConnectionStatus>;
106
+ /**
107
+ * Create a new skill node
108
+ */
109
+ createSkill(skill: SkillNodeInput): Promise<SkillNode>;
110
+ /**
111
+ * Get a skill by ID
112
+ * Returns null if not found
113
+ */
114
+ getSkill(id: SkillId): Promise<SkillNode | null>;
115
+ /**
116
+ * Get multiple skills by ID
117
+ * Returns found skills (missing IDs are not included)
118
+ */
119
+ getSkills(ids: SkillId[]): Promise<SkillNode[]>;
120
+ /**
121
+ * Update an existing skill
122
+ * Throws if skill not found
123
+ */
124
+ updateSkill(id: SkillId, updates: SkillNodeUpdate): Promise<SkillNode>;
125
+ /**
126
+ * Delete a skill and all its edges
127
+ * No-op if skill not found
128
+ */
129
+ deleteSkill(id: SkillId): Promise<void>;
130
+ /**
131
+ * Find skills matching query criteria
132
+ */
133
+ findSkills(query: Partial<SkillQuery>): Promise<SkillNode[]>;
134
+ /**
135
+ * Count skills matching query criteria
136
+ */
137
+ countSkills(query?: Partial<SkillQuery>): Promise<number>;
138
+ /**
139
+ * Create a prerequisite edge
140
+ * Throws if source or target skill not found
141
+ */
142
+ createPrerequisite(edge: PrerequisiteEdgeInput): Promise<PrerequisiteEdge>;
143
+ /**
144
+ * Get a prerequisite edge by ID
145
+ * Returns null if not found
146
+ */
147
+ getPrerequisite(id: EdgeId): Promise<PrerequisiteEdge | null>;
148
+ /**
149
+ * Delete a prerequisite edge
150
+ * No-op if edge not found
151
+ */
152
+ deletePrerequisite(id: EdgeId): Promise<void>;
153
+ /**
154
+ * Find edges matching criteria
155
+ */
156
+ findPrerequisites(criteria: {
157
+ sourceId?: SkillId;
158
+ targetId?: SkillId;
159
+ type?: string;
160
+ minStrength?: number;
161
+ }): Promise<PrerequisiteEdge[]>;
162
+ /**
163
+ * Get all prerequisite skills for a given skill
164
+ * (skills that should be learned before this one)
165
+ */
166
+ getPrerequisitesOf(skillId: SkillId): Promise<SkillNode[]>;
167
+ /**
168
+ * Get all dependent skills for a given skill
169
+ * (skills that require this one as a prerequisite)
170
+ */
171
+ getDependentsOf(skillId: SkillId): Promise<SkillNode[]>;
172
+ /**
173
+ * Get a subgraph rooted at a skill
174
+ * Includes all ancestors up to specified depth
175
+ */
176
+ getSubgraph(rootId: SkillId, depth: number): Promise<Subgraph>;
177
+ /**
178
+ * Get all root skills (skills with no prerequisites)
179
+ */
180
+ getRootSkills(): Promise<SkillNode[]>;
181
+ /**
182
+ * Get all leaf skills (skills with no dependents)
183
+ */
184
+ getLeafSkills(): Promise<SkillNode[]>;
185
+ /**
186
+ * Get the shortest path between two skills
187
+ * Returns null if no path exists
188
+ */
189
+ getPath(fromId: SkillId, toId: SkillId): Promise<SkillNode[] | null>;
190
+ /**
191
+ * Import a complete graph (nodes and edges)
192
+ * Optionally clears existing data first
193
+ */
194
+ importGraph(nodes: SkillNodeInput[], edges: PrerequisiteEdgeInput[], options?: {
195
+ clearExisting?: boolean;
196
+ }): Promise<ImportResult>;
197
+ /**
198
+ * Export the complete graph
199
+ */
200
+ exportGraph(): Promise<GraphExport>;
201
+ /**
202
+ * Clear all data in the graph
203
+ */
204
+ clearAll(): Promise<void>;
205
+ /**
206
+ * Get graph statistics
207
+ */
208
+ getStats(): Promise<GraphStats>;
209
+ }
210
+ /**
211
+ * Factory function type for creating storage instances
212
+ */
213
+ export type StorageFactory = (config: StorageConfig) => GraphStorage;
214
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/types/storage.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,149 @@
1
+ {
2
+ "name": "learngraph",
3
+ "version": "0.1.0",
4
+ "description": "AI-powered educational knowledge graph infrastructure - decompose curricula into skill graphs with learning science built in",
5
+ "author": "LearnGraph Team",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/fenago/Jali.git",
10
+ "directory": "packages/core"
11
+ },
12
+ "keywords": [
13
+ "education",
14
+ "knowledge-graph",
15
+ "learning",
16
+ "curriculum",
17
+ "neo4j",
18
+ "levelgraph",
19
+ "ai",
20
+ "llm",
21
+ "mastery-learning",
22
+ "zpd",
23
+ "blooms-taxonomy",
24
+ "adaptive-learning",
25
+ "edtech"
26
+ ],
27
+ "type": "module",
28
+ "main": "./dist/cjs/index.js",
29
+ "module": "./dist/esm/index.js",
30
+ "types": "./dist/types/index.d.ts",
31
+ "exports": {
32
+ ".": {
33
+ "import": {
34
+ "types": "./dist/types/index.d.ts",
35
+ "default": "./dist/esm/index.js"
36
+ },
37
+ "require": {
38
+ "types": "./dist/types/index.d.ts",
39
+ "default": "./dist/cjs/index.js"
40
+ }
41
+ },
42
+ "./storage": {
43
+ "import": {
44
+ "types": "./dist/types/storage/index.d.ts",
45
+ "default": "./dist/esm/storage/index.js"
46
+ },
47
+ "require": {
48
+ "types": "./dist/types/storage/index.d.ts",
49
+ "default": "./dist/cjs/storage/index.js"
50
+ }
51
+ },
52
+ "./parsers": {
53
+ "import": {
54
+ "types": "./dist/types/parsers/index.d.ts",
55
+ "default": "./dist/esm/parsers/index.js"
56
+ },
57
+ "require": {
58
+ "types": "./dist/types/parsers/index.d.ts",
59
+ "default": "./dist/cjs/parsers/index.js"
60
+ }
61
+ },
62
+ "./llm": {
63
+ "import": {
64
+ "types": "./dist/types/llm/index.d.ts",
65
+ "default": "./dist/esm/llm/index.js"
66
+ },
67
+ "require": {
68
+ "types": "./dist/types/llm/index.d.ts",
69
+ "default": "./dist/cjs/llm/index.js"
70
+ }
71
+ },
72
+ "./graph": {
73
+ "import": {
74
+ "types": "./dist/types/graph/index.d.ts",
75
+ "default": "./dist/esm/graph/index.js"
76
+ },
77
+ "require": {
78
+ "types": "./dist/types/graph/index.d.ts",
79
+ "default": "./dist/cjs/graph/index.js"
80
+ }
81
+ },
82
+ "./query": {
83
+ "import": {
84
+ "types": "./dist/types/query/index.d.ts",
85
+ "default": "./dist/esm/query/index.js"
86
+ },
87
+ "require": {
88
+ "types": "./dist/types/query/index.d.ts",
89
+ "default": "./dist/cjs/query/index.js"
90
+ }
91
+ },
92
+ "./education": {
93
+ "import": {
94
+ "types": "./dist/types/education/index.d.ts",
95
+ "default": "./dist/esm/education/index.js"
96
+ },
97
+ "require": {
98
+ "types": "./dist/types/education/index.d.ts",
99
+ "default": "./dist/cjs/education/index.js"
100
+ }
101
+ }
102
+ },
103
+ "files": [
104
+ "dist",
105
+ "README.md",
106
+ "LICENSE"
107
+ ],
108
+ "scripts": {
109
+ "build": "npm run build:esm && npm run build:cjs && npm run build:types",
110
+ "build:esm": "tsc -p tsconfig.esm.json",
111
+ "build:cjs": "tsc -p tsconfig.cjs.json",
112
+ "build:types": "tsc -p tsconfig.types.json",
113
+ "test": "vitest run",
114
+ "test:watch": "vitest",
115
+ "test:coverage": "vitest run --coverage",
116
+ "lint": "eslint src --ext .ts",
117
+ "lint:fix": "eslint src --ext .ts --fix",
118
+ "typecheck": "tsc --noEmit",
119
+ "clean": "rm -rf dist coverage"
120
+ },
121
+ "dependencies": {
122
+ "zod": "^3.23.0"
123
+ },
124
+ "devDependencies": {
125
+ "@types/node": "^20.0.0",
126
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
127
+ "@typescript-eslint/parser": "^7.0.0",
128
+ "@vitest/coverage-v8": "^1.6.0",
129
+ "eslint": "^8.57.0",
130
+ "typescript": "^5.4.0",
131
+ "vitest": "^1.6.0"
132
+ },
133
+ "peerDependencies": {
134
+ "neo4j-driver": "^5.0.0",
135
+ "level": "^8.0.0",
136
+ "levelgraph": "^3.0.0"
137
+ },
138
+ "peerDependenciesMeta": {
139
+ "neo4j-driver": {
140
+ "optional": true
141
+ },
142
+ "level": {
143
+ "optional": true
144
+ },
145
+ "levelgraph": {
146
+ "optional": true
147
+ }
148
+ }
149
+ }