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,533 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binary Metadata Cache - TypeScript Interface Definitions
|
|
3
|
+
*
|
|
4
|
+
* High-performance binary caching system for pattern metadata using FlatBuffers.
|
|
5
|
+
* Achieves 10x faster test discovery (500ms → 50ms) by reducing pattern load
|
|
6
|
+
* time from 32ms (SQLite baseline) to <5ms (binary cache target).
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - Format: FlatBuffers (zero-copy deserialization)
|
|
10
|
+
* - Versioning: Semantic versioning (major.minor.patch)
|
|
11
|
+
* - Validation: SHA-256 checksum
|
|
12
|
+
* - Fallback: Graceful degradation to SQLite on corruption
|
|
13
|
+
* - Invalidation: Event-based + TTL-based expiration
|
|
14
|
+
*
|
|
15
|
+
* Performance Targets:
|
|
16
|
+
* - Pattern load time: <5ms (1000 patterns)
|
|
17
|
+
* - Embedding access: <0.15ms (768-dim Float32Array)
|
|
18
|
+
* - Cache hit rate: >95%
|
|
19
|
+
* - Test discovery: <50ms (end-to-end)
|
|
20
|
+
*
|
|
21
|
+
* @module core/cache/BinaryMetadataCache
|
|
22
|
+
* @version 1.0.0
|
|
23
|
+
*/
|
|
24
|
+
import type { TestPattern } from '../memory/IPatternStore';
|
|
25
|
+
/**
|
|
26
|
+
* Binary cache format version
|
|
27
|
+
*/
|
|
28
|
+
export interface CacheVersion {
|
|
29
|
+
/** Major version (breaking schema changes) */
|
|
30
|
+
major: number;
|
|
31
|
+
/** Minor version (backward-compatible additions) */
|
|
32
|
+
minor: number;
|
|
33
|
+
/** Patch version (non-breaking optimizations) */
|
|
34
|
+
patch: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Root binary cache container
|
|
38
|
+
*
|
|
39
|
+
* Represents the entire cached state of pattern metadata, agent configurations,
|
|
40
|
+
* and pre-built search indexes. Serialized to disk using FlatBuffers for
|
|
41
|
+
* zero-copy access and fast deserialization.
|
|
42
|
+
*/
|
|
43
|
+
export interface BinaryCache {
|
|
44
|
+
/** Cache format version (encoded as uint32: major << 16 | minor << 8 | patch) */
|
|
45
|
+
version: number;
|
|
46
|
+
/** Cache generation timestamp (Unix milliseconds) */
|
|
47
|
+
timestamp: number;
|
|
48
|
+
/** SHA-256 checksum for integrity validation (hex string) */
|
|
49
|
+
checksum: string;
|
|
50
|
+
/** Pattern metadata entries */
|
|
51
|
+
patterns: PatternEntry[];
|
|
52
|
+
/** Agent configuration cache */
|
|
53
|
+
agentConfigs: AgentConfigEntry[];
|
|
54
|
+
/** Pre-built search indexes for fast lookup */
|
|
55
|
+
indexes: CacheIndexData;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Pattern metadata entry in binary cache
|
|
59
|
+
*
|
|
60
|
+
* Optimized layout for fast deserialization:
|
|
61
|
+
* - Embedding stored as Float32Array (zero-copy access)
|
|
62
|
+
* - Strings interned for memory efficiency
|
|
63
|
+
* - Metadata stored inline for cache locality
|
|
64
|
+
*/
|
|
65
|
+
export interface PatternEntry {
|
|
66
|
+
/** Pattern unique ID */
|
|
67
|
+
id: string;
|
|
68
|
+
/** Pattern type (e.g., "unit-test", "integration-test") */
|
|
69
|
+
type: string;
|
|
70
|
+
/** Domain/category (e.g., "api", "ui") */
|
|
71
|
+
domain: string;
|
|
72
|
+
/** Test framework (e.g., "jest", "vitest") */
|
|
73
|
+
framework: string;
|
|
74
|
+
/** Vector embedding (768-dim, zero-copy access) */
|
|
75
|
+
embedding: Float32Array;
|
|
76
|
+
/** Pattern content/template */
|
|
77
|
+
content: string;
|
|
78
|
+
/** Extended metadata */
|
|
79
|
+
metadata: PatternMetadata;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Pattern metadata (inline in PatternEntry)
|
|
83
|
+
*/
|
|
84
|
+
export interface PatternMetadata {
|
|
85
|
+
/** Code coverage score (0.0-1.0) */
|
|
86
|
+
coverage: number;
|
|
87
|
+
/** Flakiness probability (0.0-1.0) */
|
|
88
|
+
flakinessScore: number;
|
|
89
|
+
/** Test verdict */
|
|
90
|
+
verdict: 'success' | 'failure' | 'flaky' | 'unknown';
|
|
91
|
+
/** Creation timestamp (Unix milliseconds) */
|
|
92
|
+
createdAt: number;
|
|
93
|
+
/** Last usage timestamp (Unix milliseconds) */
|
|
94
|
+
lastUsed: number;
|
|
95
|
+
/** Usage counter */
|
|
96
|
+
usageCount: number;
|
|
97
|
+
/** Success counter */
|
|
98
|
+
successCount: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Agent configuration entry in cache
|
|
102
|
+
*/
|
|
103
|
+
export interface AgentConfigEntry {
|
|
104
|
+
/** Agent unique ID */
|
|
105
|
+
agentId: string;
|
|
106
|
+
/** Agent type (e.g., "test-generator", "coverage-analyzer") */
|
|
107
|
+
type: string;
|
|
108
|
+
/** JSON-serialized configuration */
|
|
109
|
+
configJson: string;
|
|
110
|
+
/** Configuration version */
|
|
111
|
+
version: string;
|
|
112
|
+
/** Last update timestamp (Unix milliseconds) */
|
|
113
|
+
updatedAt: number;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Pre-built search indexes for O(1) lookup
|
|
117
|
+
*
|
|
118
|
+
* Indexes are computed at cache generation time to avoid runtime overhead.
|
|
119
|
+
* Supports filtering by domain, type, and framework.
|
|
120
|
+
*/
|
|
121
|
+
export interface CacheIndexData {
|
|
122
|
+
/** Domain → pattern IDs mapping */
|
|
123
|
+
domainIndex: Map<string, string[]>;
|
|
124
|
+
/** Type → pattern IDs mapping */
|
|
125
|
+
typeIndex: Map<string, string[]>;
|
|
126
|
+
/** Framework → pattern IDs mapping */
|
|
127
|
+
frameworkIndex: Map<string, string[]>;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Cache serializer interface
|
|
131
|
+
*
|
|
132
|
+
* Handles encoding/decoding of cache data to/from binary format using FlatBuffers.
|
|
133
|
+
* Supports atomic writes and checksum computation.
|
|
134
|
+
*/
|
|
135
|
+
export interface CacheSerializer {
|
|
136
|
+
/**
|
|
137
|
+
* Encode cache data to binary buffer
|
|
138
|
+
*
|
|
139
|
+
* @param cache - Cache data to serialize
|
|
140
|
+
* @returns Binary buffer (Uint8Array) ready for disk write
|
|
141
|
+
* @throws {SerializationError} If encoding fails
|
|
142
|
+
*/
|
|
143
|
+
encode(cache: BinaryCache): Uint8Array;
|
|
144
|
+
/**
|
|
145
|
+
* Decode binary buffer to cache data
|
|
146
|
+
*
|
|
147
|
+
* @param buffer - Binary buffer from disk read
|
|
148
|
+
* @returns Decoded cache data with zero-copy embeddings
|
|
149
|
+
* @throws {DeserializationError} If decoding fails
|
|
150
|
+
*/
|
|
151
|
+
decode(buffer: Uint8Array): BinaryCache;
|
|
152
|
+
/**
|
|
153
|
+
* Compute SHA-256 checksum of cache data
|
|
154
|
+
*
|
|
155
|
+
* @param buffer - Binary buffer to checksum
|
|
156
|
+
* @returns SHA-256 hash as hex string
|
|
157
|
+
*/
|
|
158
|
+
computeChecksum(buffer: Uint8Array): Promise<string>;
|
|
159
|
+
/**
|
|
160
|
+
* Encode cache version to uint32
|
|
161
|
+
*
|
|
162
|
+
* Format: (major << 16) | (minor << 8) | patch
|
|
163
|
+
* Example: v1.2.3 → 0x00010203 (66051)
|
|
164
|
+
*
|
|
165
|
+
* @param version - Semantic version
|
|
166
|
+
* @returns Encoded version as uint32
|
|
167
|
+
*/
|
|
168
|
+
encodeVersion(version: CacheVersion): number;
|
|
169
|
+
/**
|
|
170
|
+
* Decode uint32 to cache version
|
|
171
|
+
*
|
|
172
|
+
* @param encoded - Encoded version uint32
|
|
173
|
+
* @returns Semantic version
|
|
174
|
+
*/
|
|
175
|
+
decodeVersion(encoded: number): CacheVersion;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Cache validator interface
|
|
179
|
+
*
|
|
180
|
+
* Validates cache integrity and version compatibility.
|
|
181
|
+
* Ensures data consistency and prevents use of corrupted caches.
|
|
182
|
+
*/
|
|
183
|
+
export interface CacheValidator {
|
|
184
|
+
/**
|
|
185
|
+
* Validate cache integrity
|
|
186
|
+
*
|
|
187
|
+
* Performs checksum validation and version compatibility check.
|
|
188
|
+
*
|
|
189
|
+
* @param buffer - Binary cache buffer
|
|
190
|
+
* @param expectedChecksum - Expected SHA-256 checksum
|
|
191
|
+
* @returns Validation result with error details
|
|
192
|
+
*/
|
|
193
|
+
validate(buffer: Uint8Array, expectedChecksum: string): Promise<ValidationResult>;
|
|
194
|
+
/**
|
|
195
|
+
* Check version compatibility
|
|
196
|
+
*
|
|
197
|
+
* @param cacheVersion - Version from cache header
|
|
198
|
+
* @param codeVersion - Current code version
|
|
199
|
+
* @returns Compatibility result
|
|
200
|
+
*/
|
|
201
|
+
isVersionCompatible(cacheVersion: CacheVersion, codeVersion: CacheVersion): boolean;
|
|
202
|
+
/**
|
|
203
|
+
* Validate pattern entry
|
|
204
|
+
*
|
|
205
|
+
* Checks for required fields and data integrity.
|
|
206
|
+
*
|
|
207
|
+
* @param entry - Pattern entry to validate
|
|
208
|
+
* @returns True if valid, false otherwise
|
|
209
|
+
*/
|
|
210
|
+
isValidPatternEntry(entry: PatternEntry): boolean;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Validation result
|
|
214
|
+
*/
|
|
215
|
+
export interface ValidationResult {
|
|
216
|
+
/** Overall validation success */
|
|
217
|
+
valid: boolean;
|
|
218
|
+
/** Checksum validation passed */
|
|
219
|
+
checksumValid: boolean;
|
|
220
|
+
/** Version compatibility check passed */
|
|
221
|
+
versionCompatible: boolean;
|
|
222
|
+
/** Error message (if validation failed) */
|
|
223
|
+
error?: string;
|
|
224
|
+
/** Computed checksum (for debugging) */
|
|
225
|
+
computedChecksum?: string;
|
|
226
|
+
/** Cache version (for debugging) */
|
|
227
|
+
cacheVersion?: CacheVersion;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Cache invalidation event
|
|
231
|
+
*/
|
|
232
|
+
export interface CacheInvalidation {
|
|
233
|
+
/** Invalidation trigger type */
|
|
234
|
+
trigger: 'pattern_stored' | 'pattern_deleted' | 'config_updated' | 'schema_migration' | 'manual' | 'ttl_expired';
|
|
235
|
+
/** Event timestamp (Unix milliseconds) */
|
|
236
|
+
timestamp: number;
|
|
237
|
+
/** Whether immediate cache rebuild is required */
|
|
238
|
+
requiresRebuild: boolean;
|
|
239
|
+
/** Additional metadata */
|
|
240
|
+
metadata?: Record<string, any>;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Cache invalidator interface
|
|
244
|
+
*
|
|
245
|
+
* Manages cache lifecycle and invalidation logic.
|
|
246
|
+
* Supports event-based and TTL-based invalidation.
|
|
247
|
+
*/
|
|
248
|
+
export interface CacheInvalidator {
|
|
249
|
+
/**
|
|
250
|
+
* Mark cache as stale
|
|
251
|
+
*
|
|
252
|
+
* @param event - Invalidation event
|
|
253
|
+
*/
|
|
254
|
+
markStale(event: CacheInvalidation): void;
|
|
255
|
+
/**
|
|
256
|
+
* Check if cache is valid
|
|
257
|
+
*
|
|
258
|
+
* @param cacheTimestamp - Cache generation timestamp
|
|
259
|
+
* @returns True if cache is valid and not stale
|
|
260
|
+
*/
|
|
261
|
+
isCacheValid(cacheTimestamp: number): boolean;
|
|
262
|
+
/**
|
|
263
|
+
* Check if cache is fresh (within TTL)
|
|
264
|
+
*
|
|
265
|
+
* @param cacheTimestamp - Cache generation timestamp
|
|
266
|
+
* @param ttl - Time-to-live in milliseconds
|
|
267
|
+
* @returns True if cache age < TTL
|
|
268
|
+
*/
|
|
269
|
+
isCacheFresh(cacheTimestamp: number, ttl: number): boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Check if background rebuild should be triggered
|
|
272
|
+
*
|
|
273
|
+
* Typically triggers when cache age exceeds 80% of TTL.
|
|
274
|
+
*
|
|
275
|
+
* @param cacheTimestamp - Cache generation timestamp
|
|
276
|
+
* @param ttl - Time-to-live in milliseconds
|
|
277
|
+
* @returns True if background rebuild recommended
|
|
278
|
+
*/
|
|
279
|
+
shouldBackgroundRebuild(cacheTimestamp: number, ttl: number): boolean;
|
|
280
|
+
/**
|
|
281
|
+
* Schedule cache rebuild
|
|
282
|
+
*
|
|
283
|
+
* @param background - Whether to rebuild in background
|
|
284
|
+
*/
|
|
285
|
+
scheduleCacheRebuild(background: boolean): void;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Cache configuration
|
|
289
|
+
*/
|
|
290
|
+
export interface BinaryCacheConfig {
|
|
291
|
+
/** Enable binary cache (feature flag) */
|
|
292
|
+
enabled: boolean;
|
|
293
|
+
/** Cache file path (default: .aqe/cache/patterns.bin) */
|
|
294
|
+
cachePath: string;
|
|
295
|
+
/** Maximum cache age in milliseconds (default: 3600000 = 1 hour) */
|
|
296
|
+
maxAge: number;
|
|
297
|
+
/** Cache validation check interval (default: 300000 = 5 min) */
|
|
298
|
+
checkInterval: number;
|
|
299
|
+
/** Enable background cache rebuild (default: true) */
|
|
300
|
+
backgroundRebuild: boolean;
|
|
301
|
+
/** Graceful fallback to SQLite on errors (default: true) */
|
|
302
|
+
fallbackToSQLite: boolean;
|
|
303
|
+
/** Current cache format version */
|
|
304
|
+
version: CacheVersion;
|
|
305
|
+
/** Enable performance metrics collection (default: true) */
|
|
306
|
+
enableMetrics: boolean;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Cache metrics for monitoring
|
|
310
|
+
*/
|
|
311
|
+
export interface CacheMetrics {
|
|
312
|
+
/** Total cache hits */
|
|
313
|
+
cacheHits: number;
|
|
314
|
+
/** Total cache misses */
|
|
315
|
+
cacheMisses: number;
|
|
316
|
+
/** Cache hit rate (0.0-1.0) */
|
|
317
|
+
cacheHitRate: number;
|
|
318
|
+
/** Average cache load time (milliseconds) */
|
|
319
|
+
avgCacheLoadTime: number;
|
|
320
|
+
/** Average SQLite fallback time (milliseconds) */
|
|
321
|
+
avgSQLiteFallbackTime: number;
|
|
322
|
+
/** Cache corruption count */
|
|
323
|
+
cacheCorruptionCount: number;
|
|
324
|
+
/** Cache rebuild count */
|
|
325
|
+
cacheRebuildCount: number;
|
|
326
|
+
/** Last cache generation timestamp */
|
|
327
|
+
lastCacheGenerationTime: number;
|
|
328
|
+
/** Cache file size (bytes) */
|
|
329
|
+
cacheFileSize: number;
|
|
330
|
+
/** Number of patterns in cache */
|
|
331
|
+
patternCount: number;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Binary cache reader interface (zero-copy access)
|
|
335
|
+
*
|
|
336
|
+
* Provides read-only access to cached pattern metadata with minimal overhead.
|
|
337
|
+
* Uses memory-mapped files and FlatBuffers for zero-copy deserialization.
|
|
338
|
+
*/
|
|
339
|
+
export interface BinaryCacheReader {
|
|
340
|
+
/**
|
|
341
|
+
* Initialize cache reader
|
|
342
|
+
*
|
|
343
|
+
* Loads cache file, validates checksum, and prepares for zero-copy access.
|
|
344
|
+
*
|
|
345
|
+
* @param cachePath - Path to binary cache file
|
|
346
|
+
* @param config - Cache configuration
|
|
347
|
+
* @returns Initialization success status
|
|
348
|
+
* @throws {CacheLoadError} If cache loading fails
|
|
349
|
+
*/
|
|
350
|
+
initialize(cachePath: string, config: BinaryCacheConfig): Promise<boolean>;
|
|
351
|
+
/**
|
|
352
|
+
* Get pattern by ID (zero-copy)
|
|
353
|
+
*
|
|
354
|
+
* @param id - Pattern unique ID
|
|
355
|
+
* @returns Pattern entry or null if not found
|
|
356
|
+
*/
|
|
357
|
+
getPattern(id: string): PatternEntry | null;
|
|
358
|
+
/**
|
|
359
|
+
* Get patterns by domain (O(1) lookup)
|
|
360
|
+
*
|
|
361
|
+
* @param domain - Domain filter
|
|
362
|
+
* @returns Array of pattern entries
|
|
363
|
+
*/
|
|
364
|
+
getPatternsByDomain(domain: string): PatternEntry[];
|
|
365
|
+
/**
|
|
366
|
+
* Get patterns by type (O(1) lookup)
|
|
367
|
+
*
|
|
368
|
+
* @param type - Type filter
|
|
369
|
+
* @returns Array of pattern entries
|
|
370
|
+
*/
|
|
371
|
+
getPatternsByType(type: string): PatternEntry[];
|
|
372
|
+
/**
|
|
373
|
+
* Get patterns by framework (O(1) lookup)
|
|
374
|
+
*
|
|
375
|
+
* @param framework - Framework filter
|
|
376
|
+
* @returns Array of pattern entries
|
|
377
|
+
*/
|
|
378
|
+
getPatternsByFramework(framework: string): PatternEntry[];
|
|
379
|
+
/**
|
|
380
|
+
* Get all patterns (zero-copy)
|
|
381
|
+
*
|
|
382
|
+
* @returns Array of all pattern entries
|
|
383
|
+
*/
|
|
384
|
+
getAllPatterns(): PatternEntry[];
|
|
385
|
+
/**
|
|
386
|
+
* Get agent configuration by ID
|
|
387
|
+
*
|
|
388
|
+
* @param agentId - Agent unique ID
|
|
389
|
+
* @returns Agent config entry or null if not found
|
|
390
|
+
*/
|
|
391
|
+
getAgentConfig(agentId: string): AgentConfigEntry | null;
|
|
392
|
+
/**
|
|
393
|
+
* Get cache metadata
|
|
394
|
+
*
|
|
395
|
+
* @returns Cache version, timestamp, and statistics
|
|
396
|
+
*/
|
|
397
|
+
getCacheMetadata(): {
|
|
398
|
+
version: CacheVersion;
|
|
399
|
+
timestamp: number;
|
|
400
|
+
patternCount: number;
|
|
401
|
+
agentConfigCount: number;
|
|
402
|
+
fileSize: number;
|
|
403
|
+
};
|
|
404
|
+
/**
|
|
405
|
+
* Check if cache is valid and fresh
|
|
406
|
+
*
|
|
407
|
+
* @returns True if cache is usable
|
|
408
|
+
*/
|
|
409
|
+
isValid(): boolean;
|
|
410
|
+
/**
|
|
411
|
+
* Close cache reader and release resources
|
|
412
|
+
*/
|
|
413
|
+
close(): void;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Binary cache builder interface
|
|
417
|
+
*
|
|
418
|
+
* Builds binary cache from SQLite data source.
|
|
419
|
+
* Handles serialization, index generation, and atomic writes.
|
|
420
|
+
*/
|
|
421
|
+
export interface BinaryCacheBuilder {
|
|
422
|
+
/**
|
|
423
|
+
* Build cache from SQLite patterns
|
|
424
|
+
*
|
|
425
|
+
* @param patterns - Array of test patterns from SQLite
|
|
426
|
+
* @param agentConfigs - Array of agent configurations
|
|
427
|
+
* @param outputPath - Cache file output path
|
|
428
|
+
* @returns Build success status and metrics
|
|
429
|
+
*/
|
|
430
|
+
buildCache(patterns: TestPattern[], agentConfigs: AgentConfigEntry[], outputPath: string): Promise<CacheBuildResult>;
|
|
431
|
+
/**
|
|
432
|
+
* Build cache indexes
|
|
433
|
+
*
|
|
434
|
+
* Pre-computes domain, type, and framework indexes for O(1) lookup.
|
|
435
|
+
*
|
|
436
|
+
* @param patterns - Array of pattern entries
|
|
437
|
+
* @returns Index data structure
|
|
438
|
+
*/
|
|
439
|
+
buildIndexes(patterns: PatternEntry[]): CacheIndexData;
|
|
440
|
+
/**
|
|
441
|
+
* Write cache to disk atomically
|
|
442
|
+
*
|
|
443
|
+
* Uses atomic write pattern (write to temp, validate, rename) to prevent
|
|
444
|
+
* partial writes and corruption.
|
|
445
|
+
*
|
|
446
|
+
* @param buffer - Binary cache buffer
|
|
447
|
+
* @param outputPath - Target file path
|
|
448
|
+
* @returns Write success status
|
|
449
|
+
*/
|
|
450
|
+
writeAtomic(buffer: Uint8Array, outputPath: string): Promise<boolean>;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Cache build result
|
|
454
|
+
*/
|
|
455
|
+
export interface CacheBuildResult {
|
|
456
|
+
/** Build success status */
|
|
457
|
+
success: boolean;
|
|
458
|
+
/** Build duration (milliseconds) */
|
|
459
|
+
duration: number;
|
|
460
|
+
/** Number of patterns cached */
|
|
461
|
+
patternCount: number;
|
|
462
|
+
/** Number of agent configs cached */
|
|
463
|
+
agentConfigCount: number;
|
|
464
|
+
/** Cache file size (bytes) */
|
|
465
|
+
cacheFileSize: number;
|
|
466
|
+
/** Cache version */
|
|
467
|
+
version: CacheVersion;
|
|
468
|
+
/** SHA-256 checksum */
|
|
469
|
+
checksum: string;
|
|
470
|
+
/** Error message (if build failed) */
|
|
471
|
+
error?: string;
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Cache load error types
|
|
475
|
+
*/
|
|
476
|
+
export type CacheLoadErrorType = 'file_not_found' | 'permission_denied' | 'checksum_mismatch' | 'version_incompatible' | 'corrupted_data' | 'io_error';
|
|
477
|
+
/**
|
|
478
|
+
* Cache load error
|
|
479
|
+
*/
|
|
480
|
+
export declare class CacheLoadError extends Error {
|
|
481
|
+
type: CacheLoadErrorType;
|
|
482
|
+
metadata?: Record<string, any> | undefined;
|
|
483
|
+
constructor(type: CacheLoadErrorType, message: string, metadata?: Record<string, any> | undefined);
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Serialization error
|
|
487
|
+
*/
|
|
488
|
+
export declare class SerializationError extends Error {
|
|
489
|
+
cause?: Error | undefined;
|
|
490
|
+
constructor(message: string, cause?: Error | undefined);
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Deserialization error
|
|
494
|
+
*/
|
|
495
|
+
export declare class DeserializationError extends Error {
|
|
496
|
+
cause?: Error | undefined;
|
|
497
|
+
constructor(message: string, cause?: Error | undefined);
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Default cache configuration
|
|
501
|
+
*/
|
|
502
|
+
export declare const DEFAULT_CACHE_CONFIG: BinaryCacheConfig;
|
|
503
|
+
/**
|
|
504
|
+
* Cache file magic number (0x41514543 = "AQEC" = Agentic QE Cache)
|
|
505
|
+
*/
|
|
506
|
+
export declare const CACHE_MAGIC_NUMBER = 1095845187;
|
|
507
|
+
/**
|
|
508
|
+
* Cache file header size (bytes)
|
|
509
|
+
*/
|
|
510
|
+
export declare const CACHE_HEADER_SIZE = 64;
|
|
511
|
+
/**
|
|
512
|
+
* Current cache format version
|
|
513
|
+
*/
|
|
514
|
+
export declare const CACHE_VERSION: CacheVersion;
|
|
515
|
+
/**
|
|
516
|
+
* Helper: Convert TestPattern to PatternEntry
|
|
517
|
+
*
|
|
518
|
+
* Maps from IPatternStore.TestPattern to cache-optimized PatternEntry format.
|
|
519
|
+
*
|
|
520
|
+
* @param pattern - Test pattern from SQLite
|
|
521
|
+
* @returns Pattern entry for cache
|
|
522
|
+
*/
|
|
523
|
+
export declare function testPatternToEntry(pattern: TestPattern): PatternEntry;
|
|
524
|
+
/**
|
|
525
|
+
* Helper: Convert PatternEntry to TestPattern
|
|
526
|
+
*
|
|
527
|
+
* Maps from cache-optimized PatternEntry to IPatternStore.TestPattern format.
|
|
528
|
+
*
|
|
529
|
+
* @param entry - Pattern entry from cache
|
|
530
|
+
* @returns Test pattern for application use
|
|
531
|
+
*/
|
|
532
|
+
export declare function entryToTestPattern(entry: PatternEntry): TestPattern;
|
|
533
|
+
//# sourceMappingURL=BinaryMetadataCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryMetadataCache.d.ts","sourceRoot":"","sources":["../../../src/core/cache/BinaryMetadataCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Binary Metadata Cache - TypeScript Interface Definitions
|
|
4
|
+
*
|
|
5
|
+
* High-performance binary caching system for pattern metadata using FlatBuffers.
|
|
6
|
+
* Achieves 10x faster test discovery (500ms → 50ms) by reducing pattern load
|
|
7
|
+
* time from 32ms (SQLite baseline) to <5ms (binary cache target).
|
|
8
|
+
*
|
|
9
|
+
* Architecture:
|
|
10
|
+
* - Format: FlatBuffers (zero-copy deserialization)
|
|
11
|
+
* - Versioning: Semantic versioning (major.minor.patch)
|
|
12
|
+
* - Validation: SHA-256 checksum
|
|
13
|
+
* - Fallback: Graceful degradation to SQLite on corruption
|
|
14
|
+
* - Invalidation: Event-based + TTL-based expiration
|
|
15
|
+
*
|
|
16
|
+
* Performance Targets:
|
|
17
|
+
* - Pattern load time: <5ms (1000 patterns)
|
|
18
|
+
* - Embedding access: <0.15ms (768-dim Float32Array)
|
|
19
|
+
* - Cache hit rate: >95%
|
|
20
|
+
* - Test discovery: <50ms (end-to-end)
|
|
21
|
+
*
|
|
22
|
+
* @module core/cache/BinaryMetadataCache
|
|
23
|
+
* @version 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.CACHE_VERSION = exports.CACHE_HEADER_SIZE = exports.CACHE_MAGIC_NUMBER = exports.DEFAULT_CACHE_CONFIG = exports.DeserializationError = exports.SerializationError = exports.CacheLoadError = void 0;
|
|
27
|
+
exports.testPatternToEntry = testPatternToEntry;
|
|
28
|
+
exports.entryToTestPattern = entryToTestPattern;
|
|
29
|
+
/**
|
|
30
|
+
* Cache load error
|
|
31
|
+
*/
|
|
32
|
+
class CacheLoadError extends Error {
|
|
33
|
+
constructor(type, message, metadata) {
|
|
34
|
+
super(message);
|
|
35
|
+
this.type = type;
|
|
36
|
+
this.metadata = metadata;
|
|
37
|
+
this.name = 'CacheLoadError';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.CacheLoadError = CacheLoadError;
|
|
41
|
+
/**
|
|
42
|
+
* Serialization error
|
|
43
|
+
*/
|
|
44
|
+
class SerializationError extends Error {
|
|
45
|
+
constructor(message, cause) {
|
|
46
|
+
super(message);
|
|
47
|
+
this.cause = cause;
|
|
48
|
+
this.name = 'SerializationError';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.SerializationError = SerializationError;
|
|
52
|
+
/**
|
|
53
|
+
* Deserialization error
|
|
54
|
+
*/
|
|
55
|
+
class DeserializationError extends Error {
|
|
56
|
+
constructor(message, cause) {
|
|
57
|
+
super(message);
|
|
58
|
+
this.cause = cause;
|
|
59
|
+
this.name = 'DeserializationError';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.DeserializationError = DeserializationError;
|
|
63
|
+
/**
|
|
64
|
+
* Default cache configuration
|
|
65
|
+
*/
|
|
66
|
+
exports.DEFAULT_CACHE_CONFIG = {
|
|
67
|
+
enabled: true,
|
|
68
|
+
cachePath: '.aqe/cache/patterns.bin',
|
|
69
|
+
maxAge: 3600000, // 1 hour
|
|
70
|
+
checkInterval: 300000, // 5 minutes
|
|
71
|
+
backgroundRebuild: true,
|
|
72
|
+
fallbackToSQLite: true,
|
|
73
|
+
version: { major: 1, minor: 0, patch: 0 },
|
|
74
|
+
enableMetrics: true,
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Cache file magic number (0x41514543 = "AQEC" = Agentic QE Cache)
|
|
78
|
+
*/
|
|
79
|
+
exports.CACHE_MAGIC_NUMBER = 0x41514543;
|
|
80
|
+
/**
|
|
81
|
+
* Cache file header size (bytes)
|
|
82
|
+
*/
|
|
83
|
+
exports.CACHE_HEADER_SIZE = 64;
|
|
84
|
+
/**
|
|
85
|
+
* Current cache format version
|
|
86
|
+
*/
|
|
87
|
+
exports.CACHE_VERSION = { major: 1, minor: 0, patch: 0 };
|
|
88
|
+
/**
|
|
89
|
+
* Helper: Convert TestPattern to PatternEntry
|
|
90
|
+
*
|
|
91
|
+
* Maps from IPatternStore.TestPattern to cache-optimized PatternEntry format.
|
|
92
|
+
*
|
|
93
|
+
* @param pattern - Test pattern from SQLite
|
|
94
|
+
* @returns Pattern entry for cache
|
|
95
|
+
*/
|
|
96
|
+
function testPatternToEntry(pattern) {
|
|
97
|
+
return {
|
|
98
|
+
id: pattern.id,
|
|
99
|
+
type: pattern.type,
|
|
100
|
+
domain: pattern.domain,
|
|
101
|
+
framework: pattern.framework || 'unknown',
|
|
102
|
+
embedding: new Float32Array(pattern.embedding),
|
|
103
|
+
content: pattern.content,
|
|
104
|
+
metadata: {
|
|
105
|
+
coverage: pattern.coverage || 0,
|
|
106
|
+
flakinessScore: pattern.flakinessScore || 0,
|
|
107
|
+
verdict: pattern.verdict || 'unknown',
|
|
108
|
+
createdAt: pattern.createdAt || Date.now(),
|
|
109
|
+
lastUsed: pattern.lastUsed || Date.now(),
|
|
110
|
+
usageCount: pattern.usageCount || 0,
|
|
111
|
+
successCount: pattern.metadata?.successCount || 0,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Helper: Convert PatternEntry to TestPattern
|
|
117
|
+
*
|
|
118
|
+
* Maps from cache-optimized PatternEntry to IPatternStore.TestPattern format.
|
|
119
|
+
*
|
|
120
|
+
* @param entry - Pattern entry from cache
|
|
121
|
+
* @returns Test pattern for application use
|
|
122
|
+
*/
|
|
123
|
+
function entryToTestPattern(entry) {
|
|
124
|
+
return {
|
|
125
|
+
id: entry.id,
|
|
126
|
+
type: entry.type,
|
|
127
|
+
domain: entry.domain,
|
|
128
|
+
framework: entry.framework,
|
|
129
|
+
embedding: Array.from(entry.embedding),
|
|
130
|
+
content: entry.content,
|
|
131
|
+
coverage: entry.metadata.coverage,
|
|
132
|
+
flakinessScore: entry.metadata.flakinessScore,
|
|
133
|
+
verdict: entry.metadata.verdict === 'unknown' ? undefined : entry.metadata.verdict,
|
|
134
|
+
createdAt: entry.metadata.createdAt,
|
|
135
|
+
lastUsed: entry.metadata.lastUsed,
|
|
136
|
+
usageCount: entry.metadata.usageCount,
|
|
137
|
+
metadata: {
|
|
138
|
+
successCount: entry.metadata.successCount,
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=BinaryMetadataCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryMetadataCache.js","sourceRoot":"","sources":["../../../src/core/cache/BinaryMetadataCache.ts"],"names":[],"mappings":"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"}
|