agentic-qe 2.3.5 → 2.4.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 (170) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +1 -1
  3. package/dist/agents/BaseAgent.d.ts +56 -49
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +208 -604
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/agents/FlakyTestHunterAgent.d.ts +2 -2
  8. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  9. package/dist/agents/FlakyTestHunterAgent.js +8 -104
  10. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  11. package/dist/agents/TestExecutorAgent.d.ts +1 -1
  12. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  13. package/dist/agents/TestExecutorAgent.js +4 -46
  14. package/dist/agents/TestExecutorAgent.js.map +1 -1
  15. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  16. package/dist/agents/TestGeneratorAgent.js +15 -35
  17. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  18. package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
  19. package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
  20. package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
  21. package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
  22. package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
  23. package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
  24. package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
  25. package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
  26. package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
  27. package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
  28. package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
  29. package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
  30. package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
  31. package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
  32. package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
  33. package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
  34. package/dist/agents/adapters/index.d.ts +14 -0
  35. package/dist/agents/adapters/index.d.ts.map +1 -0
  36. package/dist/agents/adapters/index.js +25 -0
  37. package/dist/agents/adapters/index.js.map +1 -0
  38. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  39. package/dist/agents/lifecycle/AgentLifecycleManager.js +12 -6
  40. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  41. package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
  42. package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
  43. package/dist/core/cache/BinaryCacheBuilder.js +225 -0
  44. package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
  45. package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
  46. package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
  47. package/dist/core/cache/BinaryCacheManager.js +354 -0
  48. package/dist/core/cache/BinaryCacheManager.js.map +1 -0
  49. package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
  50. package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
  51. package/dist/core/cache/BinaryCacheReader.js +243 -0
  52. package/dist/core/cache/BinaryCacheReader.js.map +1 -0
  53. package/dist/core/cache/BinaryMetadataCache.d.ts +533 -0
  54. package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
  55. package/dist/core/cache/BinaryMetadataCache.js +142 -0
  56. package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
  57. package/dist/core/cache/CacheInvalidator.d.ts +103 -0
  58. package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
  59. package/dist/core/cache/CacheInvalidator.js +152 -0
  60. package/dist/core/cache/CacheInvalidator.js.map +1 -0
  61. package/dist/core/cache/CacheValidator.d.ts +69 -0
  62. package/dist/core/cache/CacheValidator.d.ts.map +1 -0
  63. package/dist/core/cache/CacheValidator.js +189 -0
  64. package/dist/core/cache/CacheValidator.js.map +1 -0
  65. package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
  66. package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
  67. package/dist/core/cache/MessagePackSerializer.js +274 -0
  68. package/dist/core/cache/MessagePackSerializer.js.map +1 -0
  69. package/dist/core/cache/index.d.ts +58 -0
  70. package/dist/core/cache/index.d.ts.map +1 -0
  71. package/dist/core/cache/index.js +102 -0
  72. package/dist/core/cache/index.js.map +1 -0
  73. package/dist/core/index.d.ts +2 -0
  74. package/dist/core/index.d.ts.map +1 -1
  75. package/dist/core/index.js +18 -0
  76. package/dist/core/index.js.map +1 -1
  77. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  78. package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
  79. package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
  80. package/dist/core/memory/PatternStoreFactory.js +68 -3
  81. package/dist/core/memory/PatternStoreFactory.js.map +1 -1
  82. package/dist/core/platform/FileOperations.d.ts +124 -0
  83. package/dist/core/platform/FileOperations.d.ts.map +1 -0
  84. package/dist/core/platform/FileOperations.js +371 -0
  85. package/dist/core/platform/FileOperations.js.map +1 -0
  86. package/dist/core/platform/PlatformDetector.d.ts +53 -0
  87. package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
  88. package/dist/core/platform/PlatformDetector.js +251 -0
  89. package/dist/core/platform/PlatformDetector.js.map +1 -0
  90. package/dist/core/platform/index.d.ts +12 -0
  91. package/dist/core/platform/index.d.ts.map +1 -0
  92. package/dist/core/platform/index.js +28 -0
  93. package/dist/core/platform/index.js.map +1 -0
  94. package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
  95. package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
  96. package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
  97. package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
  98. package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
  99. package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
  100. package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
  101. package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
  102. package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
  103. package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
  104. package/dist/core/strategies/AgentLearningStrategy.js +13 -0
  105. package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
  106. package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
  107. package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
  108. package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
  109. package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
  110. package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
  111. package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
  112. package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
  113. package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
  114. package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
  115. package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
  116. package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
  117. package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
  118. package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
  119. package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
  120. package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
  121. package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
  122. package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
  123. package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
  124. package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
  125. package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
  126. package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
  127. package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
  128. package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
  129. package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
  130. package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
  131. package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
  132. package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
  133. package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
  134. package/dist/core/strategies/index.d.ts +95 -0
  135. package/dist/core/strategies/index.d.ts.map +1 -0
  136. package/dist/core/strategies/index.js +65 -0
  137. package/dist/core/strategies/index.js.map +1 -0
  138. package/dist/learning/PerformanceOptimizer.js +2 -2
  139. package/dist/learning/PerformanceOptimizer.js.map +1 -1
  140. package/dist/mcp/handlers/base-handler.d.ts +28 -1
  141. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  142. package/dist/mcp/handlers/base-handler.js +41 -0
  143. package/dist/mcp/handlers/base-handler.js.map +1 -1
  144. package/dist/mcp/server-instructions.d.ts +1 -1
  145. package/dist/mcp/server-instructions.js +1 -1
  146. package/dist/output/AIActionSuggester.d.ts +98 -0
  147. package/dist/output/AIActionSuggester.d.ts.map +1 -0
  148. package/dist/output/AIActionSuggester.js +499 -0
  149. package/dist/output/AIActionSuggester.js.map +1 -0
  150. package/dist/output/CLIOutputHelper.d.ts +169 -0
  151. package/dist/output/CLIOutputHelper.d.ts.map +1 -0
  152. package/dist/output/CLIOutputHelper.js +320 -0
  153. package/dist/output/CLIOutputHelper.js.map +1 -0
  154. package/dist/output/OutputFormatter.d.ts +764 -0
  155. package/dist/output/OutputFormatter.d.ts.map +1 -0
  156. package/dist/output/OutputFormatter.js +125 -0
  157. package/dist/output/OutputFormatter.js.map +1 -0
  158. package/dist/output/OutputFormatterImpl.d.ts +131 -0
  159. package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
  160. package/dist/output/OutputFormatterImpl.js +556 -0
  161. package/dist/output/OutputFormatterImpl.js.map +1 -0
  162. package/dist/output/examples.d.ts +38 -0
  163. package/dist/output/examples.d.ts.map +1 -0
  164. package/dist/output/examples.js +503 -0
  165. package/dist/output/examples.js.map +1 -0
  166. package/dist/output/index.d.ts +16 -0
  167. package/dist/output/index.d.ts.map +1 -0
  168. package/dist/output/index.js +58 -0
  169. package/dist/output/index.js.map +1 -0
  170. package/package.json +4 -1
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Binary Cache Builder - Cache Generation from SQLite
3
+ *
4
+ * Builds binary cache from pattern data with:
5
+ * - Index pre-computation
6
+ * - Atomic file writes
7
+ * - Checksum generation
8
+ *
9
+ * Performance:
10
+ * - Build time: ~50-100ms for 1000 patterns
11
+ * - Atomic writes prevent corruption
12
+ * - Optimized index generation
13
+ *
14
+ * @module core/cache/BinaryCacheBuilder
15
+ * @version 1.0.0
16
+ */
17
+ import type { BinaryCacheBuilder, CacheBuildResult, CacheIndexData, PatternEntry, AgentConfigEntry } from './BinaryMetadataCache';
18
+ import type { TestPattern } from '../memory/IPatternStore';
19
+ /**
20
+ * Implementation of BinaryCacheBuilder interface
21
+ *
22
+ * Builds binary cache with:
23
+ * - Pattern serialization from SQLite data
24
+ * - Pre-computed indexes for fast lookup
25
+ * - Atomic file writes with temporary files
26
+ * - Checksum computation for validation
27
+ */
28
+ export declare class BinaryMetadataCacheBuilder implements BinaryCacheBuilder {
29
+ private serializer;
30
+ private currentVersion;
31
+ constructor();
32
+ /**
33
+ * Build cache from SQLite patterns
34
+ *
35
+ * Process:
36
+ * 1. Convert TestPatterns to PatternEntries
37
+ * 2. Build search indexes
38
+ * 3. Serialize to binary format
39
+ * 4. Compute checksum
40
+ * 5. Write atomically to disk
41
+ *
42
+ * @param patterns - Array of test patterns from SQLite
43
+ * @param agentConfigs - Array of agent configurations
44
+ * @param outputPath - Cache file output path
45
+ * @returns Build result with metrics
46
+ */
47
+ buildCache(patterns: TestPattern[], agentConfigs: AgentConfigEntry[], outputPath: string): Promise<CacheBuildResult>;
48
+ /**
49
+ * Build cache indexes
50
+ *
51
+ * Pre-computes indexes for:
52
+ * - Domain → pattern IDs
53
+ * - Type → pattern IDs
54
+ * - Framework → pattern IDs
55
+ *
56
+ * Enables O(1) filtering by domain/type/framework.
57
+ *
58
+ * @param patterns - Array of pattern entries
59
+ * @returns Index data structure
60
+ */
61
+ buildIndexes(patterns: PatternEntry[]): CacheIndexData;
62
+ /**
63
+ * Write cache to disk atomically
64
+ *
65
+ * Atomic write pattern:
66
+ * 1. Write to temporary file (*.tmp)
67
+ * 2. Verify write success
68
+ * 3. Rename to final path (atomic operation)
69
+ *
70
+ * Prevents partial writes and corruption.
71
+ *
72
+ * @param buffer - Binary cache buffer
73
+ * @param outputPath - Target file path
74
+ * @returns True if write successful
75
+ */
76
+ writeAtomic(buffer: Uint8Array, outputPath: string): Promise<boolean>;
77
+ }
78
+ /**
79
+ * Create a new BinaryCacheBuilder instance
80
+ *
81
+ * @returns BinaryCacheBuilder instance
82
+ */
83
+ export declare function createCacheBuilder(): BinaryMetadataCacheBuilder;
84
+ //# sourceMappingURL=BinaryCacheBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryCacheBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/cache/BinaryCacheBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAGjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D;;;;;;;;GAQG;AACH,qBAAa,0BAA2B,YAAW,kBAAkB;IACnE,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,cAAc,CAAkD;;IAMxE;;;;;;;;;;;;;;OAcG;IACG,UAAU,CACd,QAAQ,EAAE,WAAW,EAAE,EACvB,YAAY,EAAE,gBAAgB,EAAE,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,CAAC;IAmF5B;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,cAAc;IAgCtD;;;;;;;;;;;;;OAaG;IACG,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA2C5E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,0BAA0B,CAE/D"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ /**
3
+ * Binary Cache Builder - Cache Generation from SQLite
4
+ *
5
+ * Builds binary cache from pattern data with:
6
+ * - Index pre-computation
7
+ * - Atomic file writes
8
+ * - Checksum generation
9
+ *
10
+ * Performance:
11
+ * - Build time: ~50-100ms for 1000 patterns
12
+ * - Atomic writes prevent corruption
13
+ * - Optimized index generation
14
+ *
15
+ * @module core/cache/BinaryCacheBuilder
16
+ * @version 1.0.0
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.BinaryMetadataCacheBuilder = void 0;
20
+ exports.createCacheBuilder = createCacheBuilder;
21
+ const fs_1 = require("fs");
22
+ const path_1 = require("path");
23
+ const MessagePackSerializer_1 = require("./MessagePackSerializer");
24
+ const BinaryMetadataCache_1 = require("./BinaryMetadataCache");
25
+ /**
26
+ * Implementation of BinaryCacheBuilder interface
27
+ *
28
+ * Builds binary cache with:
29
+ * - Pattern serialization from SQLite data
30
+ * - Pre-computed indexes for fast lookup
31
+ * - Atomic file writes with temporary files
32
+ * - Checksum computation for validation
33
+ */
34
+ class BinaryMetadataCacheBuilder {
35
+ constructor() {
36
+ this.currentVersion = { major: 1, minor: 0, patch: 0 };
37
+ this.serializer = new MessagePackSerializer_1.MessagePackSerializer();
38
+ }
39
+ /**
40
+ * Build cache from SQLite patterns
41
+ *
42
+ * Process:
43
+ * 1. Convert TestPatterns to PatternEntries
44
+ * 2. Build search indexes
45
+ * 3. Serialize to binary format
46
+ * 4. Compute checksum
47
+ * 5. Write atomically to disk
48
+ *
49
+ * @param patterns - Array of test patterns from SQLite
50
+ * @param agentConfigs - Array of agent configurations
51
+ * @param outputPath - Cache file output path
52
+ * @returns Build result with metrics
53
+ */
54
+ async buildCache(patterns, agentConfigs, outputPath) {
55
+ const startTime = Date.now();
56
+ try {
57
+ // 1. Convert patterns to cache entries
58
+ const patternEntries = patterns.map(BinaryMetadataCache_1.testPatternToEntry);
59
+ // 2. Build indexes
60
+ const indexes = this.buildIndexes(patternEntries);
61
+ // 3. Create cache structure (without checksum)
62
+ const cacheWithoutChecksum = {
63
+ version: this.serializer.encodeVersion(this.currentVersion),
64
+ timestamp: Date.now(),
65
+ checksum: '', // Placeholder, will compute after serialization
66
+ patterns: patternEntries,
67
+ agentConfigs,
68
+ indexes,
69
+ };
70
+ // 4. Serialize to binary
71
+ const buffer = this.serializer.encode(cacheWithoutChecksum);
72
+ // 5. Compute checksum
73
+ const checksum = await this.serializer.computeChecksum(buffer);
74
+ // 6. Update cache with actual checksum
75
+ const cacheWithChecksum = {
76
+ ...cacheWithoutChecksum,
77
+ checksum,
78
+ };
79
+ // 7. Serialize again with correct checksum
80
+ const finalBuffer = this.serializer.encode(cacheWithChecksum);
81
+ // 8. Write atomically
82
+ const writeSuccess = await this.writeAtomic(finalBuffer, outputPath);
83
+ if (!writeSuccess) {
84
+ throw new Error('Atomic write failed');
85
+ }
86
+ const duration = Date.now() - startTime;
87
+ console.log('[BinaryCacheBuilder] Cache built successfully:', {
88
+ duration: `${duration}ms`,
89
+ patternCount: patterns.length,
90
+ agentConfigCount: agentConfigs.length,
91
+ cacheFileSize: finalBuffer.length,
92
+ checksum,
93
+ });
94
+ return {
95
+ success: true,
96
+ duration,
97
+ patternCount: patterns.length,
98
+ agentConfigCount: agentConfigs.length,
99
+ cacheFileSize: finalBuffer.length,
100
+ version: this.currentVersion,
101
+ checksum,
102
+ };
103
+ }
104
+ catch (error) {
105
+ const duration = Date.now() - startTime;
106
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
107
+ console.error('[BinaryCacheBuilder] Cache build failed:', {
108
+ error: errorMessage,
109
+ duration: `${duration}ms`,
110
+ });
111
+ return {
112
+ success: false,
113
+ duration,
114
+ patternCount: patterns.length,
115
+ agentConfigCount: agentConfigs.length,
116
+ cacheFileSize: 0,
117
+ version: this.currentVersion,
118
+ checksum: '',
119
+ error: errorMessage,
120
+ };
121
+ }
122
+ }
123
+ /**
124
+ * Build cache indexes
125
+ *
126
+ * Pre-computes indexes for:
127
+ * - Domain → pattern IDs
128
+ * - Type → pattern IDs
129
+ * - Framework → pattern IDs
130
+ *
131
+ * Enables O(1) filtering by domain/type/framework.
132
+ *
133
+ * @param patterns - Array of pattern entries
134
+ * @returns Index data structure
135
+ */
136
+ buildIndexes(patterns) {
137
+ const domainIndex = new Map();
138
+ const typeIndex = new Map();
139
+ const frameworkIndex = new Map();
140
+ for (const pattern of patterns) {
141
+ // Domain index
142
+ if (!domainIndex.has(pattern.domain)) {
143
+ domainIndex.set(pattern.domain, []);
144
+ }
145
+ domainIndex.get(pattern.domain).push(pattern.id);
146
+ // Type index
147
+ if (!typeIndex.has(pattern.type)) {
148
+ typeIndex.set(pattern.type, []);
149
+ }
150
+ typeIndex.get(pattern.type).push(pattern.id);
151
+ // Framework index
152
+ if (!frameworkIndex.has(pattern.framework)) {
153
+ frameworkIndex.set(pattern.framework, []);
154
+ }
155
+ frameworkIndex.get(pattern.framework).push(pattern.id);
156
+ }
157
+ return {
158
+ domainIndex,
159
+ typeIndex,
160
+ frameworkIndex,
161
+ };
162
+ }
163
+ /**
164
+ * Write cache to disk atomically
165
+ *
166
+ * Atomic write pattern:
167
+ * 1. Write to temporary file (*.tmp)
168
+ * 2. Verify write success
169
+ * 3. Rename to final path (atomic operation)
170
+ *
171
+ * Prevents partial writes and corruption.
172
+ *
173
+ * @param buffer - Binary cache buffer
174
+ * @param outputPath - Target file path
175
+ * @returns True if write successful
176
+ */
177
+ async writeAtomic(buffer, outputPath) {
178
+ const tempPath = `${outputPath}.tmp`;
179
+ try {
180
+ // 1. Ensure directory exists
181
+ const dir = (0, path_1.dirname)(outputPath);
182
+ await fs_1.promises.mkdir(dir, { recursive: true });
183
+ // 2. Write to temporary file
184
+ await fs_1.promises.writeFile(tempPath, buffer);
185
+ // 3. Verify write (read back and compare size)
186
+ const stats = await fs_1.promises.stat(tempPath);
187
+ if (stats.size !== buffer.length) {
188
+ throw new Error(`Write verification failed: expected ${buffer.length} bytes, got ${stats.size} bytes`);
189
+ }
190
+ // 4. Atomic rename
191
+ await fs_1.promises.rename(tempPath, outputPath);
192
+ // 5. Create backup of previous cache (if exists)
193
+ try {
194
+ await fs_1.promises.access(outputPath);
195
+ const backupPath = `${outputPath}.bak`;
196
+ await fs_1.promises.copyFile(outputPath, backupPath);
197
+ }
198
+ catch {
199
+ // No previous cache, skip backup
200
+ }
201
+ return true;
202
+ }
203
+ catch (error) {
204
+ console.error('[BinaryCacheBuilder] Atomic write failed:', error);
205
+ // Clean up temporary file
206
+ try {
207
+ await fs_1.promises.unlink(tempPath);
208
+ }
209
+ catch {
210
+ // Ignore cleanup errors
211
+ }
212
+ return false;
213
+ }
214
+ }
215
+ }
216
+ exports.BinaryMetadataCacheBuilder = BinaryMetadataCacheBuilder;
217
+ /**
218
+ * Create a new BinaryCacheBuilder instance
219
+ *
220
+ * @returns BinaryCacheBuilder instance
221
+ */
222
+ function createCacheBuilder() {
223
+ return new BinaryMetadataCacheBuilder();
224
+ }
225
+ //# sourceMappingURL=BinaryCacheBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryCacheBuilder.js","sourceRoot":"","sources":["../../../src/core/cache/BinaryCacheBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Binary Cache Manager - High-Level Cache Orchestration
3
+ *
4
+ * Orchestrates binary cache with graceful SQLite fallback.
5
+ *
6
+ * Features:
7
+ * - Automatic cache initialization
8
+ * - Transparent SQLite fallback on errors
9
+ * - TTL-based cache invalidation
10
+ * - Background cache rebuild
11
+ * - Performance metrics tracking
12
+ *
13
+ * Architecture:
14
+ * - Tier 1: Binary cache (target: <5ms)
15
+ * - Tier 2: SQLite fallback (baseline: 32ms)
16
+ *
17
+ * @module core/cache/BinaryCacheManager
18
+ * @version 1.0.0
19
+ */
20
+ import type { BinaryCacheConfig, CacheMetrics } from './BinaryMetadataCache';
21
+ import type { TestPattern, IPatternStore } from '../memory/IPatternStore';
22
+ /**
23
+ * Binary Cache Manager
24
+ *
25
+ * Provides high-level API for cache operations with automatic
26
+ * fallback to SQLite on errors.
27
+ */
28
+ export declare class BinaryCacheManager {
29
+ private reader;
30
+ private builder;
31
+ private invalidator;
32
+ private config;
33
+ private sqliteAdapter;
34
+ private metrics;
35
+ private isEnabled;
36
+ constructor(config: BinaryCacheConfig, sqliteAdapter: IPatternStore);
37
+ /**
38
+ * Initialize cache manager
39
+ *
40
+ * Loads binary cache or falls back to SQLite.
41
+ *
42
+ * @returns True if cache loaded successfully
43
+ */
44
+ initialize(): Promise<boolean>;
45
+ /**
46
+ * Load pattern by ID
47
+ *
48
+ * Attempts to load from cache, falls back to SQLite on error.
49
+ *
50
+ * @param id - Pattern unique ID
51
+ * @returns Test pattern or null
52
+ */
53
+ loadPattern(id: string): Promise<TestPattern | null>;
54
+ /**
55
+ * Load patterns by domain
56
+ *
57
+ * @param domain - Domain filter
58
+ * @returns Array of test patterns
59
+ */
60
+ loadPatternsByDomain(domain: string): Promise<TestPattern[]>;
61
+ /**
62
+ * Load patterns by type
63
+ *
64
+ * @param type - Type filter
65
+ * @returns Array of test patterns
66
+ */
67
+ loadPatternsByType(type: string): Promise<TestPattern[]>;
68
+ /**
69
+ * Load patterns by framework
70
+ *
71
+ * @param framework - Framework filter
72
+ * @returns Array of test patterns
73
+ */
74
+ loadPatternsByFramework(framework: string): Promise<TestPattern[]>;
75
+ /**
76
+ * Rebuild cache from SQLite
77
+ *
78
+ * Queries all patterns from SQLite and builds fresh cache.
79
+ */
80
+ rebuildCache(): Promise<void>;
81
+ /**
82
+ * Check if cache is valid
83
+ *
84
+ * @returns True if cache is valid and fresh
85
+ */
86
+ private isCacheValid;
87
+ /**
88
+ * Log cache fallback event
89
+ *
90
+ * @private
91
+ */
92
+ private logCacheFallback;
93
+ /**
94
+ * Record cache hit
95
+ *
96
+ * @private
97
+ */
98
+ private recordCacheHit;
99
+ /**
100
+ * Record cache miss
101
+ *
102
+ * @private
103
+ */
104
+ private recordCacheMiss;
105
+ /**
106
+ * Update cache hit rate
107
+ *
108
+ * @private
109
+ */
110
+ private updateCacheHitRate;
111
+ /**
112
+ * Update average cache load time
113
+ *
114
+ * @private
115
+ */
116
+ private updateAvgLoadTime;
117
+ /**
118
+ * Update average SQLite fallback time
119
+ *
120
+ * @private
121
+ */
122
+ private updateAvgFallbackTime;
123
+ /**
124
+ * Get cache metrics
125
+ *
126
+ * @returns Current cache metrics
127
+ */
128
+ getMetrics(): CacheMetrics;
129
+ /**
130
+ * Shutdown cache manager
131
+ */
132
+ shutdown(): Promise<void>;
133
+ }
134
+ /**
135
+ * Create a new BinaryCacheManager instance
136
+ *
137
+ * @param config - Cache configuration
138
+ * @param sqliteAdapter - SQLite pattern store adapter
139
+ * @returns BinaryCacheManager instance
140
+ */
141
+ export declare function createCacheManager(config: BinaryCacheConfig, sqliteAdapter: IPatternStore): BinaryCacheManager;
142
+ //# sourceMappingURL=BinaryCacheManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryCacheManager.d.ts","sourceRoot":"","sources":["../../../src/core/cache/BinaryCacheManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAM1E;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,SAAS,CAAU;gBAEf,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa;IAyBnE;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IA6CpC;;;;;;;OAOG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAuC1D;;;;;OAKG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBlE;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAe9D;;;;;OAKG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAexE;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCnC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAsBpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;;;OAIG;IACH,UAAU,IAAI,YAAY;IAI1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,aAAa,GAC3B,kBAAkB,CAEpB"}