@nahisaho/musubix-library-learner 2.0.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 (66) hide show
  1. package/README.md +117 -0
  2. package/dist/LibraryLearner.d.ts +36 -0
  3. package/dist/LibraryLearner.d.ts.map +1 -0
  4. package/dist/LibraryLearner.js +217 -0
  5. package/dist/LibraryLearner.js.map +1 -0
  6. package/dist/abstraction/Abstractor.d.ts +29 -0
  7. package/dist/abstraction/Abstractor.d.ts.map +1 -0
  8. package/dist/abstraction/Abstractor.js +290 -0
  9. package/dist/abstraction/Abstractor.js.map +1 -0
  10. package/dist/abstraction/PatternMiner.d.ts +23 -0
  11. package/dist/abstraction/PatternMiner.d.ts.map +1 -0
  12. package/dist/abstraction/PatternMiner.js +263 -0
  13. package/dist/abstraction/PatternMiner.js.map +1 -0
  14. package/dist/abstraction/TypeAnalyzer.d.ts +27 -0
  15. package/dist/abstraction/TypeAnalyzer.d.ts.map +1 -0
  16. package/dist/abstraction/TypeAnalyzer.js +239 -0
  17. package/dist/abstraction/TypeAnalyzer.js.map +1 -0
  18. package/dist/abstraction/index.d.ts +10 -0
  19. package/dist/abstraction/index.d.ts.map +1 -0
  20. package/dist/abstraction/index.js +7 -0
  21. package/dist/abstraction/index.js.map +1 -0
  22. package/dist/egraph/EGraph.d.ts +29 -0
  23. package/dist/egraph/EGraph.d.ts.map +1 -0
  24. package/dist/egraph/EGraph.js +86 -0
  25. package/dist/egraph/EGraph.js.map +1 -0
  26. package/dist/egraph/EGraphBuilder.d.ts +24 -0
  27. package/dist/egraph/EGraphBuilder.d.ts.map +1 -0
  28. package/dist/egraph/EGraphBuilder.js +37 -0
  29. package/dist/egraph/EGraphBuilder.js.map +1 -0
  30. package/dist/egraph/Extractor.d.ts +24 -0
  31. package/dist/egraph/Extractor.d.ts.map +1 -0
  32. package/dist/egraph/Extractor.js +61 -0
  33. package/dist/egraph/Extractor.js.map +1 -0
  34. package/dist/egraph/index.d.ts +10 -0
  35. package/dist/egraph/index.d.ts.map +1 -0
  36. package/dist/egraph/index.js +7 -0
  37. package/dist/egraph/index.js.map +1 -0
  38. package/dist/errors.d.ts +66 -0
  39. package/dist/errors.d.ts.map +1 -0
  40. package/dist/errors.js +99 -0
  41. package/dist/errors.js.map +1 -0
  42. package/dist/index.d.ts +48 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +40 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/library/Consolidator.d.ts +26 -0
  47. package/dist/library/Consolidator.d.ts.map +1 -0
  48. package/dist/library/Consolidator.js +54 -0
  49. package/dist/library/Consolidator.js.map +1 -0
  50. package/dist/library/LibraryStore.d.ts +33 -0
  51. package/dist/library/LibraryStore.d.ts.map +1 -0
  52. package/dist/library/LibraryStore.js +61 -0
  53. package/dist/library/LibraryStore.js.map +1 -0
  54. package/dist/library/Pruner.d.ts +24 -0
  55. package/dist/library/Pruner.d.ts.map +1 -0
  56. package/dist/library/Pruner.js +41 -0
  57. package/dist/library/Pruner.js.map +1 -0
  58. package/dist/library/index.d.ts +10 -0
  59. package/dist/library/index.d.ts.map +1 -0
  60. package/dist/library/index.js +7 -0
  61. package/dist/library/index.js.map +1 -0
  62. package/dist/types.d.ts +365 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +10 -0
  65. package/dist/types.js.map +1 -0
  66. package/package.json +66 -0
package/README.md ADDED
@@ -0,0 +1,117 @@
1
+ # @nahisaho/musubix-library-learner
2
+
3
+ DreamCoder-style hierarchical abstraction and library learning for MUSUBIX.
4
+
5
+ ## Overview
6
+
7
+ This package provides pattern mining, hierarchical abstraction, type-directed search, and E-graph optimization capabilities for the MUSUBIX neuro-symbolic AI integration system.
8
+
9
+ ## Features
10
+
11
+ - **Pattern Mining**: Extract recurring patterns from code corpora
12
+ - **Hierarchical Abstraction**: Three-level abstraction (concrete → templates → concepts)
13
+ - **Type-Directed Search**: Filter and score patterns by type compatibility
14
+ - **E-Graph Optimization**: Equality saturation for optimal expression extraction
15
+ - **Library Management**: Store, consolidate, and prune learned patterns
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @nahisaho/musubix-library-learner
21
+ ```
22
+
23
+ ## Quick Start
24
+
25
+ ```typescript
26
+ import { createLibraryLearner } from '@nahisaho/musubix-library-learner';
27
+
28
+ // Create a library learner
29
+ const learner = createLibraryLearner({
30
+ abstractionLevels: 3,
31
+ minOccurrences: 2,
32
+ });
33
+
34
+ // Learn from a code corpus
35
+ const corpus = {
36
+ id: 'my-corpus',
37
+ files: [
38
+ { path: 'file1.ts', content: '...', language: 'typescript' },
39
+ { path: 'file2.ts', content: '...', language: 'typescript' },
40
+ ],
41
+ };
42
+
43
+ const result = await learner.learnFromCorpus(corpus);
44
+ console.log(`Extracted ${result.patternsExtracted} patterns`);
45
+
46
+ // Synthesize using learned patterns
47
+ const synthesis = await learner.synthesize({
48
+ type: { kind: 'function', paramTypes: [], returnType: { kind: 'primitive', name: 'number' } },
49
+ description: 'A function that returns a number',
50
+ });
51
+
52
+ if (synthesis.success) {
53
+ console.log('Synthesized program:', synthesis.program);
54
+ }
55
+ ```
56
+
57
+ ## API
58
+
59
+ ### LibraryLearner
60
+
61
+ High-level API for library learning.
62
+
63
+ ```typescript
64
+ interface LibraryLearner {
65
+ learnFromCorpus(corpus: CodeCorpus): Promise<LearnResult>;
66
+ learnIncremental(code: string): Promise<void>;
67
+ synthesize(spec: Specification, options?: SynthesizeOptions): Promise<SynthesisResult>;
68
+ getLibrary(): LibraryStore;
69
+ getStats(): Promise<LibraryStats>;
70
+ }
71
+ ```
72
+
73
+ ### PatternMiner
74
+
75
+ Extract patterns from code.
76
+
77
+ ```typescript
78
+ interface PatternMiner {
79
+ mine(corpus: CodeCorpus): Promise<PatternCandidate[]>;
80
+ setMinOccurrences(count: number): void;
81
+ }
82
+ ```
83
+
84
+ ### Abstractor
85
+
86
+ Hierarchical abstraction of patterns.
87
+
88
+ ```typescript
89
+ interface Abstractor {
90
+ extractConcretePatterns(candidates: PatternCandidate[]): ConcretePattern[];
91
+ parameterize(patterns: ConcretePattern[]): ParameterizedTemplate[];
92
+ generalize(templates: ParameterizedTemplate[]): AbstractConcept[];
93
+ }
94
+ ```
95
+
96
+ ### TypeAnalyzer
97
+
98
+ Type-directed search and analysis.
99
+
100
+ ```typescript
101
+ interface TypeAnalyzer {
102
+ isCompatible(source: TypeSignature, target: TypeSignature): boolean;
103
+ filterByType(candidates: PatternCandidate[], expectedType: TypeSignature): PatternCandidate[];
104
+ scoreByTypeMatch(candidate: PatternCandidate, context: TypeContext): number;
105
+ }
106
+ ```
107
+
108
+ ## Requirements
109
+
110
+ - REQ-LL-001: 階層的抽象化 (3+ levels)
111
+ - REQ-LL-002: ライブラリ成長 (auto-expand)
112
+ - REQ-LL-003: 型指向探索 (type-directed search)
113
+ - REQ-LL-004: E-graph最適化
114
+
115
+ ## License
116
+
117
+ MIT
@@ -0,0 +1,36 @@
1
+ /**
2
+ * LibraryLearner - High-level API for library learning
3
+ *
4
+ * REQ-LL-001: 階層的抽象化
5
+ * REQ-LL-002: ライブラリ成長
6
+ * REQ-LL-003: 型指向探索
7
+ * REQ-LL-004: E-graph最適化
8
+ *
9
+ * DES-PHASE2-001: High-level API
10
+ */
11
+ import type { CodeCorpus, LearnResult, Specification, SynthesizeOptions, SynthesisResult, LibraryStats, LibraryLearnerConfig, LearnedPattern } from './types.js';
12
+ import { type LibraryStore } from './library/LibraryStore.js';
13
+ /**
14
+ * LibraryLearner interface
15
+ */
16
+ export interface LibraryLearner {
17
+ /** Learn patterns from a code corpus */
18
+ learnFromCorpus(corpus: CodeCorpus): Promise<LearnResult>;
19
+ /** Incremental learning from single code snippet */
20
+ learnIncremental(code: string): Promise<void>;
21
+ /** Synthesize code using learned library */
22
+ synthesize(spec: Specification, options?: SynthesizeOptions): Promise<SynthesisResult>;
23
+ /** Get the pattern library */
24
+ getLibrary(): LibraryStore;
25
+ /** Get library statistics */
26
+ getStats(): Promise<LibraryStats>;
27
+ /** Export library data */
28
+ exportLibrary(): Promise<LearnedPattern[]>;
29
+ /** Import library data */
30
+ importLibrary(patterns: LearnedPattern[]): Promise<void>;
31
+ }
32
+ /**
33
+ * Factory function to create a LibraryLearner
34
+ */
35
+ export declare function createLibraryLearner(config?: LibraryLearnerConfig): LibraryLearner;
36
+ //# sourceMappingURL=LibraryLearner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LibraryLearner.d.ts","sourceRoot":"","sources":["../src/LibraryLearner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,cAAc,EAEf,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMlF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1D,oDAAoD;IACpD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,4CAA4C;IAC5C,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEvF,8BAA8B;IAC9B,UAAU,IAAI,YAAY,CAAC;IAE3B,6BAA6B;IAC7B,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAElC,0BAA0B;IAC1B,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE3C,0BAA0B;IAC1B,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAoOD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAElF"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * LibraryLearner - High-level API for library learning
3
+ *
4
+ * REQ-LL-001: 階層的抽象化
5
+ * REQ-LL-002: ライブラリ成長
6
+ * REQ-LL-003: 型指向探索
7
+ * REQ-LL-004: E-graph最適化
8
+ *
9
+ * DES-PHASE2-001: High-level API
10
+ */
11
+ import { createPatternMiner } from './abstraction/PatternMiner.js';
12
+ import { createAbstractor } from './abstraction/Abstractor.js';
13
+ import { createTypeAnalyzer } from './abstraction/TypeAnalyzer.js';
14
+ import { createLibraryStore } from './library/LibraryStore.js';
15
+ import { createConsolidator } from './library/Consolidator.js';
16
+ import { createPruner } from './library/Pruner.js';
17
+ import { createEGraphBuilder } from './egraph/EGraphBuilder.js';
18
+ import { createExtractor } from './egraph/Extractor.js';
19
+ /**
20
+ * Default LibraryLearner implementation
21
+ */
22
+ class LibraryLearnerImpl {
23
+ config;
24
+ patternMiner;
25
+ abstractor;
26
+ // @ts-expect-error - Will be used in type-directed synthesis
27
+ typeAnalyzer;
28
+ libraryStore;
29
+ consolidator;
30
+ // @ts-expect-error - Will be used in maintenance operations
31
+ pruner;
32
+ egraphBuilder;
33
+ extractor;
34
+ constructor(config = {}) {
35
+ this.config = {
36
+ abstractionLevels: config.abstractionLevels ?? 3,
37
+ minOccurrences: config.minOccurrences ?? 2,
38
+ decayRate: config.decayRate ?? 0.95,
39
+ pruneThreshold: config.pruneThreshold ?? 0.1,
40
+ useEGraph: config.useEGraph ?? true,
41
+ storagePath: config.storagePath ?? '.musubix/library',
42
+ };
43
+ // Initialize components
44
+ this.patternMiner = createPatternMiner({
45
+ minOccurrences: this.config.minOccurrences,
46
+ });
47
+ this.abstractor = createAbstractor();
48
+ this.typeAnalyzer = createTypeAnalyzer();
49
+ this.libraryStore = createLibraryStore();
50
+ this.consolidator = createConsolidator();
51
+ this.pruner = createPruner();
52
+ this.egraphBuilder = createEGraphBuilder();
53
+ this.extractor = createExtractor();
54
+ }
55
+ async learnFromCorpus(corpus) {
56
+ const startTime = Date.now();
57
+ // Step 1: Mine patterns
58
+ const candidates = await this.patternMiner.mine(corpus);
59
+ // Step 2: Hierarchical abstraction
60
+ const { concrete, templates, concepts } = this.abstractor.abstract(candidates);
61
+ // Step 3: Store patterns in library
62
+ let patternsAdded = 0;
63
+ // Add level 1 patterns (concrete)
64
+ for (const pattern of concrete) {
65
+ await this.libraryStore.add(this.createLearnedPattern(pattern, 1));
66
+ patternsAdded++;
67
+ }
68
+ // Add level 2 patterns (templates) if configured
69
+ if (this.config.abstractionLevels >= 2) {
70
+ for (const template of templates) {
71
+ await this.libraryStore.add({
72
+ id: template.id,
73
+ name: `Template: ${template.id}`,
74
+ level: 2,
75
+ content: template,
76
+ usageCount: 0,
77
+ confidence: 0.7,
78
+ createdAt: new Date(),
79
+ lastUsedAt: new Date(),
80
+ tags: ['template'],
81
+ });
82
+ patternsAdded++;
83
+ }
84
+ }
85
+ // Add level 3 patterns (concepts) if configured
86
+ if (this.config.abstractionLevels >= 3) {
87
+ for (const concept of concepts) {
88
+ await this.libraryStore.add({
89
+ id: concept.id,
90
+ name: concept.name,
91
+ level: 3,
92
+ content: concept,
93
+ usageCount: 0,
94
+ confidence: 0.6,
95
+ createdAt: new Date(),
96
+ lastUsedAt: new Date(),
97
+ tags: ['concept', concept.category],
98
+ });
99
+ patternsAdded++;
100
+ }
101
+ }
102
+ // Step 4: Consolidate similar patterns
103
+ const consolidationReport = await this.consolidator.consolidateLibrary(this.libraryStore);
104
+ return {
105
+ patternsExtracted: candidates.length,
106
+ patternsAdded,
107
+ patternsConsolidated: consolidationReport.patternsMerged,
108
+ duration: Date.now() - startTime,
109
+ };
110
+ }
111
+ async learnIncremental(code) {
112
+ const corpus = {
113
+ id: `incremental-${Date.now()}`,
114
+ files: [
115
+ {
116
+ path: 'incremental.ts',
117
+ content: code,
118
+ language: 'typescript',
119
+ },
120
+ ],
121
+ };
122
+ await this.learnFromCorpus(corpus);
123
+ }
124
+ async synthesize(spec, options = {}) {
125
+ const startTime = Date.now();
126
+ const patternsUsed = [];
127
+ // Get all patterns from library
128
+ const patterns = await this.libraryStore.getAll();
129
+ // Filter patterns by type if specified
130
+ let candidates = patterns;
131
+ if (spec.type && options.useTypeDirected !== false) {
132
+ // Use type analyzer to filter
133
+ // Note: This is simplified - full implementation would need pattern type inference
134
+ candidates = patterns.filter((p) => p.confidence > 0.5);
135
+ }
136
+ // Build e-graph if enabled
137
+ if (this.config.useEGraph && options.useEGraph !== false) {
138
+ const graph = this.egraphBuilder.build(candidates);
139
+ const optimal = this.extractor.extract(graph, (_node, childCosts) => {
140
+ // Simple cost function: prefer smaller expressions
141
+ return 1 + childCosts.reduce((a, b) => a + b, 0);
142
+ });
143
+ if (optimal.cost < Infinity) {
144
+ patternsUsed.push(...candidates.slice(0, 1).map((p) => p.id));
145
+ return {
146
+ success: true,
147
+ program: optimal.ast,
148
+ candidates: [optimal.ast],
149
+ duration: Date.now() - startTime,
150
+ searchNodes: candidates.length,
151
+ patternsUsed,
152
+ };
153
+ }
154
+ }
155
+ // Fallback: no synthesis possible
156
+ return {
157
+ success: false,
158
+ duration: Date.now() - startTime,
159
+ searchNodes: candidates.length,
160
+ patternsUsed,
161
+ };
162
+ }
163
+ getLibrary() {
164
+ return this.libraryStore;
165
+ }
166
+ async getStats() {
167
+ const patterns = await this.libraryStore.getAll();
168
+ const patternsByLevel = { 1: 0, 2: 0, 3: 0 };
169
+ let totalConfidence = 0;
170
+ let totalUsageCount = 0;
171
+ for (const pattern of patterns) {
172
+ patternsByLevel[pattern.level]++;
173
+ totalConfidence += pattern.confidence;
174
+ totalUsageCount += pattern.usageCount;
175
+ }
176
+ const sortedByUsage = [...patterns].sort((a, b) => b.usageCount - a.usageCount);
177
+ return {
178
+ totalPatterns: patterns.length,
179
+ patternsByLevel,
180
+ averageConfidence: patterns.length > 0 ? totalConfidence / patterns.length : 0,
181
+ averageUsageCount: patterns.length > 0 ? totalUsageCount / patterns.length : 0,
182
+ mostUsed: sortedByUsage.slice(0, 5).map((p) => p.id),
183
+ leastUsed: sortedByUsage.slice(-5).map((p) => p.id),
184
+ };
185
+ }
186
+ async exportLibrary() {
187
+ return this.libraryStore.getAll();
188
+ }
189
+ async importLibrary(patterns) {
190
+ for (const pattern of patterns) {
191
+ await this.libraryStore.add(pattern);
192
+ }
193
+ }
194
+ // =========================================================================
195
+ // Private methods
196
+ // =========================================================================
197
+ createLearnedPattern(concrete, level) {
198
+ return {
199
+ id: concrete.id,
200
+ name: `Pattern: ${concrete.ast.type}`,
201
+ level,
202
+ content: concrete,
203
+ usageCount: 0,
204
+ confidence: Math.min(0.5 + concrete.occurrenceCount * 0.1, 1.0),
205
+ createdAt: new Date(),
206
+ lastUsedAt: new Date(),
207
+ tags: [concrete.ast.type.toLowerCase()],
208
+ };
209
+ }
210
+ }
211
+ /**
212
+ * Factory function to create a LibraryLearner
213
+ */
214
+ export function createLibraryLearner(config) {
215
+ return new LibraryLearnerImpl(config);
216
+ }
217
+ //# sourceMappingURL=LibraryLearner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LibraryLearner.js","sourceRoot":"","sources":["../src/LibraryLearner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Abstractor - Hierarchical abstraction of patterns
3
+ *
4
+ * REQ-LL-001: 階層的抽象化
5
+ * DES-PHASE2-001: Abstraction Engine / Abstractor
6
+ */
7
+ import type { PatternCandidate, ConcretePattern, ParameterizedTemplate, AbstractConcept } from '../types.js';
8
+ /**
9
+ * Abstractor interface
10
+ */
11
+ export interface Abstractor {
12
+ /** Level 1: Extract concrete patterns */
13
+ extractConcretePatterns(candidates: PatternCandidate[]): ConcretePattern[];
14
+ /** Level 2: Parameterize patterns into templates */
15
+ parameterize(patterns: ConcretePattern[]): ParameterizedTemplate[];
16
+ /** Level 3: Generalize templates into abstract concepts */
17
+ generalize(templates: ParameterizedTemplate[]): AbstractConcept[];
18
+ /** Full abstraction pipeline */
19
+ abstract(candidates: PatternCandidate[]): {
20
+ concrete: ConcretePattern[];
21
+ templates: ParameterizedTemplate[];
22
+ concepts: AbstractConcept[];
23
+ };
24
+ }
25
+ /**
26
+ * Factory function to create an Abstractor
27
+ */
28
+ export declare function createAbstractor(): Abstractor;
29
+ //# sourceMappingURL=Abstractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Abstractor.d.ts","sourceRoot":"","sources":["../../src/abstraction/Abstractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,eAAe,EAIhB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,uBAAuB,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,eAAe,EAAE,CAAC;IAE3E,oDAAoD;IACpD,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAEnE,2DAA2D;IAC3D,UAAU,CAAC,SAAS,EAAE,qBAAqB,EAAE,GAAG,eAAe,EAAE,CAAC;IAElE,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG;QACxC,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,SAAS,EAAE,qBAAqB,EAAE,CAAC;QACnC,QAAQ,EAAE,eAAe,EAAE,CAAC;KAC7B,CAAC;CACH;AAoVD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAE7C"}