@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,138 @@
1
+ /**
2
+ * TypeDirectedPruner - Type-Directed Search Space Pruning
3
+ *
4
+ * Uses type information to prune the search space during synthesis.
5
+ * Achieves 70%+ search space reduction while maintaining 100% type safety.
6
+ *
7
+ * @module @nahisaho/musubix-library-learner
8
+ * @see TSK-LL-102
9
+ * @see DES-LL-102
10
+ * @see REQ-LL-102
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { createTypeDirectedPruner } from './TypeDirectedPruner.js';
15
+ *
16
+ * const pruner = createTypeDirectedPruner();
17
+ * const result = await pruner.prune(candidates, targetType);
18
+ * console.log(`Reduced by ${result.reductionRatio * 100}%`);
19
+ * ```
20
+ */
21
+ import type { ASTNode } from '../types.js';
22
+ /**
23
+ * Type signature representation
24
+ */
25
+ export interface TypeSignature {
26
+ /** Type kind (function, primitive, generic, etc.) */
27
+ kind: string;
28
+ /** Parameter types for functions */
29
+ params?: string[];
30
+ /** Return type for functions */
31
+ returns?: string;
32
+ /** Generic type parameters */
33
+ typeParams?: string[];
34
+ }
35
+ /**
36
+ * Candidate for pruning
37
+ */
38
+ export interface PruneCandidate {
39
+ /** Unique identifier */
40
+ id: string;
41
+ /** AST representation */
42
+ ast: ASTNode;
43
+ /** Type signature */
44
+ typeSignature: TypeSignature;
45
+ /** Initial score */
46
+ score: number;
47
+ /** Final score after type-directed scoring */
48
+ finalScore?: number;
49
+ }
50
+ /**
51
+ * Result of pruning operation
52
+ */
53
+ export interface PruneResult {
54
+ /** Remaining candidates after pruning */
55
+ candidates: PruneCandidate[];
56
+ /** Number of pruned candidates */
57
+ prunedCount: number;
58
+ /** Reduction ratio (0-1) */
59
+ reductionRatio: number;
60
+ }
61
+ /**
62
+ * Configuration for TypeDirectedPruner
63
+ */
64
+ export interface TypeDirectedPrunerConfig {
65
+ /** Maximum candidates to return */
66
+ maxCandidates?: number;
67
+ /** Weight of type score in final ranking */
68
+ typeWeight?: number;
69
+ /** Enable generic type unification */
70
+ enableGenerics?: boolean;
71
+ /** Allow partial type matches */
72
+ allowPartialMatch?: boolean;
73
+ }
74
+ /**
75
+ * TypeDirectedPruner interface
76
+ */
77
+ export interface TypeDirectedPruner {
78
+ /** Prune candidates based on target type */
79
+ prune(candidates: PruneCandidate[], targetType: TypeSignature): Promise<PruneResult>;
80
+ /** Check if two types are compatible */
81
+ isTypeCompatible(type1: TypeSignature, type2: TypeSignature): boolean;
82
+ /** Calculate type similarity score (0-1) */
83
+ calculateTypeScore(type1: TypeSignature, type2: TypeSignature): number;
84
+ }
85
+ /**
86
+ * Default TypeDirectedPruner implementation
87
+ */
88
+ export declare class DefaultTypeDirectedPruner implements TypeDirectedPruner {
89
+ private config;
90
+ constructor(config?: TypeDirectedPrunerConfig);
91
+ /**
92
+ * Prune candidates based on target type
93
+ *
94
+ * Algorithm:
95
+ * 1. Filter by type compatibility
96
+ * 2. Score remaining candidates
97
+ * 3. Sort by combined score
98
+ * 4. Return top candidates
99
+ */
100
+ prune(candidates: PruneCandidate[], targetType: TypeSignature): Promise<PruneResult>;
101
+ /**
102
+ * Check if two types are compatible
103
+ */
104
+ isTypeCompatible(type1: TypeSignature, type2: TypeSignature): boolean;
105
+ /**
106
+ * Calculate type similarity score (0-1)
107
+ */
108
+ calculateTypeScore(type1: TypeSignature, type2: TypeSignature): number;
109
+ /**
110
+ * Check if a type is generic
111
+ */
112
+ private isGenericType;
113
+ /**
114
+ * Check if two types are exactly equal
115
+ */
116
+ private areTypesEqual;
117
+ /**
118
+ * Check if two function types are compatible
119
+ */
120
+ private areFunctionTypesCompatible;
121
+ /**
122
+ * Check if two primitive types are compatible
123
+ */
124
+ private isPrimitiveTypeCompatible;
125
+ /**
126
+ * Calculate detailed function type score
127
+ */
128
+ private calculateFunctionTypeScore;
129
+ /**
130
+ * Calculate primitive type similarity score
131
+ */
132
+ private calculatePrimitiveTypeScore;
133
+ }
134
+ /**
135
+ * Create a new TypeDirectedPruner instance
136
+ */
137
+ export declare function createTypeDirectedPruner(config?: TypeDirectedPrunerConfig): TypeDirectedPruner;
138
+ //# sourceMappingURL=TypeDirectedPruner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeDirectedPruner.d.ts","sourceRoot":"","sources":["../../src/search/TypeDirectedPruner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAM3C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,GAAG,EAAE,OAAO,CAAC;IACb,qBAAqB;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAErF,wCAAwC;IACxC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IAEtE,4CAA4C;IAC5C,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;CACxE;AAMD;;GAEG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,MAAM,CAAqC;gBAEvC,MAAM,GAAE,wBAA6B;IASjD;;;;;;;;OAQG;IACG,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA6B1F;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO;IAuBrE;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM;IA+BtE;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6BlC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAUjC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6BlC;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAMpC;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAE,wBAA6B,GAAG,kBAAkB,CAElG"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * TypeDirectedPruner - Type-Directed Search Space Pruning
3
+ *
4
+ * Uses type information to prune the search space during synthesis.
5
+ * Achieves 70%+ search space reduction while maintaining 100% type safety.
6
+ *
7
+ * @module @nahisaho/musubix-library-learner
8
+ * @see TSK-LL-102
9
+ * @see DES-LL-102
10
+ * @see REQ-LL-102
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { createTypeDirectedPruner } from './TypeDirectedPruner.js';
15
+ *
16
+ * const pruner = createTypeDirectedPruner();
17
+ * const result = await pruner.prune(candidates, targetType);
18
+ * console.log(`Reduced by ${result.reductionRatio * 100}%`);
19
+ * ```
20
+ */
21
+ // =============================================================================
22
+ // Default Implementation
23
+ // =============================================================================
24
+ /**
25
+ * Default TypeDirectedPruner implementation
26
+ */
27
+ export class DefaultTypeDirectedPruner {
28
+ config;
29
+ constructor(config = {}) {
30
+ this.config = {
31
+ maxCandidates: config.maxCandidates ?? 100,
32
+ typeWeight: config.typeWeight ?? 0.6,
33
+ enableGenerics: config.enableGenerics ?? true,
34
+ allowPartialMatch: config.allowPartialMatch ?? true,
35
+ };
36
+ }
37
+ /**
38
+ * Prune candidates based on target type
39
+ *
40
+ * Algorithm:
41
+ * 1. Filter by type compatibility
42
+ * 2. Score remaining candidates
43
+ * 3. Sort by combined score
44
+ * 4. Return top candidates
45
+ */
46
+ async prune(candidates, targetType) {
47
+ const originalCount = candidates.length;
48
+ // Step 1: Filter by type compatibility
49
+ const compatible = candidates.filter((c) => this.isTypeCompatible(c.typeSignature, targetType));
50
+ // Step 2: Score and sort candidates
51
+ const scored = compatible.map((c) => {
52
+ const typeScore = this.calculateTypeScore(c.typeSignature, targetType);
53
+ const finalScore = this.config.typeWeight * typeScore + (1 - this.config.typeWeight) * c.score;
54
+ return { ...c, finalScore };
55
+ });
56
+ scored.sort((a, b) => (b.finalScore ?? 0) - (a.finalScore ?? 0));
57
+ // Step 3: Limit to maxCandidates
58
+ const result = scored.slice(0, this.config.maxCandidates);
59
+ // Calculate reduction ratio
60
+ const prunedCount = originalCount - result.length;
61
+ const reductionRatio = originalCount > 0 ? prunedCount / originalCount : 0;
62
+ return {
63
+ candidates: result,
64
+ prunedCount,
65
+ reductionRatio,
66
+ };
67
+ }
68
+ /**
69
+ * Check if two types are compatible
70
+ */
71
+ isTypeCompatible(type1, type2) {
72
+ // Any type is compatible with everything
73
+ if (type1.kind === 'any' || type2.kind === 'any') {
74
+ return true;
75
+ }
76
+ // Different kinds are incompatible (unless generics)
77
+ if (type1.kind !== type2.kind) {
78
+ // Check if type1 is a generic
79
+ if (this.config.enableGenerics && this.isGenericType(type1)) {
80
+ return true;
81
+ }
82
+ return false;
83
+ }
84
+ // For functions, check params and return type
85
+ if (type1.kind === 'function' && type2.kind === 'function') {
86
+ return this.areFunctionTypesCompatible(type1, type2);
87
+ }
88
+ return true;
89
+ }
90
+ /**
91
+ * Calculate type similarity score (0-1)
92
+ */
93
+ calculateTypeScore(type1, type2) {
94
+ // Exact match
95
+ if (this.areTypesEqual(type1, type2)) {
96
+ return 1.0;
97
+ }
98
+ // Any type gets partial score
99
+ if (type1.kind === 'any' || type2.kind === 'any') {
100
+ return 0.5;
101
+ }
102
+ // Different kinds = 0
103
+ if (type1.kind !== type2.kind) {
104
+ if (this.config.enableGenerics && this.isGenericType(type1)) {
105
+ return 0.7; // Generic can match
106
+ }
107
+ return 0;
108
+ }
109
+ // For functions, calculate detailed score
110
+ if (type1.kind === 'function' && type2.kind === 'function') {
111
+ return this.calculateFunctionTypeScore(type1, type2);
112
+ }
113
+ return 0.8; // Same kind, not exact match
114
+ }
115
+ // ===========================================================================
116
+ // Private Methods
117
+ // ===========================================================================
118
+ /**
119
+ * Check if a type is generic
120
+ */
121
+ isGenericType(type) {
122
+ if (type.typeParams && type.typeParams.length > 0) {
123
+ return true;
124
+ }
125
+ // Single uppercase letter is a type variable
126
+ if (type.params) {
127
+ return type.params.some((p) => /^[A-Z]$/.test(p));
128
+ }
129
+ if (type.returns) {
130
+ return /^[A-Z]$/.test(type.returns);
131
+ }
132
+ return false;
133
+ }
134
+ /**
135
+ * Check if two types are exactly equal
136
+ */
137
+ areTypesEqual(type1, type2) {
138
+ if (type1.kind !== type2.kind)
139
+ return false;
140
+ if (type1.kind === 'function') {
141
+ const params1 = type1.params ?? [];
142
+ const params2 = type2.params ?? [];
143
+ if (params1.length !== params2.length)
144
+ return false;
145
+ if (!params1.every((p, i) => p === params2[i]))
146
+ return false;
147
+ if (type1.returns !== type2.returns)
148
+ return false;
149
+ }
150
+ return true;
151
+ }
152
+ /**
153
+ * Check if two function types are compatible
154
+ */
155
+ areFunctionTypesCompatible(type1, type2) {
156
+ const params1 = type1.params ?? [];
157
+ const params2 = type2.params ?? [];
158
+ // Allow partial match if enabled
159
+ if (this.config.allowPartialMatch) {
160
+ // Check if params are compatible (allow any, generics)
161
+ const minParams = Math.min(params1.length, params2.length);
162
+ for (let i = 0; i < minParams; i++) {
163
+ if (!this.isPrimitiveTypeCompatible(params1[i], params2[i])) {
164
+ return false;
165
+ }
166
+ }
167
+ // Check return type
168
+ if (type1.returns && type2.returns) {
169
+ return this.isPrimitiveTypeCompatible(type1.returns, type2.returns);
170
+ }
171
+ return true;
172
+ }
173
+ // Strict match
174
+ if (params1.length !== params2.length)
175
+ return false;
176
+ if (!params1.every((p, i) => this.isPrimitiveTypeCompatible(p, params2[i])))
177
+ return false;
178
+ if (!this.isPrimitiveTypeCompatible(type1.returns ?? '', type2.returns ?? ''))
179
+ return false;
180
+ return true;
181
+ }
182
+ /**
183
+ * Check if two primitive types are compatible
184
+ */
185
+ isPrimitiveTypeCompatible(type1, type2) {
186
+ if (type1 === type2)
187
+ return true;
188
+ if (type1 === 'any' || type2 === 'any')
189
+ return true;
190
+ if (this.config.enableGenerics) {
191
+ // Generic type variable matches anything
192
+ if (/^[A-Z]$/.test(type1) || /^[A-Z]$/.test(type2))
193
+ return true;
194
+ }
195
+ return false;
196
+ }
197
+ /**
198
+ * Calculate detailed function type score
199
+ */
200
+ calculateFunctionTypeScore(type1, type2) {
201
+ const params1 = type1.params ?? [];
202
+ const params2 = type2.params ?? [];
203
+ let score = 0;
204
+ let factors = 0;
205
+ // Params match score
206
+ const minParams = Math.min(params1.length, params2.length);
207
+ const maxParams = Math.max(params1.length, params2.length);
208
+ if (maxParams > 0) {
209
+ let paramScore = 0;
210
+ for (let i = 0; i < minParams; i++) {
211
+ paramScore += this.calculatePrimitiveTypeScore(params1[i], params2[i]);
212
+ }
213
+ score += paramScore / maxParams;
214
+ factors++;
215
+ }
216
+ // Return type score
217
+ if (type1.returns && type2.returns) {
218
+ score += this.calculatePrimitiveTypeScore(type1.returns, type2.returns);
219
+ factors++;
220
+ }
221
+ return factors > 0 ? score / factors : 0;
222
+ }
223
+ /**
224
+ * Calculate primitive type similarity score
225
+ */
226
+ calculatePrimitiveTypeScore(type1, type2) {
227
+ if (type1 === type2)
228
+ return 1.0;
229
+ if (type1 === 'any' || type2 === 'any')
230
+ return 0.5;
231
+ if (/^[A-Z]$/.test(type1) || /^[A-Z]$/.test(type2))
232
+ return 0.7;
233
+ return 0;
234
+ }
235
+ }
236
+ // =============================================================================
237
+ // Factory Function
238
+ // =============================================================================
239
+ /**
240
+ * Create a new TypeDirectedPruner instance
241
+ */
242
+ export function createTypeDirectedPruner(config = {}) {
243
+ return new DefaultTypeDirectedPruner(config);
244
+ }
245
+ //# sourceMappingURL=TypeDirectedPruner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeDirectedPruner.js","sourceRoot":"","sources":["../../src/search/TypeDirectedPruner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Search Module - Type-Directed Search and Pruning
3
+ *
4
+ * @module @nahisaho/musubix-library-learner/search
5
+ * @see TSK-LL-102
6
+ */
7
+ export type { TypeDirectedPruner, TypeSignature, PruneCandidate, PruneResult, TypeDirectedPrunerConfig, } from './TypeDirectedPruner.js';
8
+ export { createTypeDirectedPruner, DefaultTypeDirectedPruner } from './TypeDirectedPruner.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Search Module - Type-Directed Search and Pruning
3
+ *
4
+ * @module @nahisaho/musubix-library-learner/search
5
+ * @see TSK-LL-102
6
+ */
7
+ export { createTypeDirectedPruner, DefaultTypeDirectedPruner } from './TypeDirectedPruner.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * IncrementalUpdater - Fast Incremental Pattern Updates
3
+ * @module @nahisaho/musubix-library-learner
4
+ * @see TSK-LL-107
5
+ * @see DES-LL-107
6
+ * @see REQ-PERF-002 (5秒/500LOC目標)
7
+ *
8
+ * ファイル変更時のインクリメンタル更新により、
9
+ * 500LOCの変更を5秒以内で処理することを目標とする
10
+ */
11
+ /**
12
+ * Types of file changes
13
+ */
14
+ export type ChangeType = 'added' | 'modified' | 'deleted';
15
+ /**
16
+ * File change descriptor
17
+ */
18
+ export interface FileChange {
19
+ /** Absolute file path */
20
+ filePath: string;
21
+ /** Type of change */
22
+ changeType: ChangeType;
23
+ /** Affected line numbers */
24
+ affectedLines: number[];
25
+ /** Change timestamp */
26
+ timestamp: number;
27
+ /** Optional: previous content hash */
28
+ previousHash?: string;
29
+ /** Optional: new content hash */
30
+ newHash?: string;
31
+ }
32
+ /**
33
+ * Result of processing a single change
34
+ */
35
+ export interface UpdateResult {
36
+ /** Was processing successful */
37
+ success: boolean;
38
+ /** Type of change processed */
39
+ changeType: ChangeType;
40
+ /** Processing time in ms */
41
+ processingTimeMs: number;
42
+ /** Patterns affected by this change */
43
+ affectedPatterns: string[];
44
+ /** Files that depend on the changed file */
45
+ dependentFiles: string[];
46
+ /** Was cache hit used */
47
+ cacheHit: boolean;
48
+ /** Error message if failed */
49
+ error?: string;
50
+ }
51
+ /**
52
+ * Updater configuration
53
+ */
54
+ export interface UpdaterConfig {
55
+ /** Maximum cache size (entries) */
56
+ maxCacheSize?: number;
57
+ /** Enable parallel processing */
58
+ enableParallelProcessing?: boolean;
59
+ /** Batch size for parallel processing */
60
+ batchSize?: number;
61
+ /** Debounce time for rapid changes (ms) */
62
+ debounceMs?: number;
63
+ }
64
+ /**
65
+ * Update statistics
66
+ */
67
+ export interface UpdateStatistics {
68
+ /** Total changes processed */
69
+ totalChangesProcessed: number;
70
+ /** Cache hits */
71
+ cacheHits: number;
72
+ /** Cache misses */
73
+ cacheMisses: number;
74
+ /** Current cache size */
75
+ cacheSize: number;
76
+ /** Average processing time in ms */
77
+ averageProcessingTimeMs: number;
78
+ /** Total processing time in ms */
79
+ totalProcessingTimeMs: number;
80
+ }
81
+ /**
82
+ * IncrementalUpdater interface
83
+ */
84
+ export interface IncrementalUpdater {
85
+ /**
86
+ * Process a single file change
87
+ */
88
+ processChange(change: FileChange): Promise<UpdateResult>;
89
+ /**
90
+ * Process multiple changes in batch
91
+ */
92
+ processBatch(changes: FileChange[]): Promise<UpdateResult[]>;
93
+ /**
94
+ * Get dependencies for a file
95
+ */
96
+ getDependencies(filePath: string): string[];
97
+ /**
98
+ * Get statistics
99
+ */
100
+ getStatistics(): UpdateStatistics;
101
+ /**
102
+ * Reset all state
103
+ */
104
+ reset(): void;
105
+ /**
106
+ * Clear only cache
107
+ */
108
+ clearCache(): void;
109
+ /**
110
+ * Serialize state
111
+ */
112
+ toJSON(): string;
113
+ /**
114
+ * Restore state
115
+ */
116
+ fromJSON(json: string): void;
117
+ }
118
+ /**
119
+ * Default implementation of IncrementalUpdater
120
+ */
121
+ declare class DefaultIncrementalUpdater implements IncrementalUpdater {
122
+ private config;
123
+ private cache;
124
+ private dependencies;
125
+ private statistics;
126
+ constructor(config?: UpdaterConfig);
127
+ processChange(change: FileChange): Promise<UpdateResult>;
128
+ processBatch(changes: FileChange[]): Promise<UpdateResult[]>;
129
+ getDependencies(filePath: string): string[];
130
+ getStatistics(): UpdateStatistics;
131
+ reset(): void;
132
+ clearCache(): void;
133
+ toJSON(): string;
134
+ fromJSON(json: string): void;
135
+ private createInitialStatistics;
136
+ private checkCacheValid;
137
+ private processChangeInternal;
138
+ private updateCache;
139
+ private findOldestCacheEntry;
140
+ private generateHash;
141
+ private trackDependency;
142
+ private getReverseDependencies;
143
+ private updateProcessingStats;
144
+ }
145
+ /**
146
+ * Create an IncrementalUpdater instance
147
+ * @param config - Optional configuration
148
+ * @returns IncrementalUpdater instance
149
+ */
150
+ export declare function createIncrementalUpdater(config?: UpdaterConfig): IncrementalUpdater;
151
+ export { DefaultIncrementalUpdater };
152
+ //# sourceMappingURL=IncrementalUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IncrementalUpdater.d.ts","sourceRoot":"","sources":["../../src/updater/IncrementalUpdater.ts"],"names":[],"mappings":"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"}