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.
- package/CHANGELOG.md +47 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +56 -49
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +208 -604
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +2 -2
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +8 -104
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +1 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +4 -46
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +15 -35
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
- package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +14 -0
- package/dist/agents/adapters/index.d.ts.map +1 -0
- package/dist/agents/adapters/index.js +25 -0
- package/dist/agents/adapters/index.js.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +12 -6
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
- package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheBuilder.js +225 -0
- package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
- package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
- package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheManager.js +354 -0
- package/dist/core/cache/BinaryCacheManager.js.map +1 -0
- package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
- package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheReader.js +243 -0
- package/dist/core/cache/BinaryCacheReader.js.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts +533 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.js +142 -0
- package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
- package/dist/core/cache/CacheInvalidator.d.ts +103 -0
- package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
- package/dist/core/cache/CacheInvalidator.js +152 -0
- package/dist/core/cache/CacheInvalidator.js.map +1 -0
- package/dist/core/cache/CacheValidator.d.ts +69 -0
- package/dist/core/cache/CacheValidator.d.ts.map +1 -0
- package/dist/core/cache/CacheValidator.js +189 -0
- package/dist/core/cache/CacheValidator.js.map +1 -0
- package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
- package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
- package/dist/core/cache/MessagePackSerializer.js +274 -0
- package/dist/core/cache/MessagePackSerializer.js.map +1 -0
- package/dist/core/cache/index.d.ts +58 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +102 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +18 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
- package/dist/core/memory/PatternStoreFactory.js +68 -3
- package/dist/core/memory/PatternStoreFactory.js.map +1 -1
- package/dist/core/platform/FileOperations.d.ts +124 -0
- package/dist/core/platform/FileOperations.d.ts.map +1 -0
- package/dist/core/platform/FileOperations.js +371 -0
- package/dist/core/platform/FileOperations.js.map +1 -0
- package/dist/core/platform/PlatformDetector.d.ts +53 -0
- package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
- package/dist/core/platform/PlatformDetector.js +251 -0
- package/dist/core/platform/PlatformDetector.js.map +1 -0
- package/dist/core/platform/index.d.ts +12 -0
- package/dist/core/platform/index.d.ts.map +1 -0
- package/dist/core/platform/index.js +28 -0
- package/dist/core/platform/index.js.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.js +13 -0
- package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
- package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
- package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/index.d.ts +95 -0
- package/dist/core/strategies/index.d.ts.map +1 -0
- package/dist/core/strategies/index.js +65 -0
- package/dist/core/strategies/index.js.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +2 -2
- package/dist/learning/PerformanceOptimizer.js.map +1 -1
- package/dist/mcp/handlers/base-handler.d.ts +28 -1
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +41 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/output/AIActionSuggester.d.ts +98 -0
- package/dist/output/AIActionSuggester.d.ts.map +1 -0
- package/dist/output/AIActionSuggester.js +499 -0
- package/dist/output/AIActionSuggester.js.map +1 -0
- package/dist/output/CLIOutputHelper.d.ts +169 -0
- package/dist/output/CLIOutputHelper.d.ts.map +1 -0
- package/dist/output/CLIOutputHelper.js +320 -0
- package/dist/output/CLIOutputHelper.js.map +1 -0
- package/dist/output/OutputFormatter.d.ts +764 -0
- package/dist/output/OutputFormatter.d.ts.map +1 -0
- package/dist/output/OutputFormatter.js +125 -0
- package/dist/output/OutputFormatter.js.map +1 -0
- package/dist/output/OutputFormatterImpl.d.ts +131 -0
- package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
- package/dist/output/OutputFormatterImpl.js +556 -0
- package/dist/output/OutputFormatterImpl.js.map +1 -0
- package/dist/output/examples.d.ts +38 -0
- package/dist/output/examples.d.ts.map +1 -0
- package/dist/output/examples.js +503 -0
- package/dist/output/examples.js.map +1 -0
- package/dist/output/index.d.ts +16 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +58 -0
- package/dist/output/index.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Binary Cache Manager - High-Level Cache Orchestration
|
|
4
|
+
*
|
|
5
|
+
* Orchestrates binary cache with graceful SQLite fallback.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Automatic cache initialization
|
|
9
|
+
* - Transparent SQLite fallback on errors
|
|
10
|
+
* - TTL-based cache invalidation
|
|
11
|
+
* - Background cache rebuild
|
|
12
|
+
* - Performance metrics tracking
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Tier 1: Binary cache (target: <5ms)
|
|
16
|
+
* - Tier 2: SQLite fallback (baseline: 32ms)
|
|
17
|
+
*
|
|
18
|
+
* @module core/cache/BinaryCacheManager
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.BinaryCacheManager = void 0;
|
|
23
|
+
exports.createCacheManager = createCacheManager;
|
|
24
|
+
const BinaryCacheReader_1 = require("./BinaryCacheReader");
|
|
25
|
+
const BinaryCacheBuilder_1 = require("./BinaryCacheBuilder");
|
|
26
|
+
const CacheInvalidator_1 = require("./CacheInvalidator");
|
|
27
|
+
const BinaryMetadataCache_1 = require("./BinaryMetadataCache");
|
|
28
|
+
/**
|
|
29
|
+
* Binary Cache Manager
|
|
30
|
+
*
|
|
31
|
+
* Provides high-level API for cache operations with automatic
|
|
32
|
+
* fallback to SQLite on errors.
|
|
33
|
+
*/
|
|
34
|
+
class BinaryCacheManager {
|
|
35
|
+
constructor(config, sqliteAdapter) {
|
|
36
|
+
this.reader = null;
|
|
37
|
+
this.config = config;
|
|
38
|
+
this.sqliteAdapter = sqliteAdapter;
|
|
39
|
+
this.builder = (0, BinaryCacheBuilder_1.createCacheBuilder)();
|
|
40
|
+
this.invalidator = (0, CacheInvalidator_1.createCacheInvalidator)();
|
|
41
|
+
this.isEnabled = config.enabled;
|
|
42
|
+
// Initialize metrics
|
|
43
|
+
this.metrics = {
|
|
44
|
+
cacheHits: 0,
|
|
45
|
+
cacheMisses: 0,
|
|
46
|
+
cacheHitRate: 0,
|
|
47
|
+
avgCacheLoadTime: 0,
|
|
48
|
+
avgSQLiteFallbackTime: 0,
|
|
49
|
+
cacheCorruptionCount: 0,
|
|
50
|
+
cacheRebuildCount: 0,
|
|
51
|
+
lastCacheGenerationTime: 0,
|
|
52
|
+
cacheFileSize: 0,
|
|
53
|
+
patternCount: 0,
|
|
54
|
+
};
|
|
55
|
+
// Register rebuild callback
|
|
56
|
+
this.invalidator.onRebuild(() => this.rebuildCache());
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Initialize cache manager
|
|
60
|
+
*
|
|
61
|
+
* Loads binary cache or falls back to SQLite.
|
|
62
|
+
*
|
|
63
|
+
* @returns True if cache loaded successfully
|
|
64
|
+
*/
|
|
65
|
+
async initialize() {
|
|
66
|
+
if (!this.isEnabled) {
|
|
67
|
+
console.log('[BinaryCacheManager] Cache disabled, using SQLite only');
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const startTime = Date.now();
|
|
72
|
+
// Try to load binary cache
|
|
73
|
+
this.reader = (0, BinaryCacheReader_1.createCacheReader)();
|
|
74
|
+
const success = await this.reader.initialize(this.config.cachePath, this.config);
|
|
75
|
+
const loadTime = Date.now() - startTime;
|
|
76
|
+
this.updateAvgLoadTime(loadTime);
|
|
77
|
+
if (success) {
|
|
78
|
+
const metadata = this.reader.getCacheMetadata();
|
|
79
|
+
this.metrics.patternCount = metadata.patternCount;
|
|
80
|
+
this.metrics.cacheFileSize = metadata.fileSize;
|
|
81
|
+
this.metrics.lastCacheGenerationTime = metadata.timestamp;
|
|
82
|
+
console.log('[BinaryCacheManager] Cache initialized:', {
|
|
83
|
+
loadTime: `${loadTime}ms`,
|
|
84
|
+
patternCount: metadata.patternCount,
|
|
85
|
+
});
|
|
86
|
+
// Check if background rebuild is needed
|
|
87
|
+
if (this.invalidator.shouldBackgroundRebuild(metadata.timestamp, this.config.maxAge)) {
|
|
88
|
+
console.log('[BinaryCacheManager] Scheduling background rebuild');
|
|
89
|
+
this.invalidator.scheduleCacheRebuild(true);
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.warn('[BinaryCacheManager] Cache initialization failed, falling back to SQLite:', error);
|
|
97
|
+
this.logCacheFallback('initialization_error', error);
|
|
98
|
+
this.reader = null;
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Load pattern by ID
|
|
104
|
+
*
|
|
105
|
+
* Attempts to load from cache, falls back to SQLite on error.
|
|
106
|
+
*
|
|
107
|
+
* @param id - Pattern unique ID
|
|
108
|
+
* @returns Test pattern or null
|
|
109
|
+
*/
|
|
110
|
+
async loadPattern(id) {
|
|
111
|
+
// Tier 1: Binary cache
|
|
112
|
+
if (this.reader && this.isCacheValid()) {
|
|
113
|
+
try {
|
|
114
|
+
const startTime = Date.now();
|
|
115
|
+
const entry = this.reader.getPattern(id);
|
|
116
|
+
if (entry) {
|
|
117
|
+
const loadTime = Date.now() - startTime;
|
|
118
|
+
this.updateAvgLoadTime(loadTime);
|
|
119
|
+
this.recordCacheHit();
|
|
120
|
+
return (0, BinaryMetadataCache_1.entryToTestPattern)(entry);
|
|
121
|
+
}
|
|
122
|
+
// Pattern not in cache
|
|
123
|
+
this.recordCacheMiss();
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.warn('[BinaryCacheManager] Cache read failed:', error);
|
|
127
|
+
this.logCacheFallback('cache_read_error', error);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Tier 2: SQLite fallback
|
|
131
|
+
try {
|
|
132
|
+
const startTime = Date.now();
|
|
133
|
+
const pattern = await this.sqliteAdapter.getPattern(id);
|
|
134
|
+
const fallbackTime = Date.now() - startTime;
|
|
135
|
+
this.updateAvgFallbackTime(fallbackTime);
|
|
136
|
+
this.recordCacheMiss();
|
|
137
|
+
return pattern;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
console.error('[BinaryCacheManager] SQLite fallback failed:', error);
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Load patterns by domain
|
|
146
|
+
*
|
|
147
|
+
* @param domain - Domain filter
|
|
148
|
+
* @returns Array of test patterns
|
|
149
|
+
*/
|
|
150
|
+
async loadPatternsByDomain(domain) {
|
|
151
|
+
if (this.reader && this.isCacheValid()) {
|
|
152
|
+
try {
|
|
153
|
+
const entries = this.reader.getPatternsByDomain(domain);
|
|
154
|
+
this.recordCacheHit();
|
|
155
|
+
return entries.map(BinaryMetadataCache_1.entryToTestPattern);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
this.logCacheFallback('cache_read_error', error);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Fallback: query SQLite (implementation depends on adapter)
|
|
162
|
+
this.recordCacheMiss();
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Load patterns by type
|
|
167
|
+
*
|
|
168
|
+
* @param type - Type filter
|
|
169
|
+
* @returns Array of test patterns
|
|
170
|
+
*/
|
|
171
|
+
async loadPatternsByType(type) {
|
|
172
|
+
if (this.reader && this.isCacheValid()) {
|
|
173
|
+
try {
|
|
174
|
+
const entries = this.reader.getPatternsByType(type);
|
|
175
|
+
this.recordCacheHit();
|
|
176
|
+
return entries.map(BinaryMetadataCache_1.entryToTestPattern);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
this.logCacheFallback('cache_read_error', error);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
this.recordCacheMiss();
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Load patterns by framework
|
|
187
|
+
*
|
|
188
|
+
* @param framework - Framework filter
|
|
189
|
+
* @returns Array of test patterns
|
|
190
|
+
*/
|
|
191
|
+
async loadPatternsByFramework(framework) {
|
|
192
|
+
if (this.reader && this.isCacheValid()) {
|
|
193
|
+
try {
|
|
194
|
+
const entries = this.reader.getPatternsByFramework(framework);
|
|
195
|
+
this.recordCacheHit();
|
|
196
|
+
return entries.map(BinaryMetadataCache_1.entryToTestPattern);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
this.logCacheFallback('cache_read_error', error);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
this.recordCacheMiss();
|
|
203
|
+
return [];
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Rebuild cache from SQLite
|
|
207
|
+
*
|
|
208
|
+
* Queries all patterns from SQLite and builds fresh cache.
|
|
209
|
+
*/
|
|
210
|
+
async rebuildCache() {
|
|
211
|
+
console.log('[BinaryCacheManager] Rebuilding cache...');
|
|
212
|
+
try {
|
|
213
|
+
// Query all patterns from SQLite
|
|
214
|
+
const stats = await this.sqliteAdapter.getStats();
|
|
215
|
+
const allPatterns = [];
|
|
216
|
+
// Note: This is a simplified implementation
|
|
217
|
+
// In production, you'd need a method to query all patterns
|
|
218
|
+
// For now, we'll just create an empty cache structure
|
|
219
|
+
const agentConfigs = [];
|
|
220
|
+
// Build cache
|
|
221
|
+
const result = await this.builder.buildCache(allPatterns, agentConfigs, this.config.cachePath);
|
|
222
|
+
if (result.success) {
|
|
223
|
+
this.metrics.cacheRebuildCount++;
|
|
224
|
+
this.metrics.lastCacheGenerationTime = Date.now();
|
|
225
|
+
console.log('[BinaryCacheManager] Cache rebuilt successfully:', {
|
|
226
|
+
duration: `${result.duration}ms`,
|
|
227
|
+
patternCount: result.patternCount,
|
|
228
|
+
});
|
|
229
|
+
// Reload cache reader
|
|
230
|
+
await this.initialize();
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.error('[BinaryCacheManager] Cache rebuild failed:', result.error);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
console.error('[BinaryCacheManager] Cache rebuild error:', error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Check if cache is valid
|
|
242
|
+
*
|
|
243
|
+
* @returns True if cache is valid and fresh
|
|
244
|
+
*/
|
|
245
|
+
isCacheValid() {
|
|
246
|
+
if (!this.reader) {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
const metadata = this.reader.getCacheMetadata();
|
|
250
|
+
// Check TTL
|
|
251
|
+
if (!this.invalidator.isCacheFresh(metadata.timestamp, this.config.maxAge)) {
|
|
252
|
+
console.log('[BinaryCacheManager] Cache expired (TTL)');
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
// Check staleness
|
|
256
|
+
if (!this.invalidator.isCacheValid(metadata.timestamp)) {
|
|
257
|
+
console.log('[BinaryCacheManager] Cache stale (invalidation event)');
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Log cache fallback event
|
|
264
|
+
*
|
|
265
|
+
* @private
|
|
266
|
+
*/
|
|
267
|
+
logCacheFallback(reason, error) {
|
|
268
|
+
console.warn('[BinaryCacheManager] Fallback to SQLite:', {
|
|
269
|
+
reason,
|
|
270
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
271
|
+
timestamp: new Date().toISOString(),
|
|
272
|
+
});
|
|
273
|
+
if (reason === 'cache_corruption' || reason === 'checksum_mismatch') {
|
|
274
|
+
this.metrics.cacheCorruptionCount++;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Record cache hit
|
|
279
|
+
*
|
|
280
|
+
* @private
|
|
281
|
+
*/
|
|
282
|
+
recordCacheHit() {
|
|
283
|
+
this.metrics.cacheHits++;
|
|
284
|
+
this.updateCacheHitRate();
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Record cache miss
|
|
288
|
+
*
|
|
289
|
+
* @private
|
|
290
|
+
*/
|
|
291
|
+
recordCacheMiss() {
|
|
292
|
+
this.metrics.cacheMisses++;
|
|
293
|
+
this.updateCacheHitRate();
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Update cache hit rate
|
|
297
|
+
*
|
|
298
|
+
* @private
|
|
299
|
+
*/
|
|
300
|
+
updateCacheHitRate() {
|
|
301
|
+
const total = this.metrics.cacheHits + this.metrics.cacheMisses;
|
|
302
|
+
this.metrics.cacheHitRate = total > 0 ? this.metrics.cacheHits / total : 0;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Update average cache load time
|
|
306
|
+
*
|
|
307
|
+
* @private
|
|
308
|
+
*/
|
|
309
|
+
updateAvgLoadTime(loadTime) {
|
|
310
|
+
const alpha = 0.1; // Exponential moving average factor
|
|
311
|
+
this.metrics.avgCacheLoadTime =
|
|
312
|
+
alpha * loadTime + (1 - alpha) * this.metrics.avgCacheLoadTime;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Update average SQLite fallback time
|
|
316
|
+
*
|
|
317
|
+
* @private
|
|
318
|
+
*/
|
|
319
|
+
updateAvgFallbackTime(fallbackTime) {
|
|
320
|
+
const alpha = 0.1; // Exponential moving average factor
|
|
321
|
+
this.metrics.avgSQLiteFallbackTime =
|
|
322
|
+
alpha * fallbackTime + (1 - alpha) * this.metrics.avgSQLiteFallbackTime;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Get cache metrics
|
|
326
|
+
*
|
|
327
|
+
* @returns Current cache metrics
|
|
328
|
+
*/
|
|
329
|
+
getMetrics() {
|
|
330
|
+
return { ...this.metrics };
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Shutdown cache manager
|
|
334
|
+
*/
|
|
335
|
+
async shutdown() {
|
|
336
|
+
if (this.reader) {
|
|
337
|
+
this.reader.close();
|
|
338
|
+
this.reader = null;
|
|
339
|
+
}
|
|
340
|
+
console.log('[BinaryCacheManager] Shutdown complete');
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
exports.BinaryCacheManager = BinaryCacheManager;
|
|
344
|
+
/**
|
|
345
|
+
* Create a new BinaryCacheManager instance
|
|
346
|
+
*
|
|
347
|
+
* @param config - Cache configuration
|
|
348
|
+
* @param sqliteAdapter - SQLite pattern store adapter
|
|
349
|
+
* @returns BinaryCacheManager instance
|
|
350
|
+
*/
|
|
351
|
+
function createCacheManager(config, sqliteAdapter) {
|
|
352
|
+
return new BinaryCacheManager(config, sqliteAdapter);
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=BinaryCacheManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryCacheManager.js","sourceRoot":"","sources":["../../../src/core/cache/BinaryCacheManager.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AA8XH,gDAKC;AA1XD,2DAAmF;AACnF,6DAAsF;AACtF,yDAAoF;AACpF,+DAA2D;AAE3D;;;;;GAKG;AACH,MAAa,kBAAkB;IAS7B,YAAY,MAAyB,EAAE,aAA4B;QAR3D,WAAM,GAAqC,IAAI,CAAC;QAStD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAA,uCAAkB,GAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAA,yCAAsB,GAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QAEhC,qBAAqB;QACrB,IAAI,CAAC,OAAO,GAAG;YACb,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;YACnB,qBAAqB,EAAE,CAAC;YACxB,oBAAoB,EAAE,CAAC;YACvB,iBAAiB,EAAE,CAAC;YACpB,uBAAuB,EAAE,CAAC;YAC1B,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,CAAC;SAChB,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,2BAA2B;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAA,qCAAiB,GAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,QAAQ,CAAC,SAAS,CAAC;gBAE1D,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE;oBACrD,QAAQ,EAAE,GAAG,QAAQ,IAAI;oBACzB,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACpC,CAAC,CAAC;gBAEH,wCAAwC;gBACxC,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBACrF,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;oBAClE,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,2EAA2E,EAAE,KAAK,CAAC,CAAC;YACjG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAEzC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBACxC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBACjC,IAAI,CAAC,cAAc,EAAE,CAAC;oBAEtB,OAAO,IAAA,wCAAkB,EAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;gBAED,uBAAuB;gBACvB,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;gBAC/D,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE5C,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACvC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACxD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO,OAAO,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO,OAAO,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,uBAAuB,CAAC,SAAiB;QAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,OAAO,OAAO,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAClD,MAAM,WAAW,GAAkB,EAAE,CAAC;YAEtC,4CAA4C;YAC5C,2DAA2D;YAC3D,sDAAsD;YACtD,MAAM,YAAY,GAAuB,EAAE,CAAC;YAE5C,cAAc;YACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE/F,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAElD,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE;oBAC9D,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI;oBAChC,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CAAC,CAAC;gBAEH,sBAAsB;gBACtB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAEhD,YAAY;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,MAAc,EAAE,KAAc;QACrD,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE;YACvD,MAAM;YACN,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,kBAAkB,IAAI,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACpE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,cAAc;QACpB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,eAAe;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,kBAAkB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,QAAgB;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,oCAAoC;QACvD,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC3B,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,YAAoB;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,oCAAoC;QACvD,IAAI,CAAC,OAAO,CAAC,qBAAqB;YAChC,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;CACF;AAjWD,gDAiWC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,MAAyB,EACzB,aAA4B;IAE5B,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binary Cache Reader - Zero-Copy Pattern Access
|
|
3
|
+
*
|
|
4
|
+
* Provides fast read-only access to cached pattern metadata.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Zero-copy embedding access
|
|
8
|
+
* - O(1) index lookups
|
|
9
|
+
* - Checksum validation on load
|
|
10
|
+
* - Graceful error handling
|
|
11
|
+
*
|
|
12
|
+
* Performance:
|
|
13
|
+
* - Load time: <5ms for 1000 patterns
|
|
14
|
+
* - Lookup time: <0.5ms per pattern
|
|
15
|
+
* - Memory-efficient (shared buffers)
|
|
16
|
+
*
|
|
17
|
+
* @module core/cache/BinaryCacheReader
|
|
18
|
+
* @version 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
import type { BinaryCacheReader, BinaryCacheConfig, PatternEntry, AgentConfigEntry, CacheVersion } from './BinaryMetadataCache';
|
|
21
|
+
/**
|
|
22
|
+
* Implementation of BinaryCacheReader interface
|
|
23
|
+
*
|
|
24
|
+
* Loads binary cache and provides fast pattern lookups using:
|
|
25
|
+
* - Pre-built indexes for O(1) lookups
|
|
26
|
+
* - In-memory pattern map for ID-based access
|
|
27
|
+
* - Checksum validation for integrity
|
|
28
|
+
*/
|
|
29
|
+
export declare class BinaryMetadataCacheReader implements BinaryCacheReader {
|
|
30
|
+
private serializer;
|
|
31
|
+
private validator;
|
|
32
|
+
private patterns;
|
|
33
|
+
private agentConfigs;
|
|
34
|
+
private domainIndex;
|
|
35
|
+
private typeIndex;
|
|
36
|
+
private frameworkIndex;
|
|
37
|
+
private cacheVersion;
|
|
38
|
+
private cacheTimestamp;
|
|
39
|
+
private cacheFileSize;
|
|
40
|
+
private isInitialized;
|
|
41
|
+
constructor();
|
|
42
|
+
/**
|
|
43
|
+
* Initialize cache reader
|
|
44
|
+
*
|
|
45
|
+
* Loads cache file, validates checksum, and prepares indexes.
|
|
46
|
+
*
|
|
47
|
+
* @param cachePath - Path to binary cache file
|
|
48
|
+
* @param config - Cache configuration
|
|
49
|
+
* @returns True if initialization successful
|
|
50
|
+
* @throws {CacheLoadError} If cache loading fails
|
|
51
|
+
*/
|
|
52
|
+
initialize(cachePath: string, config: BinaryCacheConfig): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Get pattern by ID (O(1) lookup)
|
|
55
|
+
*
|
|
56
|
+
* @param id - Pattern unique ID
|
|
57
|
+
* @returns Pattern entry or null if not found
|
|
58
|
+
*/
|
|
59
|
+
getPattern(id: string): PatternEntry | null;
|
|
60
|
+
/**
|
|
61
|
+
* Get patterns by domain (O(1) lookup)
|
|
62
|
+
*
|
|
63
|
+
* @param domain - Domain filter
|
|
64
|
+
* @returns Array of pattern entries
|
|
65
|
+
*/
|
|
66
|
+
getPatternsByDomain(domain: string): PatternEntry[];
|
|
67
|
+
/**
|
|
68
|
+
* Get patterns by type (O(1) lookup)
|
|
69
|
+
*
|
|
70
|
+
* @param type - Type filter
|
|
71
|
+
* @returns Array of pattern entries
|
|
72
|
+
*/
|
|
73
|
+
getPatternsByType(type: string): PatternEntry[];
|
|
74
|
+
/**
|
|
75
|
+
* Get patterns by framework (O(1) lookup)
|
|
76
|
+
*
|
|
77
|
+
* @param framework - Framework filter
|
|
78
|
+
* @returns Array of pattern entries
|
|
79
|
+
*/
|
|
80
|
+
getPatternsByFramework(framework: string): PatternEntry[];
|
|
81
|
+
/**
|
|
82
|
+
* Get all patterns
|
|
83
|
+
*
|
|
84
|
+
* @returns Array of all pattern entries
|
|
85
|
+
*/
|
|
86
|
+
getAllPatterns(): PatternEntry[];
|
|
87
|
+
/**
|
|
88
|
+
* Get agent configuration by ID
|
|
89
|
+
*
|
|
90
|
+
* @param agentId - Agent unique ID
|
|
91
|
+
* @returns Agent config entry or null if not found
|
|
92
|
+
*/
|
|
93
|
+
getAgentConfig(agentId: string): AgentConfigEntry | null;
|
|
94
|
+
/**
|
|
95
|
+
* Get cache metadata
|
|
96
|
+
*
|
|
97
|
+
* @returns Cache version, timestamp, and statistics
|
|
98
|
+
*/
|
|
99
|
+
getCacheMetadata(): {
|
|
100
|
+
version: CacheVersion;
|
|
101
|
+
timestamp: number;
|
|
102
|
+
patternCount: number;
|
|
103
|
+
agentConfigCount: number;
|
|
104
|
+
fileSize: number;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Check if cache is valid and fresh
|
|
108
|
+
*
|
|
109
|
+
* @returns True if cache is usable
|
|
110
|
+
*/
|
|
111
|
+
isValid(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Close cache reader and release resources
|
|
114
|
+
*/
|
|
115
|
+
close(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Create CacheLoadError with type and metadata
|
|
118
|
+
*
|
|
119
|
+
* @private
|
|
120
|
+
*/
|
|
121
|
+
private createLoadError;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Create a new BinaryCacheReader instance
|
|
125
|
+
*
|
|
126
|
+
* @returns BinaryCacheReader instance
|
|
127
|
+
*/
|
|
128
|
+
export declare function createCacheReader(): BinaryMetadataCacheReader;
|
|
129
|
+
//# sourceMappingURL=BinaryCacheReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryCacheReader.d.ts","sourceRoot":"","sources":["../../../src/core/cache/BinaryCacheReader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAI/B;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,YAAY,CAAkD;IACtE,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,aAAa,CAAkB;;IAOvC;;;;;;;;;OASG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyEhF;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAQ3C;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IASnD;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;IAS/C;;;;;OAKG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IASzD;;;;OAIG;IACH,cAAc,IAAI,YAAY,EAAE;IAQhC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAQxD;;;;OAIG;IACH,gBAAgB,IAAI;QAClB,OAAO,EAAE,YAAY,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAcD;;;;OAIG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;;;OAIG;IACH,OAAO,CAAC,eAAe;CAWxB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,yBAAyB,CAE7D"}
|