@nahisaho/musubix-library-learner 2.1.0 → 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.
Files changed (81) hide show
  1. package/dist/EnhancedLibraryLearner.d.ts +159 -0
  2. package/dist/EnhancedLibraryLearner.d.ts.map +1 -0
  3. package/dist/EnhancedLibraryLearner.js +296 -0
  4. package/dist/EnhancedLibraryLearner.js.map +1 -0
  5. package/dist/domain/DomainAwareAbstractor.d.ts +226 -0
  6. package/dist/domain/DomainAwareAbstractor.d.ts.map +1 -0
  7. package/dist/domain/DomainAwareAbstractor.js +237 -0
  8. package/dist/domain/DomainAwareAbstractor.js.map +1 -0
  9. package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts +9 -0
  10. package/dist/domain/__tests__/DomainAwareAbstractor.test.d.ts.map +1 -0
  11. package/dist/domain/__tests__/DomainAwareAbstractor.test.js +217 -0
  12. package/dist/domain/__tests__/DomainAwareAbstractor.test.js.map +1 -0
  13. package/dist/domain/index.d.ts +7 -0
  14. package/dist/domain/index.d.ts.map +1 -0
  15. package/dist/domain/index.js +6 -0
  16. package/dist/domain/index.js.map +1 -0
  17. package/dist/hierarchy/HierarchyManager.d.ts +227 -0
  18. package/dist/hierarchy/HierarchyManager.d.ts.map +1 -0
  19. package/dist/hierarchy/HierarchyManager.js +342 -0
  20. package/dist/hierarchy/HierarchyManager.js.map +1 -0
  21. package/dist/hierarchy/index.d.ts +9 -0
  22. package/dist/hierarchy/index.d.ts.map +1 -0
  23. package/dist/hierarchy/index.js +8 -0
  24. package/dist/hierarchy/index.js.map +1 -0
  25. package/dist/index.d.ts +18 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +13 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/library/IterativeCompressor.d.ts +196 -0
  30. package/dist/library/IterativeCompressor.d.ts.map +1 -0
  31. package/dist/library/IterativeCompressor.js +367 -0
  32. package/dist/library/IterativeCompressor.js.map +1 -0
  33. package/dist/library/PatternVersionManager.d.ts +177 -0
  34. package/dist/library/PatternVersionManager.d.ts.map +1 -0
  35. package/dist/library/PatternVersionManager.js +223 -0
  36. package/dist/library/PatternVersionManager.js.map +1 -0
  37. package/dist/library/__tests__/IterativeCompressor.test.d.ts +9 -0
  38. package/dist/library/__tests__/IterativeCompressor.test.d.ts.map +1 -0
  39. package/dist/library/__tests__/IterativeCompressor.test.js +200 -0
  40. package/dist/library/__tests__/IterativeCompressor.test.js.map +1 -0
  41. package/dist/library/__tests__/PatternVersionManager.test.d.ts +9 -0
  42. package/dist/library/__tests__/PatternVersionManager.test.d.ts.map +1 -0
  43. package/dist/library/__tests__/PatternVersionManager.test.js +218 -0
  44. package/dist/library/__tests__/PatternVersionManager.test.js.map +1 -0
  45. package/dist/library/index.d.ts +4 -0
  46. package/dist/library/index.d.ts.map +1 -1
  47. package/dist/library/index.js +4 -0
  48. package/dist/library/index.js.map +1 -1
  49. package/dist/metrics/MetricsExporter.d.ts +128 -0
  50. package/dist/metrics/MetricsExporter.d.ts.map +1 -0
  51. package/dist/metrics/MetricsExporter.js +157 -0
  52. package/dist/metrics/MetricsExporter.js.map +1 -0
  53. package/dist/metrics/index.d.ts +9 -0
  54. package/dist/metrics/index.d.ts.map +1 -0
  55. package/dist/metrics/index.js +8 -0
  56. package/dist/metrics/index.js.map +1 -0
  57. package/dist/rewrite/RewriteRuleSet.d.ts +136 -0
  58. package/dist/rewrite/RewriteRuleSet.d.ts.map +1 -0
  59. package/dist/rewrite/RewriteRuleSet.js +460 -0
  60. package/dist/rewrite/RewriteRuleSet.js.map +1 -0
  61. package/dist/rewrite/index.d.ts +9 -0
  62. package/dist/rewrite/index.d.ts.map +1 -0
  63. package/dist/rewrite/index.js +8 -0
  64. package/dist/rewrite/index.js.map +1 -0
  65. package/dist/search/TypeDirectedPruner.d.ts +138 -0
  66. package/dist/search/TypeDirectedPruner.d.ts.map +1 -0
  67. package/dist/search/TypeDirectedPruner.js +245 -0
  68. package/dist/search/TypeDirectedPruner.js.map +1 -0
  69. package/dist/search/index.d.ts +9 -0
  70. package/dist/search/index.d.ts.map +1 -0
  71. package/dist/search/index.js +8 -0
  72. package/dist/search/index.js.map +1 -0
  73. package/dist/updater/IncrementalUpdater.d.ts +152 -0
  74. package/dist/updater/IncrementalUpdater.d.ts.map +1 -0
  75. package/dist/updater/IncrementalUpdater.js +283 -0
  76. package/dist/updater/IncrementalUpdater.js.map +1 -0
  77. package/dist/updater/index.d.ts +7 -0
  78. package/dist/updater/index.d.ts.map +1 -0
  79. package/dist/updater/index.js +6 -0
  80. package/dist/updater/index.js.map +1 -0
  81. 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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"}