@nahisaho/musubix-library-learner 2.1.1 → 2.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/dist/EnhancedLibraryLearner.d.ts +159 -0
- package/dist/EnhancedLibraryLearner.d.ts.map +1 -0
- package/dist/EnhancedLibraryLearner.js +296 -0
- package/dist/EnhancedLibraryLearner.js.map +1 -0
- package/dist/domain/DomainAwareAbstractor.d.ts +226 -0
- package/dist/domain/DomainAwareAbstractor.d.ts.map +1 -0
- package/dist/domain/DomainAwareAbstractor.js +237 -0
- package/dist/domain/DomainAwareAbstractor.js.map +1 -0
- package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts +9 -0
- package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts.map +1 -0
- package/dist/domain/__tests__/DomainAwareAbstractor.test.js +217 -0
- package/dist/domain/__tests__/DomainAwareAbstractor.test.js.map +1 -0
- package/dist/domain/index.d.ts +7 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +6 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/hierarchy/HierarchyManager.d.ts +227 -0
- package/dist/hierarchy/HierarchyManager.d.ts.map +1 -0
- package/dist/hierarchy/HierarchyManager.js +342 -0
- package/dist/hierarchy/HierarchyManager.js.map +1 -0
- package/dist/hierarchy/index.d.ts +9 -0
- package/dist/hierarchy/index.d.ts.map +1 -0
- package/dist/hierarchy/index.js +8 -0
- package/dist/hierarchy/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/library/IterativeCompressor.d.ts +196 -0
- package/dist/library/IterativeCompressor.d.ts.map +1 -0
- package/dist/library/IterativeCompressor.js +367 -0
- package/dist/library/IterativeCompressor.js.map +1 -0
- package/dist/library/PatternVersionManager.d.ts +177 -0
- package/dist/library/PatternVersionManager.d.ts.map +1 -0
- package/dist/library/PatternVersionManager.js +223 -0
- package/dist/library/PatternVersionManager.js.map +1 -0
- package/dist/library/__tests__/IterativeCompressor.test.d.ts +9 -0
- package/dist/library/__tests__/IterativeCompressor.test.d.ts.map +1 -0
- package/dist/library/__tests__/IterativeCompressor.test.js +200 -0
- package/dist/library/__tests__/IterativeCompressor.test.js.map +1 -0
- package/dist/library/__tests__/PatternVersionManager.test.d.ts +9 -0
- package/dist/library/__tests__/PatternVersionManager.test.d.ts.map +1 -0
- package/dist/library/__tests__/PatternVersionManager.test.js +218 -0
- package/dist/library/__tests__/PatternVersionManager.test.js.map +1 -0
- package/dist/library/index.d.ts +4 -0
- package/dist/library/index.d.ts.map +1 -1
- package/dist/library/index.js +4 -0
- package/dist/library/index.js.map +1 -1
- package/dist/metrics/MetricsExporter.d.ts +128 -0
- package/dist/metrics/MetricsExporter.d.ts.map +1 -0
- package/dist/metrics/MetricsExporter.js +157 -0
- package/dist/metrics/MetricsExporter.js.map +1 -0
- package/dist/metrics/index.d.ts +9 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +8 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/rewrite/RewriteRuleSet.d.ts +136 -0
- package/dist/rewrite/RewriteRuleSet.d.ts.map +1 -0
- package/dist/rewrite/RewriteRuleSet.js +460 -0
- package/dist/rewrite/RewriteRuleSet.js.map +1 -0
- package/dist/rewrite/index.d.ts +9 -0
- package/dist/rewrite/index.d.ts.map +1 -0
- package/dist/rewrite/index.js +8 -0
- package/dist/rewrite/index.js.map +1 -0
- package/dist/search/TypeDirectedPruner.d.ts +138 -0
- package/dist/search/TypeDirectedPruner.d.ts.map +1 -0
- package/dist/search/TypeDirectedPruner.js +245 -0
- package/dist/search/TypeDirectedPruner.js.map +1 -0
- package/dist/search/index.d.ts +9 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +8 -0
- package/dist/search/index.js.map +1 -0
- package/dist/updater/IncrementalUpdater.d.ts +152 -0
- package/dist/updater/IncrementalUpdater.d.ts.map +1 -0
- package/dist/updater/IncrementalUpdater.js +283 -0
- package/dist/updater/IncrementalUpdater.js.map +1 -0
- package/dist/updater/index.d.ts +7 -0
- package/dist/updater/index.d.ts.map +1 -0
- package/dist/updater/index.js +6 -0
- package/dist/updater/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedLibraryLearner - v2.2.0 Integrated Library Learning
|
|
3
|
+
* @module @nahisaho/musubix-library-learner
|
|
4
|
+
* @see TSK-LL-109
|
|
5
|
+
* @see DES-LL-109
|
|
6
|
+
*
|
|
7
|
+
* v2.2.0コンポーネントを統合した拡張LibraryLearner
|
|
8
|
+
* - HierarchyManager: 階層的パターン管理
|
|
9
|
+
* - TypeDirectedPruner: 型指向プルーニング
|
|
10
|
+
* - RewriteRuleSet: 書き換えルール最適化
|
|
11
|
+
* - IncrementalUpdater: 高速インクリメンタル更新
|
|
12
|
+
*/
|
|
13
|
+
import type { CodeCorpus, LearnResult, Specification, SynthesizeOptions, SynthesisResult, LibraryStats, LibraryLearnerConfig, LearnedPattern } from './types.js';
|
|
14
|
+
import { type HierarchyManager, type HierarchyMetrics } from './hierarchy/HierarchyManager.js';
|
|
15
|
+
import { type TypeDirectedPruner } from './search/TypeDirectedPruner.js';
|
|
16
|
+
import { type RewriteRuleSet } from './rewrite/RewriteRuleSet.js';
|
|
17
|
+
import { type IncrementalUpdater, type FileChange, type UpdateResult } from './updater/IncrementalUpdater.js';
|
|
18
|
+
/**
|
|
19
|
+
* Enhanced configuration with v2.2.0 options
|
|
20
|
+
*/
|
|
21
|
+
export interface EnhancedLibraryLearnerConfig extends LibraryLearnerConfig {
|
|
22
|
+
/** Enable hierarchy management (default: true) */
|
|
23
|
+
enableHierarchyManagement?: boolean;
|
|
24
|
+
/** Enable type-directed search (default: true) */
|
|
25
|
+
enableTypedSearch?: boolean;
|
|
26
|
+
/** Enable rewrite rules (default: true) */
|
|
27
|
+
enableRewriteRules?: boolean;
|
|
28
|
+
/** Enable incremental updates (default: true) */
|
|
29
|
+
enableIncrementalUpdate?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Type-constrained synthesis specification
|
|
33
|
+
*/
|
|
34
|
+
export interface TypedSpecification {
|
|
35
|
+
/** Description of desired function */
|
|
36
|
+
description: string;
|
|
37
|
+
/** Input types */
|
|
38
|
+
inputTypes: string[];
|
|
39
|
+
/** Output type */
|
|
40
|
+
outputType: string;
|
|
41
|
+
/** Optional examples */
|
|
42
|
+
examples?: Array<{
|
|
43
|
+
input: unknown[];
|
|
44
|
+
output: unknown;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Search statistics
|
|
49
|
+
*/
|
|
50
|
+
export interface SearchStats {
|
|
51
|
+
/** Candidates examined */
|
|
52
|
+
candidatesExamined: number;
|
|
53
|
+
/** Candidates pruned */
|
|
54
|
+
candidatesPruned: number;
|
|
55
|
+
/** Search time in ms */
|
|
56
|
+
searchTimeMs: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Type-directed synthesis result
|
|
60
|
+
*/
|
|
61
|
+
export interface TypedSynthesisResult extends SynthesisResult {
|
|
62
|
+
/** Search statistics */
|
|
63
|
+
searchStats: SearchStats;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Optimization result
|
|
67
|
+
*/
|
|
68
|
+
export interface OptimizationResult {
|
|
69
|
+
/** Original program */
|
|
70
|
+
original: string;
|
|
71
|
+
/** Optimized program */
|
|
72
|
+
optimized: string;
|
|
73
|
+
/** Number of rewrites applied */
|
|
74
|
+
rewritesApplied: number;
|
|
75
|
+
/** Optimization time in ms */
|
|
76
|
+
optimizationTimeMs: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Enhanced statistics
|
|
80
|
+
*/
|
|
81
|
+
export interface EnhancedStats {
|
|
82
|
+
/** Basic library stats */
|
|
83
|
+
basic: LibraryStats;
|
|
84
|
+
/** Hierarchy metrics */
|
|
85
|
+
hierarchy: HierarchyMetrics;
|
|
86
|
+
/** Rewrite rule stats */
|
|
87
|
+
rewrite: {
|
|
88
|
+
ruleCount: number;
|
|
89
|
+
totalApplications: number;
|
|
90
|
+
};
|
|
91
|
+
/** Incremental update stats */
|
|
92
|
+
incremental: {
|
|
93
|
+
totalChanges: number;
|
|
94
|
+
averageTimeMs: number;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* EnhancedLibraryLearner interface
|
|
99
|
+
*/
|
|
100
|
+
export interface EnhancedLibraryLearner {
|
|
101
|
+
learnFromCorpus(corpus: CodeCorpus): Promise<LearnResult>;
|
|
102
|
+
learnIncremental(code: string): Promise<void>;
|
|
103
|
+
synthesize(spec: Specification, options?: SynthesizeOptions): Promise<SynthesisResult>;
|
|
104
|
+
getStats(): Promise<LibraryStats>;
|
|
105
|
+
exportLibrary(): Promise<LearnedPattern[]>;
|
|
106
|
+
importLibrary(patterns: LearnedPattern[]): Promise<void>;
|
|
107
|
+
learnFromCode(code: string): Promise<LearnResult>;
|
|
108
|
+
synthesizeWithTypes(spec: TypedSpecification): Promise<TypedSynthesisResult>;
|
|
109
|
+
optimizeWithRewrites(program: string): Promise<OptimizationResult>;
|
|
110
|
+
processFileChange(change: FileChange): Promise<UpdateResult>;
|
|
111
|
+
getHierarchyManager(): HierarchyManager;
|
|
112
|
+
getTypePruner(): TypeDirectedPruner;
|
|
113
|
+
getRewriteRules(): RewriteRuleSet;
|
|
114
|
+
getIncrementalUpdater(): IncrementalUpdater;
|
|
115
|
+
getHierarchyMetrics(): HierarchyMetrics;
|
|
116
|
+
getEnhancedStats(): Promise<EnhancedStats>;
|
|
117
|
+
toJSON(): string;
|
|
118
|
+
fromJSON(json: string): void;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Default implementation of EnhancedLibraryLearner
|
|
122
|
+
*/
|
|
123
|
+
declare class DefaultEnhancedLibraryLearner implements EnhancedLibraryLearner {
|
|
124
|
+
private config;
|
|
125
|
+
private baseLearner;
|
|
126
|
+
private hierarchyManager;
|
|
127
|
+
private typePruner;
|
|
128
|
+
private rewriteRules;
|
|
129
|
+
private incrementalUpdater;
|
|
130
|
+
private rewriteApplications;
|
|
131
|
+
private lastHierarchyMetrics;
|
|
132
|
+
constructor(config?: EnhancedLibraryLearnerConfig);
|
|
133
|
+
learnFromCorpus(corpus: CodeCorpus): Promise<LearnResult>;
|
|
134
|
+
learnIncremental(code: string): Promise<void>;
|
|
135
|
+
synthesize(spec: Specification, options?: SynthesizeOptions): Promise<SynthesisResult>;
|
|
136
|
+
getStats(): Promise<LibraryStats>;
|
|
137
|
+
exportLibrary(): Promise<LearnedPattern[]>;
|
|
138
|
+
importLibrary(patterns: LearnedPattern[]): Promise<void>;
|
|
139
|
+
learnFromCode(code: string): Promise<LearnResult>;
|
|
140
|
+
synthesizeWithTypes(spec: TypedSpecification): Promise<TypedSynthesisResult>;
|
|
141
|
+
optimizeWithRewrites(program: string): Promise<OptimizationResult>;
|
|
142
|
+
processFileChange(change: FileChange): Promise<UpdateResult>;
|
|
143
|
+
getHierarchyManager(): HierarchyManager;
|
|
144
|
+
getTypePruner(): TypeDirectedPruner;
|
|
145
|
+
getRewriteRules(): RewriteRuleSet;
|
|
146
|
+
getIncrementalUpdater(): IncrementalUpdater;
|
|
147
|
+
getHierarchyMetrics(): HierarchyMetrics;
|
|
148
|
+
getEnhancedStats(): Promise<EnhancedStats>;
|
|
149
|
+
toJSON(): string;
|
|
150
|
+
fromJSON(json: string): void;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create an EnhancedLibraryLearner instance
|
|
154
|
+
* @param config - Optional configuration
|
|
155
|
+
* @returns EnhancedLibraryLearner instance
|
|
156
|
+
*/
|
|
157
|
+
export declare function createEnhancedLibraryLearner(config?: EnhancedLibraryLearnerConfig): EnhancedLibraryLearner;
|
|
158
|
+
export { DefaultEnhancedLibraryLearner };
|
|
159
|
+
//# sourceMappingURL=EnhancedLibraryLearner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancedLibraryLearner.d.ts","sourceRoot":"","sources":["../src/EnhancedLibraryLearner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EnhancedLibraryLearner - v2.2.0 Integrated Library Learning
|
|
3
|
+
* @module @nahisaho/musubix-library-learner
|
|
4
|
+
* @see TSK-LL-109
|
|
5
|
+
* @see DES-LL-109
|
|
6
|
+
*
|
|
7
|
+
* v2.2.0コンポーネントを統合した拡張LibraryLearner
|
|
8
|
+
* - HierarchyManager: 階層的パターン管理
|
|
9
|
+
* - TypeDirectedPruner: 型指向プルーニング
|
|
10
|
+
* - RewriteRuleSet: 書き換えルール最適化
|
|
11
|
+
* - IncrementalUpdater: 高速インクリメンタル更新
|
|
12
|
+
*/
|
|
13
|
+
import { createLibraryLearner } from './LibraryLearner.js';
|
|
14
|
+
import { createHierarchyManager, } from './hierarchy/HierarchyManager.js';
|
|
15
|
+
import { createTypeDirectedPruner, } from './search/TypeDirectedPruner.js';
|
|
16
|
+
import { createRewriteRuleSet, } from './rewrite/RewriteRuleSet.js';
|
|
17
|
+
import { createIncrementalUpdater, } from './updater/IncrementalUpdater.js';
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Default Implementation
|
|
20
|
+
// =============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Default implementation of EnhancedLibraryLearner
|
|
23
|
+
*/
|
|
24
|
+
class DefaultEnhancedLibraryLearner {
|
|
25
|
+
config;
|
|
26
|
+
baseLearner;
|
|
27
|
+
hierarchyManager;
|
|
28
|
+
typePruner;
|
|
29
|
+
rewriteRules;
|
|
30
|
+
incrementalUpdater;
|
|
31
|
+
rewriteApplications = 0;
|
|
32
|
+
lastHierarchyMetrics = {
|
|
33
|
+
extractionTimeMs: 0,
|
|
34
|
+
patternsPerLevel: [],
|
|
35
|
+
compressionRatio: 1.0,
|
|
36
|
+
totalPatternsRaw: 0,
|
|
37
|
+
totalPatternsAbstracted: 0,
|
|
38
|
+
};
|
|
39
|
+
constructor(config = {}) {
|
|
40
|
+
this.config = {
|
|
41
|
+
abstractionLevels: config.abstractionLevels ?? 3,
|
|
42
|
+
minOccurrences: config.minOccurrences ?? 2,
|
|
43
|
+
decayRate: config.decayRate ?? 0.95,
|
|
44
|
+
pruneThreshold: config.pruneThreshold ?? 0.1,
|
|
45
|
+
useEGraph: config.useEGraph ?? true,
|
|
46
|
+
storagePath: config.storagePath ?? '.musubix/library',
|
|
47
|
+
enableHierarchyManagement: config.enableHierarchyManagement ?? true,
|
|
48
|
+
enableTypedSearch: config.enableTypedSearch ?? true,
|
|
49
|
+
enableRewriteRules: config.enableRewriteRules ?? true,
|
|
50
|
+
enableIncrementalUpdate: config.enableIncrementalUpdate ?? true,
|
|
51
|
+
};
|
|
52
|
+
// Initialize base learner
|
|
53
|
+
this.baseLearner = createLibraryLearner({
|
|
54
|
+
abstractionLevels: this.config.abstractionLevels,
|
|
55
|
+
minOccurrences: this.config.minOccurrences,
|
|
56
|
+
decayRate: this.config.decayRate,
|
|
57
|
+
pruneThreshold: this.config.pruneThreshold,
|
|
58
|
+
useEGraph: this.config.useEGraph,
|
|
59
|
+
storagePath: this.config.storagePath,
|
|
60
|
+
});
|
|
61
|
+
// Initialize v2.2.0 components
|
|
62
|
+
this.hierarchyManager = createHierarchyManager({
|
|
63
|
+
maxLevels: this.config.abstractionLevels,
|
|
64
|
+
promotionThreshold: 10,
|
|
65
|
+
});
|
|
66
|
+
this.typePruner = createTypeDirectedPruner({
|
|
67
|
+
maxCandidates: 100,
|
|
68
|
+
enableGenerics: true,
|
|
69
|
+
});
|
|
70
|
+
this.rewriteRules = createRewriteRuleSet({
|
|
71
|
+
maxIterations: 10,
|
|
72
|
+
enableBuiltinRules: true,
|
|
73
|
+
});
|
|
74
|
+
this.incrementalUpdater = createIncrementalUpdater({
|
|
75
|
+
enableParallelProcessing: true,
|
|
76
|
+
maxCacheSize: 1000,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
// =========================================================================
|
|
80
|
+
// Base Functionality
|
|
81
|
+
// =========================================================================
|
|
82
|
+
async learnFromCorpus(corpus) {
|
|
83
|
+
return this.baseLearner.learnFromCorpus(corpus);
|
|
84
|
+
}
|
|
85
|
+
async learnIncremental(code) {
|
|
86
|
+
return this.baseLearner.learnIncremental(code);
|
|
87
|
+
}
|
|
88
|
+
async synthesize(spec, options) {
|
|
89
|
+
return this.baseLearner.synthesize(spec, options);
|
|
90
|
+
}
|
|
91
|
+
async getStats() {
|
|
92
|
+
return this.baseLearner.getStats();
|
|
93
|
+
}
|
|
94
|
+
async exportLibrary() {
|
|
95
|
+
return this.baseLearner.exportLibrary();
|
|
96
|
+
}
|
|
97
|
+
async importLibrary(patterns) {
|
|
98
|
+
return this.baseLearner.importLibrary(patterns);
|
|
99
|
+
}
|
|
100
|
+
// =========================================================================
|
|
101
|
+
// v2.2.0 Enhanced Methods
|
|
102
|
+
// =========================================================================
|
|
103
|
+
async learnFromCode(code) {
|
|
104
|
+
const corpus = {
|
|
105
|
+
id: `code-${Date.now()}`,
|
|
106
|
+
files: [
|
|
107
|
+
{
|
|
108
|
+
path: 'input.ts',
|
|
109
|
+
content: code,
|
|
110
|
+
language: 'typescript',
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
};
|
|
114
|
+
const result = await this.learnFromCorpus(corpus);
|
|
115
|
+
// Update hierarchy if enabled
|
|
116
|
+
if (this.config.enableHierarchyManagement) {
|
|
117
|
+
const hierarchyResult = await this.hierarchyManager.extractHierarchy(corpus);
|
|
118
|
+
this.lastHierarchyMetrics = hierarchyResult.metrics;
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
async synthesizeWithTypes(spec) {
|
|
123
|
+
const startTime = Date.now();
|
|
124
|
+
let candidatesExamined = 0;
|
|
125
|
+
let candidatesPruned = 0;
|
|
126
|
+
// Get all patterns
|
|
127
|
+
const patterns = await this.exportLibrary();
|
|
128
|
+
candidatesExamined = patterns.length;
|
|
129
|
+
// Apply type-directed pruning if enabled
|
|
130
|
+
if (this.config.enableTypedSearch) {
|
|
131
|
+
// Create type signature from spec
|
|
132
|
+
const targetSignature = {
|
|
133
|
+
kind: 'function',
|
|
134
|
+
params: spec.inputTypes,
|
|
135
|
+
returns: spec.outputType,
|
|
136
|
+
};
|
|
137
|
+
// Prune candidates using type pruner
|
|
138
|
+
const candidates = patterns.map((p) => ({
|
|
139
|
+
id: p.id,
|
|
140
|
+
ast: (typeof p.content === 'object' && p.content !== null && 'ast' in p.content
|
|
141
|
+
? p.content.ast
|
|
142
|
+
: { type: 'unknown' }),
|
|
143
|
+
typeSignature: {
|
|
144
|
+
kind: 'function',
|
|
145
|
+
params: spec.inputTypes,
|
|
146
|
+
returns: spec.outputType,
|
|
147
|
+
},
|
|
148
|
+
score: p.confidence,
|
|
149
|
+
}));
|
|
150
|
+
const pruneResult = await this.typePruner.prune(candidates, targetSignature);
|
|
151
|
+
candidatesPruned = candidates.length - pruneResult.candidates.length;
|
|
152
|
+
}
|
|
153
|
+
// Perform synthesis
|
|
154
|
+
const inputTypes = spec.inputTypes.map((t) => ({
|
|
155
|
+
kind: 'primitive',
|
|
156
|
+
name: t,
|
|
157
|
+
}));
|
|
158
|
+
const baseSpec = {
|
|
159
|
+
description: spec.description,
|
|
160
|
+
examples: spec.examples ?? [],
|
|
161
|
+
type: {
|
|
162
|
+
kind: 'function',
|
|
163
|
+
paramTypes: inputTypes,
|
|
164
|
+
returnType: { kind: 'primitive', name: spec.outputType },
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
const result = await this.synthesize(baseSpec);
|
|
168
|
+
return {
|
|
169
|
+
...result,
|
|
170
|
+
searchStats: {
|
|
171
|
+
candidatesExamined,
|
|
172
|
+
candidatesPruned,
|
|
173
|
+
searchTimeMs: Date.now() - startTime,
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async optimizeWithRewrites(program) {
|
|
178
|
+
const startTime = Date.now();
|
|
179
|
+
let rewritesApplied = 0;
|
|
180
|
+
if (!this.config.enableRewriteRules) {
|
|
181
|
+
return {
|
|
182
|
+
original: program,
|
|
183
|
+
optimized: program,
|
|
184
|
+
rewritesApplied: 0,
|
|
185
|
+
optimizationTimeMs: Date.now() - startTime,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
// Convert program string to a simple AST node for rewriting
|
|
189
|
+
const programAst = { type: 'Program', content: program };
|
|
190
|
+
// Apply rewrites
|
|
191
|
+
const result = this.rewriteRules.rewrite(programAst);
|
|
192
|
+
if (result.changed) {
|
|
193
|
+
rewritesApplied = result.rulesApplied.length;
|
|
194
|
+
}
|
|
195
|
+
this.rewriteApplications += rewritesApplied;
|
|
196
|
+
// Extract optimized content
|
|
197
|
+
const optimized = result.changed && 'content' in result.rewritten
|
|
198
|
+
? String(result.rewritten['content'])
|
|
199
|
+
: program;
|
|
200
|
+
return {
|
|
201
|
+
original: program,
|
|
202
|
+
optimized,
|
|
203
|
+
rewritesApplied,
|
|
204
|
+
optimizationTimeMs: Date.now() - startTime,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
async processFileChange(change) {
|
|
208
|
+
if (!this.config.enableIncrementalUpdate) {
|
|
209
|
+
return {
|
|
210
|
+
success: true,
|
|
211
|
+
changeType: change.changeType,
|
|
212
|
+
processingTimeMs: 0,
|
|
213
|
+
affectedPatterns: [],
|
|
214
|
+
dependentFiles: [],
|
|
215
|
+
cacheHit: false,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
return this.incrementalUpdater.processChange(change);
|
|
219
|
+
}
|
|
220
|
+
// =========================================================================
|
|
221
|
+
// Component Access
|
|
222
|
+
// =========================================================================
|
|
223
|
+
getHierarchyManager() {
|
|
224
|
+
return this.hierarchyManager;
|
|
225
|
+
}
|
|
226
|
+
getTypePruner() {
|
|
227
|
+
return this.typePruner;
|
|
228
|
+
}
|
|
229
|
+
getRewriteRules() {
|
|
230
|
+
return this.rewriteRules;
|
|
231
|
+
}
|
|
232
|
+
getIncrementalUpdater() {
|
|
233
|
+
return this.incrementalUpdater;
|
|
234
|
+
}
|
|
235
|
+
// =========================================================================
|
|
236
|
+
// Enhanced Stats
|
|
237
|
+
// =========================================================================
|
|
238
|
+
getHierarchyMetrics() {
|
|
239
|
+
// Return cached metrics from last extraction, or default if no extraction yet
|
|
240
|
+
return this.lastHierarchyMetrics;
|
|
241
|
+
}
|
|
242
|
+
async getEnhancedStats() {
|
|
243
|
+
const basicStats = await this.getStats();
|
|
244
|
+
const hierarchyMetrics = this.lastHierarchyMetrics;
|
|
245
|
+
const incrementalStats = this.incrementalUpdater.getStatistics();
|
|
246
|
+
return {
|
|
247
|
+
basic: basicStats,
|
|
248
|
+
hierarchy: hierarchyMetrics,
|
|
249
|
+
rewrite: {
|
|
250
|
+
ruleCount: this.rewriteRules.getRuleCount(),
|
|
251
|
+
totalApplications: this.rewriteApplications,
|
|
252
|
+
},
|
|
253
|
+
incremental: {
|
|
254
|
+
totalChanges: incrementalStats.totalChangesProcessed,
|
|
255
|
+
averageTimeMs: incrementalStats.averageProcessingTimeMs,
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// =========================================================================
|
|
260
|
+
// Serialization
|
|
261
|
+
// =========================================================================
|
|
262
|
+
toJSON() {
|
|
263
|
+
return JSON.stringify({
|
|
264
|
+
// IncrementalUpdater has toJSON/fromJSON
|
|
265
|
+
incrementalState: this.incrementalUpdater.toJSON(),
|
|
266
|
+
rewriteApplications: this.rewriteApplications,
|
|
267
|
+
lastHierarchyMetrics: this.lastHierarchyMetrics,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
fromJSON(json) {
|
|
271
|
+
const data = JSON.parse(json);
|
|
272
|
+
// IncrementalUpdater has fromJSON
|
|
273
|
+
if (data.incrementalState) {
|
|
274
|
+
this.incrementalUpdater.fromJSON(data.incrementalState);
|
|
275
|
+
}
|
|
276
|
+
if (data.rewriteApplications !== undefined) {
|
|
277
|
+
this.rewriteApplications = data.rewriteApplications;
|
|
278
|
+
}
|
|
279
|
+
if (data.lastHierarchyMetrics) {
|
|
280
|
+
this.lastHierarchyMetrics = data.lastHierarchyMetrics;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// =============================================================================
|
|
285
|
+
// Factory Function
|
|
286
|
+
// =============================================================================
|
|
287
|
+
/**
|
|
288
|
+
* Create an EnhancedLibraryLearner instance
|
|
289
|
+
* @param config - Optional configuration
|
|
290
|
+
* @returns EnhancedLibraryLearner instance
|
|
291
|
+
*/
|
|
292
|
+
export function createEnhancedLibraryLearner(config = {}) {
|
|
293
|
+
return new DefaultEnhancedLibraryLearner(config);
|
|
294
|
+
}
|
|
295
|
+
export { DefaultEnhancedLibraryLearner };
|
|
296
|
+
//# sourceMappingURL=EnhancedLibraryLearner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancedLibraryLearner.js","sourceRoot":"","sources":["../src/EnhancedLibraryLearner.ts"],"names":[],"mappings":"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"}
|