learngraph 0.1.1 → 0.2.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/LICENSE +190 -21
- package/README.md +83 -2
- package/dist/cjs/parsers/base.js +189 -0
- package/dist/cjs/parsers/base.js.map +1 -0
- package/dist/cjs/parsers/demo.js +159 -0
- package/dist/cjs/parsers/demo.js.map +1 -0
- package/dist/cjs/parsers/extractor.js +191 -0
- package/dist/cjs/parsers/extractor.js.map +1 -0
- package/dist/cjs/parsers/index.js +43 -4
- package/dist/cjs/parsers/index.js.map +1 -1
- package/dist/cjs/parsers/json.js +157 -0
- package/dist/cjs/parsers/json.js.map +1 -0
- package/dist/cjs/parsers/markdown.js +168 -0
- package/dist/cjs/parsers/markdown.js.map +1 -0
- package/dist/cjs/parsers/samples.js +139 -0
- package/dist/cjs/parsers/samples.js.map +1 -0
- package/dist/cjs/storage/base.js +231 -0
- package/dist/cjs/storage/base.js.map +1 -0
- package/dist/cjs/storage/errors.js +128 -0
- package/dist/cjs/storage/errors.js.map +1 -0
- package/dist/cjs/storage/index.js +92 -5
- package/dist/cjs/storage/index.js.map +1 -1
- package/dist/cjs/storage/levelgraph.js +855 -0
- package/dist/cjs/storage/levelgraph.js.map +1 -0
- package/dist/cjs/storage/memory.js +447 -0
- package/dist/cjs/storage/memory.js.map +1 -0
- package/dist/cjs/storage/neo4j.js +866 -0
- package/dist/cjs/storage/neo4j.js.map +1 -0
- package/dist/cjs/storage/seeds.js +565 -0
- package/dist/cjs/storage/seeds.js.map +1 -0
- package/dist/cjs/types/parser.js +8 -0
- package/dist/cjs/types/parser.js.map +1 -0
- package/dist/esm/parsers/base.js +179 -0
- package/dist/esm/parsers/base.js.map +1 -0
- package/dist/esm/parsers/demo.js +154 -0
- package/dist/esm/parsers/demo.js.map +1 -0
- package/dist/esm/parsers/extractor.js +187 -0
- package/dist/esm/parsers/extractor.js.map +1 -0
- package/dist/esm/parsers/index.js +24 -5
- package/dist/esm/parsers/index.js.map +1 -1
- package/dist/esm/parsers/json.js +153 -0
- package/dist/esm/parsers/json.js.map +1 -0
- package/dist/esm/parsers/markdown.js +164 -0
- package/dist/esm/parsers/markdown.js.map +1 -0
- package/dist/esm/parsers/samples.js +136 -0
- package/dist/esm/parsers/samples.js.map +1 -0
- package/dist/esm/storage/base.js +221 -0
- package/dist/esm/storage/base.js.map +1 -0
- package/dist/esm/storage/errors.js +116 -0
- package/dist/esm/storage/errors.js.map +1 -0
- package/dist/esm/storage/index.js +71 -6
- package/dist/esm/storage/index.js.map +1 -1
- package/dist/esm/storage/levelgraph.js +818 -0
- package/dist/esm/storage/levelgraph.js.map +1 -0
- package/dist/esm/storage/memory.js +443 -0
- package/dist/esm/storage/memory.js.map +1 -0
- package/dist/esm/storage/neo4j.js +829 -0
- package/dist/esm/storage/neo4j.js.map +1 -0
- package/dist/esm/storage/seeds.js +561 -0
- package/dist/esm/storage/seeds.js.map +1 -0
- package/dist/esm/types/parser.js +7 -0
- package/dist/esm/types/parser.js.map +1 -0
- package/dist/types/parsers/base.d.ts +39 -0
- package/dist/types/parsers/base.d.ts.map +1 -0
- package/dist/types/parsers/demo.d.ts +87 -0
- package/dist/types/parsers/demo.d.ts.map +1 -0
- package/dist/types/parsers/extractor.d.ts +43 -0
- package/dist/types/parsers/extractor.d.ts.map +1 -0
- package/dist/types/parsers/index.d.ts +10 -0
- package/dist/types/parsers/index.d.ts.map +1 -1
- package/dist/types/parsers/json.d.ts +71 -0
- package/dist/types/parsers/json.d.ts.map +1 -0
- package/dist/types/parsers/markdown.d.ts +43 -0
- package/dist/types/parsers/markdown.d.ts.map +1 -0
- package/dist/types/parsers/samples.d.ts +27 -0
- package/dist/types/parsers/samples.d.ts.map +1 -0
- package/dist/types/storage/base.d.ts +39 -0
- package/dist/types/storage/base.d.ts.map +1 -0
- package/dist/types/storage/errors.d.ts +74 -0
- package/dist/types/storage/errors.d.ts.map +1 -0
- package/dist/types/storage/index.d.ts +50 -2
- package/dist/types/storage/index.d.ts.map +1 -1
- package/dist/types/storage/levelgraph.d.ts +92 -0
- package/dist/types/storage/levelgraph.d.ts.map +1 -0
- package/dist/types/storage/memory.d.ts +70 -0
- package/dist/types/storage/memory.d.ts.map +1 -0
- package/dist/types/storage/neo4j.d.ts +88 -0
- package/dist/types/storage/neo4j.d.ts.map +1 -0
- package/dist/types/storage/seeds.d.ts +27 -0
- package/dist/types/storage/seeds.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/parser.d.ts +208 -0
- package/dist/types/types/parser.d.ts.map +1 -0
- package/package.json +4 -2
- package/scripts/postinstall.js +68 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory storage adapter for testing and prototyping
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { SkillNode, SkillId, SkillNodeInput, SkillNodeUpdate, PrerequisiteEdge, EdgeId, PrerequisiteEdgeInput, GraphStorage, StorageConfig, ConnectionStatus, ImportResult, GraphExport, GraphStats, Subgraph, SkillQuery } from '../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* In-memory graph storage adapter.
|
|
9
|
+
*
|
|
10
|
+
* Stores all data in memory - lost on process exit.
|
|
11
|
+
* Ideal for unit tests and rapid prototyping.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const storage = new MemoryStorage();
|
|
16
|
+
* await storage.connect({ backend: 'memory' });
|
|
17
|
+
*
|
|
18
|
+
* const skill = await storage.createSkill({
|
|
19
|
+
* name: 'Add Fractions',
|
|
20
|
+
* description: 'Add fractions with like denominators',
|
|
21
|
+
* bloomLevel: 'apply',
|
|
22
|
+
* difficulty: 0.4,
|
|
23
|
+
* isThresholdConcept: false,
|
|
24
|
+
* masteryThreshold: 0.8,
|
|
25
|
+
* estimatedMinutes: 30,
|
|
26
|
+
* tags: ['math', 'fractions'],
|
|
27
|
+
* metadata: {},
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* console.log(skill.id); // skill_abc123...
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare class MemoryStorage implements GraphStorage {
|
|
34
|
+
private nodes;
|
|
35
|
+
private edges;
|
|
36
|
+
private _connected;
|
|
37
|
+
connect(config: StorageConfig): Promise<void>;
|
|
38
|
+
disconnect(): Promise<void>;
|
|
39
|
+
isConnected(): boolean;
|
|
40
|
+
getStatus(): Promise<ConnectionStatus>;
|
|
41
|
+
createSkill(input: SkillNodeInput): Promise<SkillNode>;
|
|
42
|
+
getSkill(id: SkillId): Promise<SkillNode | null>;
|
|
43
|
+
getSkills(ids: SkillId[]): Promise<SkillNode[]>;
|
|
44
|
+
updateSkill(id: SkillId, updates: SkillNodeUpdate): Promise<SkillNode>;
|
|
45
|
+
deleteSkill(id: SkillId): Promise<void>;
|
|
46
|
+
findSkills(query: Partial<SkillQuery>): Promise<SkillNode[]>;
|
|
47
|
+
countSkills(query?: Partial<SkillQuery>): Promise<number>;
|
|
48
|
+
createPrerequisite(input: PrerequisiteEdgeInput): Promise<PrerequisiteEdge>;
|
|
49
|
+
getPrerequisite(id: EdgeId): Promise<PrerequisiteEdge | null>;
|
|
50
|
+
deletePrerequisite(id: EdgeId): Promise<void>;
|
|
51
|
+
findPrerequisites(criteria: {
|
|
52
|
+
sourceId?: SkillId;
|
|
53
|
+
targetId?: SkillId;
|
|
54
|
+
type?: string;
|
|
55
|
+
minStrength?: number;
|
|
56
|
+
}): Promise<PrerequisiteEdge[]>;
|
|
57
|
+
getPrerequisitesOf(skillId: SkillId): Promise<SkillNode[]>;
|
|
58
|
+
getDependentsOf(skillId: SkillId): Promise<SkillNode[]>;
|
|
59
|
+
getSubgraph(rootId: SkillId, depth: number): Promise<Subgraph>;
|
|
60
|
+
getRootSkills(): Promise<SkillNode[]>;
|
|
61
|
+
getLeafSkills(): Promise<SkillNode[]>;
|
|
62
|
+
getPath(fromId: SkillId, toId: SkillId): Promise<SkillNode[] | null>;
|
|
63
|
+
importGraph(nodes: SkillNodeInput[], edges: PrerequisiteEdgeInput[], options?: {
|
|
64
|
+
clearExisting?: boolean;
|
|
65
|
+
}): Promise<ImportResult>;
|
|
66
|
+
exportGraph(): Promise<GraphExport>;
|
|
67
|
+
clearAll(): Promise<void>;
|
|
68
|
+
getStats(): Promise<GraphStats>;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/storage/memory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,OAAO,EACP,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,MAAM,EACN,qBAAqB,EACrB,YAAY,EACZ,aAAa,EAEb,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACX,MAAM,mBAAmB,CAAC;AAiB3B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,UAAU,CAAS;IAMrB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,WAAW,IAAI,OAAO;IAIhB,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAatC,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IActD,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAKhD,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAU/C,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBtE,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAiE5D,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBzD,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8B3E,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAK7D,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,iBAAiB,CAAC,QAAQ,EAAE;QAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAyBzB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAa1D,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAavD,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+C9D,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAarC,aAAa,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAarC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;IA+CpE,WAAW,CACf,KAAK,EAAE,cAAc,EAAE,EACvB,KAAK,EAAE,qBAAqB,EAAE,EAC9B,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GACpC,OAAO,CAAC,YAAY,CAAC;IAoElB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAWnC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAUzB,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;CAOtC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Neo4j storage adapter
|
|
3
|
+
*
|
|
4
|
+
* Production-ready graph storage using Neo4j graph database
|
|
5
|
+
* with full Cypher query support and connection pooling.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { SkillNode, SkillId, SkillNodeInput, SkillNodeUpdate, PrerequisiteEdge, EdgeId, PrerequisiteEdgeInput, GraphStorage, StorageConfig, ConnectionStatus, ImportResult, GraphExport, GraphStats, Subgraph, SkillQuery } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Neo4j storage adapter.
|
|
12
|
+
*
|
|
13
|
+
* Production-ready graph storage with full CRUD operations,
|
|
14
|
+
* connection pooling, and optimized Cypher queries.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { Neo4jStorage } from 'learngraph/storage';
|
|
19
|
+
*
|
|
20
|
+
* const storage = new Neo4jStorage();
|
|
21
|
+
* await storage.connect({
|
|
22
|
+
* backend: 'neo4j',
|
|
23
|
+
* uri: 'bolt://localhost:7687',
|
|
24
|
+
* username: 'neo4j',
|
|
25
|
+
* password: 'password',
|
|
26
|
+
* database: 'learngraph',
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Create a skill
|
|
30
|
+
* const skill = await storage.createSkill({
|
|
31
|
+
* name: 'Add Fractions',
|
|
32
|
+
* description: 'Add fractions with like denominators',
|
|
33
|
+
* bloomLevel: 'apply',
|
|
34
|
+
* difficulty: 0.4,
|
|
35
|
+
* isThresholdConcept: false,
|
|
36
|
+
* masteryThreshold: 0.8,
|
|
37
|
+
* estimatedMinutes: 30,
|
|
38
|
+
* tags: ['math', 'fractions'],
|
|
39
|
+
* metadata: {},
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* // Query the graph
|
|
43
|
+
* const prerequisites = await storage.getPrerequisitesOf(skill.id);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare class Neo4jStorage implements GraphStorage {
|
|
47
|
+
private driver;
|
|
48
|
+
private config;
|
|
49
|
+
private _connected;
|
|
50
|
+
private getSession;
|
|
51
|
+
private runQuery;
|
|
52
|
+
private recordToSkill;
|
|
53
|
+
private recordToEdge;
|
|
54
|
+
connect(config: StorageConfig): Promise<void>;
|
|
55
|
+
private initializeSchema;
|
|
56
|
+
disconnect(): Promise<void>;
|
|
57
|
+
isConnected(): boolean;
|
|
58
|
+
getStatus(): Promise<ConnectionStatus>;
|
|
59
|
+
createSkill(input: SkillNodeInput): Promise<SkillNode>;
|
|
60
|
+
getSkill(id: SkillId): Promise<SkillNode | null>;
|
|
61
|
+
getSkills(ids: SkillId[]): Promise<SkillNode[]>;
|
|
62
|
+
updateSkill(id: SkillId, updates: SkillNodeUpdate): Promise<SkillNode>;
|
|
63
|
+
deleteSkill(id: SkillId): Promise<void>;
|
|
64
|
+
findSkills(query: Partial<SkillQuery>): Promise<SkillNode[]>;
|
|
65
|
+
countSkills(query?: Partial<SkillQuery>): Promise<number>;
|
|
66
|
+
createPrerequisite(input: PrerequisiteEdgeInput): Promise<PrerequisiteEdge>;
|
|
67
|
+
getPrerequisite(id: EdgeId): Promise<PrerequisiteEdge | null>;
|
|
68
|
+
deletePrerequisite(id: EdgeId): Promise<void>;
|
|
69
|
+
findPrerequisites(criteria: {
|
|
70
|
+
sourceId?: SkillId;
|
|
71
|
+
targetId?: SkillId;
|
|
72
|
+
type?: string;
|
|
73
|
+
minStrength?: number;
|
|
74
|
+
}): Promise<PrerequisiteEdge[]>;
|
|
75
|
+
getPrerequisitesOf(skillId: SkillId): Promise<SkillNode[]>;
|
|
76
|
+
getDependentsOf(skillId: SkillId): Promise<SkillNode[]>;
|
|
77
|
+
getSubgraph(rootId: SkillId, depth: number): Promise<Subgraph>;
|
|
78
|
+
getRootSkills(): Promise<SkillNode[]>;
|
|
79
|
+
getLeafSkills(): Promise<SkillNode[]>;
|
|
80
|
+
getPath(fromId: SkillId, toId: SkillId): Promise<SkillNode[] | null>;
|
|
81
|
+
importGraph(nodes: SkillNodeInput[], edges: PrerequisiteEdgeInput[], options?: {
|
|
82
|
+
clearExisting?: boolean;
|
|
83
|
+
}): Promise<ImportResult>;
|
|
84
|
+
exportGraph(): Promise<GraphExport>;
|
|
85
|
+
clearAll(): Promise<void>;
|
|
86
|
+
getStats(): Promise<GraphStats>;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=neo4j.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neo4j.d.ts","sourceRoot":"","sources":["../../../src/storage/neo4j.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sample educational graphs for testing and demos
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { SkillNodeInput, PrerequisiteEdgeInput, GraphStorage, ImportResult } from '../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Sample fractions curriculum (elementary math)
|
|
9
|
+
*/
|
|
10
|
+
export declare const FRACTIONS_CURRICULUM: {
|
|
11
|
+
nodes: SkillNodeInput[];
|
|
12
|
+
edges: PrerequisiteEdgeInput[];
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Sample programming fundamentals curriculum
|
|
16
|
+
*/
|
|
17
|
+
export declare const PROGRAMMING_CURRICULUM: {
|
|
18
|
+
nodes: SkillNodeInput[];
|
|
19
|
+
edges: PrerequisiteEdgeInput[];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Seed a storage instance with sample data
|
|
23
|
+
*/
|
|
24
|
+
export declare function seedStorage(storage: GraphStorage, curriculum?: 'fractions' | 'programming' | 'all', options?: {
|
|
25
|
+
clearExisting?: boolean;
|
|
26
|
+
}): Promise<ImportResult>;
|
|
27
|
+
//# sourceMappingURL=seeds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../../src/storage/seeds.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACb,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAoThC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE;IACnC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,qBAAqB,EAAE,CAAC;CA6MhC,CAAC;AAEF;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EACrB,UAAU,GAAE,WAAW,GAAG,aAAa,GAAG,KAAa,EACvD,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACpC,OAAO,CAAC,YAAY,CAAC,CA0CvB"}
|
|
@@ -15,4 +15,5 @@ export type { Subgraph, GraphExport, GraphStats, GraphValidation, GraphValidatio
|
|
|
15
15
|
export { GRAPH_VERSION } from './graph.js';
|
|
16
16
|
export type { QueryOperator, QueryFilter, QuerySort, QueryPagination, SkillQuery, ZPDResult, LearningPath, LearningSession, ReviewSchedule, ReviewItem, ZPDOptions, PathOptions, ReviewOptions, } from './query.js';
|
|
17
17
|
export type { StorageBackend, StorageConfigBase, Neo4jConfig, LevelGraphConfig, MemoryConfig, StorageConfig, ConnectionStatus, ImportResult, GraphStorage, StorageFactory, } from './storage.js';
|
|
18
|
+
export type { ParseFormat, DocumentMetadata, LearningObjective, Topic, Module, ParseResult, ParseWarning, ParseStats, ExtractedSkill, SkillExtractionResult, ParseOptions, ExtractionOptions, Parser, SkillExtractor, } from './parser.js';
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EACL,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,WAAW,CAAC;AAKnB,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1E,YAAY,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK3C,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,eAAe,EACf,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AAKpB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EACL,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC3F,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,WAAW,CAAC;AAKnB,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1E,YAAY,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK3C,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,eAAe,EACf,UAAU,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AAKpB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC;AAKtB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,WAAW,EACX,YAAY,EACZ,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser types for syllabus and curriculum parsing
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { BloomLevel } from './bloom.js';
|
|
7
|
+
import type { SkillNodeInput } from './skill.js';
|
|
8
|
+
/**
|
|
9
|
+
* Supported input formats for parsing
|
|
10
|
+
*/
|
|
11
|
+
export type ParseFormat = 'markdown' | 'json' | 'yaml' | 'pdf' | 'text';
|
|
12
|
+
/**
|
|
13
|
+
* Source document metadata
|
|
14
|
+
*/
|
|
15
|
+
export interface DocumentMetadata {
|
|
16
|
+
/** Original filename or URL */
|
|
17
|
+
source: string;
|
|
18
|
+
/** Document format */
|
|
19
|
+
format: ParseFormat;
|
|
20
|
+
/** Document title if detected */
|
|
21
|
+
title?: string;
|
|
22
|
+
/** Course or subject name */
|
|
23
|
+
course?: string;
|
|
24
|
+
/** Institution name */
|
|
25
|
+
institution?: string;
|
|
26
|
+
/** Grade level or audience */
|
|
27
|
+
gradeLevel?: string;
|
|
28
|
+
/** Parse timestamp */
|
|
29
|
+
parsedAt: string;
|
|
30
|
+
/** Additional metadata */
|
|
31
|
+
custom?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A learning objective extracted from a syllabus
|
|
35
|
+
*/
|
|
36
|
+
export interface LearningObjective {
|
|
37
|
+
/** Original text of the objective */
|
|
38
|
+
text: string;
|
|
39
|
+
/** Detected Bloom's level (null if not detected) */
|
|
40
|
+
bloomLevel: BloomLevel | null;
|
|
41
|
+
/** Confidence score for Bloom's detection (0-1) */
|
|
42
|
+
bloomConfidence: number;
|
|
43
|
+
/** Chapter or section this belongs to */
|
|
44
|
+
section?: string;
|
|
45
|
+
/** Week or unit number */
|
|
46
|
+
week?: number;
|
|
47
|
+
/** Suggested skill name derived from objective */
|
|
48
|
+
suggestedName?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A topic or concept extracted from a syllabus
|
|
52
|
+
*/
|
|
53
|
+
export interface Topic {
|
|
54
|
+
/** Topic name */
|
|
55
|
+
name: string;
|
|
56
|
+
/** Description if available */
|
|
57
|
+
description?: string;
|
|
58
|
+
/** Parent topic (for hierarchical structures) */
|
|
59
|
+
parent?: string;
|
|
60
|
+
/** Week or unit number */
|
|
61
|
+
week?: number;
|
|
62
|
+
/** Associated learning objectives */
|
|
63
|
+
objectives: LearningObjective[];
|
|
64
|
+
/** Estimated time in minutes */
|
|
65
|
+
estimatedMinutes?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A module or chapter extracted from a syllabus
|
|
69
|
+
*/
|
|
70
|
+
export interface Module {
|
|
71
|
+
/** Module/chapter number or ID */
|
|
72
|
+
id: string;
|
|
73
|
+
/** Module title */
|
|
74
|
+
title: string;
|
|
75
|
+
/** Description or summary */
|
|
76
|
+
description?: string;
|
|
77
|
+
/** Week number (for weekly syllabi) */
|
|
78
|
+
week?: number;
|
|
79
|
+
/** Topics covered in this module */
|
|
80
|
+
topics: Topic[];
|
|
81
|
+
/** Direct learning objectives (not under topics) */
|
|
82
|
+
objectives: LearningObjective[];
|
|
83
|
+
/** Estimated duration in minutes */
|
|
84
|
+
estimatedMinutes?: number;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Result of parsing a syllabus document
|
|
88
|
+
*/
|
|
89
|
+
export interface ParseResult {
|
|
90
|
+
/** Document metadata */
|
|
91
|
+
metadata: DocumentMetadata;
|
|
92
|
+
/** Extracted modules/chapters */
|
|
93
|
+
modules: Module[];
|
|
94
|
+
/** Standalone topics (not in modules) */
|
|
95
|
+
topics: Topic[];
|
|
96
|
+
/** Standalone objectives (not in topics) */
|
|
97
|
+
objectives: LearningObjective[];
|
|
98
|
+
/** Parse warnings (non-fatal issues) */
|
|
99
|
+
warnings: ParseWarning[];
|
|
100
|
+
/** Parse statistics */
|
|
101
|
+
stats: ParseStats;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Warning generated during parsing
|
|
105
|
+
*/
|
|
106
|
+
export interface ParseWarning {
|
|
107
|
+
/** Warning type */
|
|
108
|
+
type: 'ambiguous_bloom' | 'missing_objective' | 'unclear_structure' | 'unknown';
|
|
109
|
+
/** Warning message */
|
|
110
|
+
message: string;
|
|
111
|
+
/** Line number or location (if applicable) */
|
|
112
|
+
location?: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Statistics about the parse operation
|
|
116
|
+
*/
|
|
117
|
+
export interface ParseStats {
|
|
118
|
+
/** Total modules found */
|
|
119
|
+
moduleCount: number;
|
|
120
|
+
/** Total topics found */
|
|
121
|
+
topicCount: number;
|
|
122
|
+
/** Total learning objectives found */
|
|
123
|
+
objectiveCount: number;
|
|
124
|
+
/** Objectives with detected Bloom's level */
|
|
125
|
+
bloomDetectedCount: number;
|
|
126
|
+
/** Parse duration in milliseconds */
|
|
127
|
+
durationMs: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* An extracted skill ready for graph creation
|
|
131
|
+
*/
|
|
132
|
+
export interface ExtractedSkill {
|
|
133
|
+
/** Suggested skill input (ready for storage) */
|
|
134
|
+
skill: SkillNodeInput;
|
|
135
|
+
/** Source objective or topic */
|
|
136
|
+
source: LearningObjective | Topic;
|
|
137
|
+
/** Extraction confidence (0-1) */
|
|
138
|
+
confidence: number;
|
|
139
|
+
/** Suggested prerequisites (names, not IDs yet) */
|
|
140
|
+
suggestedPrerequisites?: string[];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Result of extracting skills from parsed content
|
|
144
|
+
*/
|
|
145
|
+
export interface SkillExtractionResult {
|
|
146
|
+
/** Extracted skills */
|
|
147
|
+
skills: ExtractedSkill[];
|
|
148
|
+
/** Suggested prerequisite relationships */
|
|
149
|
+
suggestedEdges: Array<{
|
|
150
|
+
sourceName: string;
|
|
151
|
+
targetName: string;
|
|
152
|
+
strength: number;
|
|
153
|
+
reasoning?: string;
|
|
154
|
+
}>;
|
|
155
|
+
/** Extraction warnings */
|
|
156
|
+
warnings: ParseWarning[];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Options for parsing operations
|
|
160
|
+
*/
|
|
161
|
+
export interface ParseOptions {
|
|
162
|
+
/** Attempt to detect Bloom's levels */
|
|
163
|
+
detectBloom?: boolean;
|
|
164
|
+
/** Extract time estimates */
|
|
165
|
+
extractTime?: boolean;
|
|
166
|
+
/** Suggest skill names from objectives */
|
|
167
|
+
suggestNames?: boolean;
|
|
168
|
+
/** Include raw text in output */
|
|
169
|
+
includeRaw?: boolean;
|
|
170
|
+
/** Custom section headers to recognize */
|
|
171
|
+
sectionHeaders?: string[];
|
|
172
|
+
/** Custom objective markers (e.g., "LO:", "Students will be able to:") */
|
|
173
|
+
objectiveMarkers?: string[];
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Options for skill extraction
|
|
177
|
+
*/
|
|
178
|
+
export interface ExtractionOptions extends ParseOptions {
|
|
179
|
+
/** Default difficulty for extracted skills */
|
|
180
|
+
defaultDifficulty?: number;
|
|
181
|
+
/** Default mastery threshold */
|
|
182
|
+
defaultMasteryThreshold?: number;
|
|
183
|
+
/** Default estimated minutes */
|
|
184
|
+
defaultEstimatedMinutes?: number;
|
|
185
|
+
/** Tags to apply to all extracted skills */
|
|
186
|
+
tags?: string[];
|
|
187
|
+
/** Domain to apply to all extracted skills */
|
|
188
|
+
domain?: string;
|
|
189
|
+
/** Grade level to apply */
|
|
190
|
+
gradeLevel?: string;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Base parser interface
|
|
194
|
+
*/
|
|
195
|
+
export interface Parser {
|
|
196
|
+
/** Parse content from a string */
|
|
197
|
+
parse(content: string, options?: ParseOptions): Promise<ParseResult>;
|
|
198
|
+
/** Get supported format */
|
|
199
|
+
format: ParseFormat;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Skill extractor interface (can use LLM)
|
|
203
|
+
*/
|
|
204
|
+
export interface SkillExtractor {
|
|
205
|
+
/** Extract skills from parse result */
|
|
206
|
+
extract(parseResult: ParseResult, options?: ExtractionOptions): Promise<SkillExtractionResult>;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/types/parser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "learngraph",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.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
|
-
"license": "
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
7
|
"homepage": "https://github.com/fenago/Jali#readme",
|
|
8
8
|
"bugs": {
|
|
9
9
|
"url": "https://github.com/fenago/Jali/issues"
|
|
@@ -127,10 +127,12 @@
|
|
|
127
127
|
},
|
|
128
128
|
"files": [
|
|
129
129
|
"dist",
|
|
130
|
+
"scripts",
|
|
130
131
|
"README.md",
|
|
131
132
|
"LICENSE"
|
|
132
133
|
],
|
|
133
134
|
"scripts": {
|
|
135
|
+
"postinstall": "node scripts/postinstall.js || true",
|
|
134
136
|
"build": "npm run build:esm && npm run build:cjs && npm run build:types",
|
|
135
137
|
"build:esm": "tsc -p tsconfig.esm.json",
|
|
136
138
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* LearnGraph Post-Install Script
|
|
5
|
+
* Displays welcome message with quick start guide
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const CYAN = '\x1b[36m';
|
|
9
|
+
const YELLOW = '\x1b[33m';
|
|
10
|
+
const GREEN = '\x1b[32m';
|
|
11
|
+
const MAGENTA = '\x1b[35m';
|
|
12
|
+
const WHITE = '\x1b[37m';
|
|
13
|
+
const BOLD = '\x1b[1m';
|
|
14
|
+
const DIM = '\x1b[2m';
|
|
15
|
+
const RESET = '\x1b[0m';
|
|
16
|
+
|
|
17
|
+
const ascii = `
|
|
18
|
+
${CYAN}${BOLD}
|
|
19
|
+
╦ ╔═╗╔═╗╦═╗╔╗╔ ╔═╗╦═╗╔═╗╔═╗╦ ╦
|
|
20
|
+
║ ║╣ ╠═╣╠╦╝║║║ ║ ╦╠╦╝╠═╣╠═╝╠═╣
|
|
21
|
+
╩═╝╚═╝╩ ╩╩╚═╝╚╝ ╚═╝╩╚═╩ ╩╩ ╩ ╩
|
|
22
|
+
${RESET}
|
|
23
|
+
${YELLOW} ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}
|
|
24
|
+
${WHITE}${BOLD} AI-Powered Learning Path Generator${RESET}
|
|
25
|
+
${YELLOW} ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}
|
|
26
|
+
|
|
27
|
+
${DIM} Transform syllabi into personalized mastery paths${RESET}
|
|
28
|
+
${DIM} with ZPD, Bloom's Taxonomy & Knowledge Tracing${RESET}
|
|
29
|
+
|
|
30
|
+
${MAGENTA}${BOLD} Created by Dr. Ernesto Lee${RESET}
|
|
31
|
+
${CYAN} https://DrLee.ai${RESET}
|
|
32
|
+
|
|
33
|
+
${GREEN}${BOLD} Quick Start${RESET}
|
|
34
|
+
${GREEN} ───────────${RESET}
|
|
35
|
+
|
|
36
|
+
${WHITE} // In-memory storage (great for testing)${RESET}
|
|
37
|
+
${DIM} import { MemoryStorage } from 'learngraph/storage';
|
|
38
|
+
|
|
39
|
+
const storage = new MemoryStorage();
|
|
40
|
+
await storage.connect({ backend: 'memory' });
|
|
41
|
+
|
|
42
|
+
const skill = await storage.createSkill({
|
|
43
|
+
name: 'Add Fractions',
|
|
44
|
+
description: 'Add fractions with like denominators',
|
|
45
|
+
bloomLevel: 'apply',
|
|
46
|
+
difficulty: 0.4,
|
|
47
|
+
isThresholdConcept: false,
|
|
48
|
+
masteryThreshold: 0.8,
|
|
49
|
+
estimatedMinutes: 30,
|
|
50
|
+
tags: ['math', 'fractions'],
|
|
51
|
+
metadata: {}
|
|
52
|
+
});${RESET}
|
|
53
|
+
|
|
54
|
+
${GREEN}${BOLD} Storage Backends${RESET}
|
|
55
|
+
${GREEN} ────────────────${RESET}
|
|
56
|
+
|
|
57
|
+
${WHITE} Memory${RESET} ${DIM}Built-in, zero config${RESET}
|
|
58
|
+
${WHITE} LevelGraph${RESET} ${DIM}npm install level levelgraph${RESET}
|
|
59
|
+
${WHITE} Neo4j${RESET} ${DIM}npm install neo4j-driver${RESET}
|
|
60
|
+
|
|
61
|
+
${YELLOW} Docs:${RESET} ${CYAN}https://github.com/fenago/Jali${RESET}
|
|
62
|
+
${YELLOW} Issues:${RESET} ${CYAN}https://github.com/fenago/Jali/issues${RESET}
|
|
63
|
+
|
|
64
|
+
${GREEN}${BOLD} Thank you for using LearnGraph!${RESET}
|
|
65
|
+
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
console.log(ascii);
|