@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,217 @@
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
+ import { describe, it, expect, beforeEach } from 'vitest';
9
+ import { createDomainAwareAbstractor, } from '../DomainAwareAbstractor.js';
10
+ describe('DomainAwareAbstractor', () => {
11
+ let abstractor;
12
+ // Helper to create mock patterns
13
+ const createPattern = (id, name) => ({
14
+ id,
15
+ name,
16
+ level: 1,
17
+ content: {
18
+ id,
19
+ ast: { type: 'Expression', value: name },
20
+ occurrenceCount: 5,
21
+ locations: [],
22
+ },
23
+ usageCount: 10,
24
+ confidence: 0.8,
25
+ createdAt: new Date(),
26
+ lastUsedAt: new Date(),
27
+ tags: [],
28
+ });
29
+ // Mock domain ontology
30
+ const mockOntology = {
31
+ name: 'E-Commerce Domain',
32
+ version: '1.0.0',
33
+ concepts: [
34
+ {
35
+ id: 'ORDER',
36
+ name: 'Order',
37
+ description: 'Customer order',
38
+ properties: ['orderId', 'customerId', 'items', 'total'],
39
+ relations: [
40
+ { type: 'hasMany', target: 'ORDER_ITEM' },
41
+ { type: 'belongsTo', target: 'CUSTOMER' },
42
+ ],
43
+ },
44
+ {
45
+ id: 'ORDER_ITEM',
46
+ name: 'OrderItem',
47
+ description: 'Item in an order',
48
+ properties: ['productId', 'quantity', 'price'],
49
+ relations: [{ type: 'belongsTo', target: 'ORDER' }],
50
+ },
51
+ {
52
+ id: 'CUSTOMER',
53
+ name: 'Customer',
54
+ description: 'Customer entity',
55
+ properties: ['customerId', 'name', 'email'],
56
+ relations: [{ type: 'hasMany', target: 'ORDER' }],
57
+ },
58
+ ],
59
+ constraints: [
60
+ { type: 'required', concept: 'ORDER', property: 'orderId' },
61
+ { type: 'positive', concept: 'ORDER_ITEM', property: 'quantity' },
62
+ ],
63
+ };
64
+ beforeEach(() => {
65
+ abstractor = createDomainAwareAbstractor();
66
+ });
67
+ describe('Factory Function', () => {
68
+ it('should create a DomainAwareAbstractor instance', () => {
69
+ const instance = createDomainAwareAbstractor();
70
+ expect(instance).toBeDefined();
71
+ expect(typeof instance.loadOntology).toBe('function');
72
+ });
73
+ it('should create with custom config', () => {
74
+ const instance = createDomainAwareAbstractor({
75
+ strictMode: true,
76
+ maxAbstractionDepth: 5,
77
+ });
78
+ expect(instance).toBeDefined();
79
+ });
80
+ });
81
+ describe('loadOntology', () => {
82
+ it('should load domain ontology', () => {
83
+ expect(() => abstractor.loadOntology(mockOntology)).not.toThrow();
84
+ });
85
+ it('should validate ontology structure', () => {
86
+ const invalidOntology = {
87
+ name: 'Invalid',
88
+ concepts: [], // Empty concepts
89
+ };
90
+ // Should not throw, but return validation result
91
+ const result = abstractor.loadOntology(invalidOntology);
92
+ expect(result.success).toBe(true); // Empty is valid
93
+ });
94
+ it('should replace existing ontology', () => {
95
+ abstractor.loadOntology(mockOntology);
96
+ const newOntology = {
97
+ name: 'New Domain',
98
+ version: '2.0.0',
99
+ concepts: [],
100
+ constraints: [],
101
+ };
102
+ abstractor.loadOntology(newOntology);
103
+ const loaded = abstractor.getLoadedOntology();
104
+ expect(loaded?.name).toBe('New Domain');
105
+ });
106
+ });
107
+ describe('abstractWithDomain', () => {
108
+ beforeEach(() => {
109
+ abstractor.loadOntology(mockOntology);
110
+ });
111
+ it('should abstract pattern with domain context', async () => {
112
+ const pattern = createPattern('PAT-001', 'CreateOrder');
113
+ const abstracted = await abstractor.abstractWithDomain(pattern);
114
+ expect(abstracted).toBeDefined();
115
+ expect(abstracted.domainConcepts).toBeDefined();
116
+ });
117
+ it('should identify related domain concepts', async () => {
118
+ const pattern = createPattern('PAT-001', 'UpdateOrderItem');
119
+ const abstracted = await abstractor.abstractWithDomain(pattern);
120
+ // Should identify ORDER_ITEM concept
121
+ expect(abstracted.domainConcepts).toContain('ORDER_ITEM');
122
+ });
123
+ it('should apply domain constraints', async () => {
124
+ const pattern = createPattern('PAT-001', 'ValidateOrderTotal');
125
+ const abstracted = await abstractor.abstractWithDomain(pattern);
126
+ expect(abstracted.constraints).toBeDefined();
127
+ });
128
+ it('should handle patterns without domain match', async () => {
129
+ const pattern = createPattern('PAT-001', 'CalculateTax');
130
+ const abstracted = await abstractor.abstractWithDomain(pattern);
131
+ // Should still return result, but with empty domain concepts
132
+ expect(abstracted).toBeDefined();
133
+ expect(abstracted.domainConcepts.length).toBe(0);
134
+ });
135
+ });
136
+ describe('findRelatedConcepts', () => {
137
+ beforeEach(() => {
138
+ abstractor.loadOntology(mockOntology);
139
+ });
140
+ it('should find concepts by name', () => {
141
+ const concepts = abstractor.findRelatedConcepts('Order');
142
+ expect(concepts.length).toBeGreaterThan(0);
143
+ expect(concepts.some((c) => c.id === 'ORDER')).toBe(true);
144
+ });
145
+ it('should find concepts by property', () => {
146
+ const concepts = abstractor.findRelatedConcepts('customerId');
147
+ expect(concepts.length).toBeGreaterThan(0);
148
+ });
149
+ it('should return empty for unknown terms', () => {
150
+ const concepts = abstractor.findRelatedConcepts('XyzUnknown');
151
+ expect(concepts).toEqual([]);
152
+ });
153
+ });
154
+ describe('getConceptHierarchy', () => {
155
+ beforeEach(() => {
156
+ abstractor.loadOntology(mockOntology);
157
+ });
158
+ it('should return concept hierarchy', () => {
159
+ const hierarchy = abstractor.getConceptHierarchy('ORDER');
160
+ expect(hierarchy).toBeDefined();
161
+ expect(hierarchy.concept.id).toBe('ORDER');
162
+ });
163
+ it('should include related concepts', () => {
164
+ const hierarchy = abstractor.getConceptHierarchy('ORDER');
165
+ expect(hierarchy.related.length).toBeGreaterThan(0);
166
+ });
167
+ });
168
+ describe('Batch Operations', () => {
169
+ beforeEach(() => {
170
+ abstractor.loadOntology(mockOntology);
171
+ });
172
+ it('should abstract multiple patterns', async () => {
173
+ const patterns = [
174
+ createPattern('PAT-001', 'CreateOrder'),
175
+ createPattern('PAT-002', 'UpdateCustomer'),
176
+ createPattern('PAT-003', 'DeleteOrderItem'),
177
+ ];
178
+ const results = await abstractor.abstractBatch(patterns);
179
+ expect(results).toHaveLength(3);
180
+ });
181
+ });
182
+ describe('Statistics', () => {
183
+ it('should track abstraction statistics', async () => {
184
+ abstractor.loadOntology(mockOntology);
185
+ const pattern = createPattern('PAT-001', 'CreateOrder');
186
+ await abstractor.abstractWithDomain(pattern);
187
+ const stats = abstractor.getStatistics();
188
+ expect(stats.totalAbstractions).toBeGreaterThanOrEqual(1);
189
+ expect(stats.ontologiesLoaded).toBe(1);
190
+ });
191
+ it('should reset statistics', () => {
192
+ abstractor.loadOntology(mockOntology);
193
+ abstractor.resetStatistics();
194
+ const stats = abstractor.getStatistics();
195
+ expect(stats.totalAbstractions).toBe(0);
196
+ });
197
+ });
198
+ describe('Serialization', () => {
199
+ it('should serialize to JSON', () => {
200
+ abstractor.loadOntology(mockOntology);
201
+ const json = abstractor.toJSON();
202
+ expect(typeof json).toBe('string');
203
+ const parsed = JSON.parse(json);
204
+ expect(parsed.ontology).toBeDefined();
205
+ });
206
+ it('should deserialize from JSON', () => {
207
+ const json = JSON.stringify({
208
+ ontology: mockOntology,
209
+ config: { strictMode: true },
210
+ });
211
+ expect(() => abstractor.fromJSON(json)).not.toThrow();
212
+ const loaded = abstractor.getLoadedOntology();
213
+ expect(loaded?.name).toBe('E-Commerce Domain');
214
+ });
215
+ });
216
+ });
217
+ //# sourceMappingURL=DomainAwareAbstractor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainAwareAbstractor.test.js","sourceRoot":"","sources":["../../../src/domain/__tests__/DomainAwareAbstractor.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Domain Module - Domain-Aware Abstraction
3
+ * @module @nahisaho/musubix-library-learner/domain
4
+ */
5
+ export { createDomainAwareAbstractor, DefaultDomainAwareAbstractor, } from './DomainAwareAbstractor.js';
6
+ export type { DomainAwareAbstractor, DomainAwareAbstractorConfig, DomainOntology, DomainConcept, ConceptRelation, DomainConstraint, DomainAbstractionResult, ConceptHierarchy, OntologyLoadResult, AbstractionStatistics, } from './DomainAwareAbstractor.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Domain Module - Domain-Aware Abstraction
3
+ * @module @nahisaho/musubix-library-learner/domain
4
+ */
5
+ export { createDomainAwareAbstractor, DefaultDomainAwareAbstractor, } from './DomainAwareAbstractor.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * HierarchyManager - Hierarchical Abstraction Manager
3
+ *
4
+ * DreamCoder-style hierarchical pattern abstraction for library learning.
5
+ * Manages multiple levels of abstraction from concrete to abstract patterns.
6
+ *
7
+ * @module @nahisaho/musubix-library-learner
8
+ * @see TSK-LL-101
9
+ * @see DES-LL-101
10
+ * @see REQ-LL-101
11
+ *
12
+ * 既存クラス関係: LibraryLearner.extractPatterns() から委譲される新規コンポーネント
13
+ * 依存: PatternMiner, Abstractor (既存)
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { createHierarchyManager } from './HierarchyManager.js';
18
+ *
19
+ * const manager = createHierarchyManager({ maxLevels: 4 });
20
+ * const result = await manager.extractHierarchy(corpus);
21
+ * console.log(`Extracted ${result.levels.size} levels`);
22
+ * ```
23
+ */
24
+ import type { CodeCorpus, PatternId, ASTNode, PatternOccurrence } from '../types.js';
25
+ import type { PatternMiner } from '../abstraction/PatternMiner.js';
26
+ import type { Abstractor } from '../abstraction/Abstractor.js';
27
+ /**
28
+ * Internal pattern representation for hierarchy extraction.
29
+ * Different from library's HierarchyPattern as this is used during extraction.
30
+ */
31
+ export interface HierarchyPattern {
32
+ /** Unique pattern identifier */
33
+ id: PatternId;
34
+ /** Abstraction level (1=concrete, 2=parameterized, 3=abstract, 4+=composite) */
35
+ level: number;
36
+ /** Number of occurrences in corpus */
37
+ occurrenceCount: number;
38
+ /** Confidence score (0-1) */
39
+ confidence: number;
40
+ /** Abstract syntax tree representation */
41
+ ast: ASTNode;
42
+ /** Source locations where pattern was found */
43
+ sourceLocations: PatternOccurrence[];
44
+ }
45
+ /**
46
+ * Abstraction level definition
47
+ */
48
+ export interface AbstractionLevel {
49
+ /** Unique level identifier (1-based) */
50
+ id: number;
51
+ /** Human-readable name */
52
+ name: string;
53
+ /** Description of this abstraction level */
54
+ description: string;
55
+ /** Minimum occurrences to be considered at this level */
56
+ minOccurrences?: number;
57
+ }
58
+ /**
59
+ * Record of a pattern promotion between levels
60
+ */
61
+ export interface PromotionRecord {
62
+ /** Pattern that was promoted */
63
+ patternId: PatternId;
64
+ /** Source level */
65
+ fromLevel: number;
66
+ /** Target level */
67
+ toLevel: number;
68
+ /** Timestamp of promotion */
69
+ timestamp: Date;
70
+ /** Confidence score at promotion */
71
+ confidence: number;
72
+ }
73
+ /**
74
+ * Metrics for hierarchy extraction
75
+ */
76
+ export interface HierarchyMetrics {
77
+ /** Time taken for extraction in milliseconds */
78
+ extractionTimeMs: number;
79
+ /** Number of patterns per level */
80
+ patternsPerLevel: number[];
81
+ /** Compression ratio achieved */
82
+ compressionRatio: number;
83
+ /** Total patterns before abstraction */
84
+ totalPatternsRaw: number;
85
+ /** Total patterns after abstraction */
86
+ totalPatternsAbstracted: number;
87
+ }
88
+ /**
89
+ * Result of hierarchy extraction
90
+ */
91
+ export interface HierarchyResult {
92
+ /** Patterns organized by level */
93
+ levels: Map<number, HierarchyPattern[]>;
94
+ /** Records of pattern promotions */
95
+ promotions: PromotionRecord[];
96
+ /** Extraction metrics */
97
+ metrics: HierarchyMetrics;
98
+ }
99
+ /**
100
+ * Configuration for HierarchyManager
101
+ */
102
+ export interface HierarchyManagerConfig {
103
+ /** Maximum number of abstraction levels */
104
+ maxLevels?: number;
105
+ /** Threshold for pattern promotion */
106
+ promotionThreshold?: number;
107
+ /** Minimum occurrences for promotion */
108
+ minOccurrences?: number;
109
+ /** External PatternMiner (optional, for DI) */
110
+ patternMiner?: PatternMiner;
111
+ /** External Abstractor (optional, for DI) */
112
+ abstractor?: Abstractor;
113
+ }
114
+ /**
115
+ * HierarchyManager interface
116
+ *
117
+ * Manages hierarchical pattern abstraction at multiple levels:
118
+ * - Level 1: ConcretePattern (token-level)
119
+ * - Level 2: ParameterizedTemplate (expression-level)
120
+ * - Level 3: AbstractConcept (function-level)
121
+ * - Level 4+: CompositeAbstraction (composite patterns)
122
+ */
123
+ export interface HierarchyManager {
124
+ /** Add a new abstraction level */
125
+ addLevel(level: AbstractionLevel): void;
126
+ /** Extract hierarchical abstractions from a code corpus */
127
+ extractHierarchy(corpus: CodeCorpus): Promise<HierarchyResult>;
128
+ /** Determine if a pattern should be promoted to a higher level */
129
+ shouldPromote(pattern: HierarchyPattern): boolean;
130
+ /** Get the current depth (number of levels) */
131
+ getDepth(): number;
132
+ /** Get all registered abstraction levels */
133
+ getLevels(): AbstractionLevel[];
134
+ }
135
+ /**
136
+ * Default HierarchyManager implementation
137
+ */
138
+ export declare class DefaultHierarchyManager implements HierarchyManager {
139
+ private levels;
140
+ private patterns;
141
+ private promotions;
142
+ private config;
143
+ constructor(config?: HierarchyManagerConfig);
144
+ /**
145
+ * Add a new abstraction level
146
+ * @throws Error if level ID already exists
147
+ */
148
+ addLevel(level: AbstractionLevel): void;
149
+ /**
150
+ * Extract hierarchical abstractions from a code corpus
151
+ *
152
+ * Process:
153
+ * 1. Mine concrete patterns (Level 1)
154
+ * 2. Abstract to parameterized templates (Level 2)
155
+ * 3. Extract function-level concepts (Level 3)
156
+ * 4. Compose higher-level patterns (Level 4+)
157
+ */
158
+ extractHierarchy(corpus: CodeCorpus): Promise<HierarchyResult>;
159
+ /**
160
+ * Determine if a pattern should be promoted to a higher level
161
+ */
162
+ shouldPromote(pattern: HierarchyPattern): boolean;
163
+ /**
164
+ * Get the current depth (number of levels)
165
+ */
166
+ getDepth(): number;
167
+ /**
168
+ * Get all registered abstraction levels
169
+ */
170
+ getLevels(): AbstractionLevel[];
171
+ /**
172
+ * Mine concrete patterns from corpus (Level 1)
173
+ */
174
+ private mineConcretePatterns;
175
+ /**
176
+ * Abstract concrete patterns to parameterized templates (Level 2)
177
+ */
178
+ private abstractToTemplates;
179
+ /**
180
+ * Extract function-level concepts (Level 3)
181
+ */
182
+ private extractAbstractConcepts;
183
+ /**
184
+ * Compose higher-level patterns (Level 4+)
185
+ */
186
+ private composeHigherLevel;
187
+ /**
188
+ * Convert pattern candidates to learned patterns
189
+ */
190
+ private candidatesToHierarchyPatterns;
191
+ /**
192
+ * Normalize a statement for comparison
193
+ */
194
+ private normalizeStatement;
195
+ /**
196
+ * Group similar patterns by normalized form
197
+ */
198
+ private groupSimilarPatterns;
199
+ /**
200
+ * Group by structural pattern
201
+ */
202
+ private groupByStructure;
203
+ /**
204
+ * Get a signature for pattern similarity grouping
205
+ */
206
+ private getPatternSignature;
207
+ /**
208
+ * Get a structural signature for concept extraction
209
+ */
210
+ private getStructuralSignature;
211
+ }
212
+ /**
213
+ * Create a new HierarchyManager instance
214
+ *
215
+ * @param config - Configuration options
216
+ * @returns A new HierarchyManager instance
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * const manager = createHierarchyManager({
221
+ * maxLevels: 4,
222
+ * promotionThreshold: 0.7,
223
+ * });
224
+ * ```
225
+ */
226
+ export declare function createHierarchyManager(config?: HierarchyManagerConfig): HierarchyManager;
227
+ //# sourceMappingURL=HierarchyManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HierarchyManager.d.ts","sourceRoot":"","sources":["../../src/hierarchy/HierarchyManager.ts"],"names":[],"mappings":"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"}