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,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"}
|