@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.
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,226 @@
1
+ /**
2
+ * DomainAwareAbstractor - Domain-Aware Pattern Abstraction
3
+ * @module @nahisaho/musubix-library-learner
4
+ * @see TSK-LL-106
5
+ * @see DES-LL-106
6
+ * @see REQ-LL-106 Domain-aware pattern abstraction
7
+ */
8
+ import type { LearnedPattern } from '../types.js';
9
+ /**
10
+ * DomainAwareAbstractor configuration
11
+ */
12
+ export interface DomainAwareAbstractorConfig {
13
+ /** Strict mode - require ontology for abstraction */
14
+ strictMode: boolean;
15
+ /** Maximum abstraction depth */
16
+ maxAbstractionDepth: number;
17
+ /** Minimum confidence for domain matching */
18
+ minMatchConfidence: number;
19
+ }
20
+ /**
21
+ * Domain ontology definition
22
+ */
23
+ export interface DomainOntology {
24
+ /** Ontology name */
25
+ name: string;
26
+ /** Version */
27
+ version: string;
28
+ /** Domain concepts */
29
+ concepts: DomainConcept[];
30
+ /** Domain constraints */
31
+ constraints: DomainConstraint[];
32
+ }
33
+ /**
34
+ * Domain concept
35
+ */
36
+ export interface DomainConcept {
37
+ /** Unique identifier */
38
+ id: string;
39
+ /** Concept name */
40
+ name: string;
41
+ /** Description */
42
+ description: string;
43
+ /** Properties of this concept */
44
+ properties: string[];
45
+ /** Relations to other concepts */
46
+ relations: ConceptRelation[];
47
+ }
48
+ /**
49
+ * Relation between concepts
50
+ */
51
+ export interface ConceptRelation {
52
+ /** Relation type */
53
+ type: 'hasMany' | 'hasOne' | 'belongsTo' | 'extends' | 'implements';
54
+ /** Target concept ID */
55
+ target: string;
56
+ }
57
+ /**
58
+ * Domain constraint
59
+ */
60
+ export interface DomainConstraint {
61
+ /** Constraint type */
62
+ type: 'required' | 'unique' | 'positive' | 'range' | 'format' | 'custom';
63
+ /** Target concept */
64
+ concept: string;
65
+ /** Target property */
66
+ property: string;
67
+ /** Constraint parameters */
68
+ params?: Record<string, unknown>;
69
+ }
70
+ /**
71
+ * Abstraction result with domain context
72
+ */
73
+ export interface DomainAbstractionResult {
74
+ /** Original pattern */
75
+ pattern: LearnedPattern;
76
+ /** Identified domain concepts */
77
+ domainConcepts: string[];
78
+ /** Applied constraints */
79
+ constraints: DomainConstraint[];
80
+ /** Confidence score */
81
+ confidence: number;
82
+ /** Abstraction suggestions */
83
+ suggestions: string[];
84
+ }
85
+ /**
86
+ * Concept hierarchy
87
+ */
88
+ export interface ConceptHierarchy {
89
+ /** Root concept */
90
+ concept: DomainConcept;
91
+ /** Related concepts */
92
+ related: DomainConcept[];
93
+ /** Depth in hierarchy */
94
+ depth: number;
95
+ }
96
+ /**
97
+ * Ontology load result
98
+ */
99
+ export interface OntologyLoadResult {
100
+ /** Success flag */
101
+ success: boolean;
102
+ /** Error message if failed */
103
+ error?: string;
104
+ /** Validation warnings */
105
+ warnings: string[];
106
+ }
107
+ /**
108
+ * Abstraction statistics
109
+ */
110
+ export interface AbstractionStatistics {
111
+ /** Total abstractions performed */
112
+ totalAbstractions: number;
113
+ /** Ontologies loaded count */
114
+ ontologiesLoaded: number;
115
+ /** Average match confidence */
116
+ averageConfidence: number;
117
+ }
118
+ /**
119
+ * DomainAwareAbstractor interface
120
+ */
121
+ export interface DomainAwareAbstractor {
122
+ /**
123
+ * Load domain ontology
124
+ */
125
+ loadOntology(ontology: DomainOntology): OntologyLoadResult;
126
+ /**
127
+ * Get loaded ontology
128
+ */
129
+ getLoadedOntology(): DomainOntology | undefined;
130
+ /**
131
+ * Abstract pattern with domain context
132
+ */
133
+ abstractWithDomain(pattern: LearnedPattern): Promise<DomainAbstractionResult>;
134
+ /**
135
+ * Abstract multiple patterns
136
+ */
137
+ abstractBatch(patterns: LearnedPattern[]): Promise<DomainAbstractionResult[]>;
138
+ /**
139
+ * Find related domain concepts
140
+ */
141
+ findRelatedConcepts(term: string): DomainConcept[];
142
+ /**
143
+ * Get concept hierarchy
144
+ */
145
+ getConceptHierarchy(conceptId: string): ConceptHierarchy;
146
+ /**
147
+ * Get statistics
148
+ */
149
+ getStatistics(): AbstractionStatistics;
150
+ /**
151
+ * Reset statistics
152
+ */
153
+ resetStatistics(): void;
154
+ /**
155
+ * Serialize to JSON
156
+ */
157
+ toJSON(): string;
158
+ /**
159
+ * Deserialize from JSON
160
+ */
161
+ fromJSON(json: string): void;
162
+ }
163
+ /**
164
+ * Default DomainAwareAbstractor implementation
165
+ */
166
+ export declare class DefaultDomainAwareAbstractor implements DomainAwareAbstractor {
167
+ private config;
168
+ private ontology;
169
+ private statistics;
170
+ constructor(config?: Partial<DomainAwareAbstractorConfig>);
171
+ /**
172
+ * Load domain ontology
173
+ */
174
+ loadOntology(ontology: DomainOntology): OntologyLoadResult;
175
+ /**
176
+ * Get loaded ontology
177
+ */
178
+ getLoadedOntology(): DomainOntology | undefined;
179
+ /**
180
+ * Abstract pattern with domain context
181
+ */
182
+ abstractWithDomain(pattern: LearnedPattern): Promise<DomainAbstractionResult>;
183
+ /**
184
+ * Abstract multiple patterns
185
+ */
186
+ abstractBatch(patterns: LearnedPattern[]): Promise<DomainAbstractionResult[]>;
187
+ /**
188
+ * Match pattern to domain concepts
189
+ */
190
+ private matchPatternToConcepts;
191
+ /**
192
+ * Find related domain concepts
193
+ */
194
+ findRelatedConcepts(term: string): DomainConcept[];
195
+ /**
196
+ * Get concept hierarchy
197
+ */
198
+ getConceptHierarchy(conceptId: string): ConceptHierarchy;
199
+ /**
200
+ * Update statistics
201
+ */
202
+ private updateStatistics;
203
+ /**
204
+ * Get statistics
205
+ */
206
+ getStatistics(): AbstractionStatistics;
207
+ /**
208
+ * Reset statistics
209
+ */
210
+ resetStatistics(): void;
211
+ /**
212
+ * Serialize to JSON
213
+ */
214
+ toJSON(): string;
215
+ /**
216
+ * Deserialize from JSON
217
+ */
218
+ fromJSON(json: string): void;
219
+ }
220
+ /**
221
+ * Create a DomainAwareAbstractor instance
222
+ * @param config - Optional configuration
223
+ * @returns DomainAwareAbstractor instance
224
+ */
225
+ export declare function createDomainAwareAbstractor(config?: Partial<DomainAwareAbstractorConfig>): DomainAwareAbstractor;
226
+ //# sourceMappingURL=DomainAwareAbstractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainAwareAbstractor.d.ts","sourceRoot":"","sources":["../../src/domain/DomainAwareAbstractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * DomainAwareAbstractor - Domain-Aware Pattern Abstraction
3
+ * @module @nahisaho/musubix-library-learner
4
+ * @see TSK-LL-106
5
+ * @see DES-LL-106
6
+ * @see REQ-LL-106 Domain-aware pattern abstraction
7
+ */
8
+ // ============================================================================
9
+ // Default Implementation
10
+ // ============================================================================
11
+ /**
12
+ * Default DomainAwareAbstractor implementation
13
+ */
14
+ export class DefaultDomainAwareAbstractor {
15
+ config;
16
+ ontology;
17
+ statistics;
18
+ constructor(config) {
19
+ this.config = {
20
+ strictMode: config?.strictMode ?? false,
21
+ maxAbstractionDepth: config?.maxAbstractionDepth ?? 3,
22
+ minMatchConfidence: config?.minMatchConfidence ?? 0.5,
23
+ };
24
+ this.statistics = {
25
+ totalAbstractions: 0,
26
+ ontologiesLoaded: 0,
27
+ averageConfidence: 0,
28
+ };
29
+ }
30
+ /**
31
+ * Load domain ontology
32
+ */
33
+ loadOntology(ontology) {
34
+ const warnings = [];
35
+ // Validate ontology structure
36
+ if (!ontology.name) {
37
+ warnings.push('Ontology name is empty');
38
+ }
39
+ if (!ontology.concepts || ontology.concepts.length === 0) {
40
+ warnings.push('Ontology has no concepts');
41
+ }
42
+ // Store ontology
43
+ this.ontology = ontology;
44
+ this.statistics.ontologiesLoaded++;
45
+ return {
46
+ success: true,
47
+ warnings,
48
+ };
49
+ }
50
+ /**
51
+ * Get loaded ontology
52
+ */
53
+ getLoadedOntology() {
54
+ return this.ontology;
55
+ }
56
+ /**
57
+ * Abstract pattern with domain context
58
+ */
59
+ async abstractWithDomain(pattern) {
60
+ const domainConcepts = [];
61
+ const constraints = [];
62
+ const suggestions = [];
63
+ let confidence = 0;
64
+ if (this.ontology) {
65
+ // Find matching concepts based on pattern name
66
+ const matchedConcepts = this.matchPatternToConcepts(pattern);
67
+ domainConcepts.push(...matchedConcepts.map((c) => c.id));
68
+ // Find applicable constraints
69
+ for (const concept of matchedConcepts) {
70
+ const conceptConstraints = this.ontology.constraints.filter((c) => c.concept === concept.id);
71
+ constraints.push(...conceptConstraints);
72
+ }
73
+ // Calculate confidence
74
+ confidence = matchedConcepts.length > 0 ? 0.8 : 0;
75
+ // Generate suggestions
76
+ if (matchedConcepts.length > 0) {
77
+ suggestions.push(`Consider using domain terminology: ${matchedConcepts.map((c) => c.name).join(', ')}`);
78
+ }
79
+ }
80
+ // Update statistics
81
+ this.updateStatistics(confidence);
82
+ return {
83
+ pattern,
84
+ domainConcepts,
85
+ constraints,
86
+ confidence,
87
+ suggestions,
88
+ };
89
+ }
90
+ /**
91
+ * Abstract multiple patterns
92
+ */
93
+ async abstractBatch(patterns) {
94
+ return Promise.all(patterns.map((pattern) => this.abstractWithDomain(pattern)));
95
+ }
96
+ /**
97
+ * Match pattern to domain concepts
98
+ */
99
+ matchPatternToConcepts(pattern) {
100
+ if (!this.ontology)
101
+ return [];
102
+ const patternName = pattern.name.toLowerCase();
103
+ const matched = [];
104
+ for (const concept of this.ontology.concepts) {
105
+ // Check if pattern name contains concept name
106
+ const conceptName = concept.name.toLowerCase();
107
+ if (patternName.includes(conceptName)) {
108
+ matched.push(concept);
109
+ continue;
110
+ }
111
+ // Check if pattern name contains any property
112
+ for (const prop of concept.properties) {
113
+ if (patternName.includes(prop.toLowerCase())) {
114
+ matched.push(concept);
115
+ break;
116
+ }
117
+ }
118
+ }
119
+ return matched;
120
+ }
121
+ /**
122
+ * Find related domain concepts
123
+ */
124
+ findRelatedConcepts(term) {
125
+ if (!this.ontology)
126
+ return [];
127
+ const termLower = term.toLowerCase();
128
+ const related = [];
129
+ for (const concept of this.ontology.concepts) {
130
+ // Match by name
131
+ if (concept.name.toLowerCase().includes(termLower)) {
132
+ related.push(concept);
133
+ continue;
134
+ }
135
+ // Match by property
136
+ if (concept.properties.some((p) => p.toLowerCase().includes(termLower))) {
137
+ related.push(concept);
138
+ }
139
+ }
140
+ return related;
141
+ }
142
+ /**
143
+ * Get concept hierarchy
144
+ */
145
+ getConceptHierarchy(conceptId) {
146
+ const concept = this.ontology?.concepts.find((c) => c.id === conceptId);
147
+ if (!concept) {
148
+ return {
149
+ concept: {
150
+ id: conceptId,
151
+ name: 'Unknown',
152
+ description: '',
153
+ properties: [],
154
+ relations: [],
155
+ },
156
+ related: [],
157
+ depth: 0,
158
+ };
159
+ }
160
+ // Find related concepts through relations
161
+ const related = [];
162
+ for (const relation of concept.relations) {
163
+ const relatedConcept = this.ontology?.concepts.find((c) => c.id === relation.target);
164
+ if (relatedConcept) {
165
+ related.push(relatedConcept);
166
+ }
167
+ }
168
+ return {
169
+ concept,
170
+ related,
171
+ depth: 1,
172
+ };
173
+ }
174
+ /**
175
+ * Update statistics
176
+ */
177
+ updateStatistics(confidence) {
178
+ const prevTotal = this.statistics.totalAbstractions;
179
+ const prevAvg = this.statistics.averageConfidence;
180
+ this.statistics.totalAbstractions++;
181
+ this.statistics.averageConfidence =
182
+ (prevAvg * prevTotal + confidence) / (prevTotal + 1);
183
+ }
184
+ /**
185
+ * Get statistics
186
+ */
187
+ getStatistics() {
188
+ return { ...this.statistics };
189
+ }
190
+ /**
191
+ * Reset statistics
192
+ */
193
+ resetStatistics() {
194
+ this.statistics = {
195
+ totalAbstractions: 0,
196
+ ontologiesLoaded: this.statistics.ontologiesLoaded,
197
+ averageConfidence: 0,
198
+ };
199
+ }
200
+ /**
201
+ * Serialize to JSON
202
+ */
203
+ toJSON() {
204
+ return JSON.stringify({
205
+ config: this.config,
206
+ ontology: this.ontology,
207
+ statistics: this.statistics,
208
+ });
209
+ }
210
+ /**
211
+ * Deserialize from JSON
212
+ */
213
+ fromJSON(json) {
214
+ const data = JSON.parse(json);
215
+ if (data.config) {
216
+ this.config = { ...this.config, ...data.config };
217
+ }
218
+ if (data.ontology) {
219
+ this.ontology = data.ontology;
220
+ }
221
+ if (data.statistics) {
222
+ this.statistics = { ...this.statistics, ...data.statistics };
223
+ }
224
+ }
225
+ }
226
+ // ============================================================================
227
+ // Factory Function
228
+ // ============================================================================
229
+ /**
230
+ * Create a DomainAwareAbstractor instance
231
+ * @param config - Optional configuration
232
+ * @returns DomainAwareAbstractor instance
233
+ */
234
+ export function createDomainAwareAbstractor(config) {
235
+ return new DefaultDomainAwareAbstractor(config);
236
+ }
237
+ //# sourceMappingURL=DomainAwareAbstractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainAwareAbstractor.js","sourceRoot":"","sources":["../../src/domain/DomainAwareAbstractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * DomainAwareAbstractor Tests
3
+ * @module @nahisaho/musubix-library-learner
4
+ * @see TSK-LL-106
5
+ * @see DES-LL-106
6
+ * @see REQ-LL-106 Domain-aware pattern abstraction
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=DomainAwareAbstractor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainAwareAbstractor.test.d.ts","sourceRoot":"","sources":["../../../src/domain/__tests__/DomainAwareAbstractor.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}