agentic-qe 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/.claude/skills/sherlock-review/SKILL.md +786 -0
  2. package/CHANGELOG.md +625 -0
  3. package/README.md +42 -55
  4. package/dist/agents/BaseAgent.d.ts +10 -10
  5. package/dist/agents/BaseAgent.d.ts.map +1 -1
  6. package/dist/agents/BaseAgent.js +96 -78
  7. package/dist/agents/BaseAgent.js.map +1 -1
  8. package/dist/agents/CoverageAnalyzerAgent.js +2 -2
  9. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  10. package/dist/agents/LearningAgent.d.ts +2 -2
  11. package/dist/agents/LearningAgent.d.ts.map +1 -1
  12. package/dist/agents/LearningAgent.js +4 -4
  13. package/dist/agents/LearningAgent.js.map +1 -1
  14. package/dist/agents/TestExecutorAgent.d.ts +41 -2
  15. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  16. package/dist/agents/TestExecutorAgent.js +314 -64
  17. package/dist/agents/TestExecutorAgent.js.map +1 -1
  18. package/dist/agents/examples/batchAnalyze.d.ts +252 -0
  19. package/dist/agents/examples/batchAnalyze.d.ts.map +1 -0
  20. package/dist/agents/examples/batchAnalyze.js +259 -0
  21. package/dist/agents/examples/batchAnalyze.js.map +1 -0
  22. package/dist/agents/examples/batchGenerate.d.ts +153 -0
  23. package/dist/agents/examples/batchGenerate.d.ts.map +1 -0
  24. package/dist/agents/examples/batchGenerate.js +166 -0
  25. package/dist/agents/examples/batchGenerate.js.map +1 -0
  26. package/dist/agents/generateWithPII.d.ts +128 -0
  27. package/dist/agents/generateWithPII.d.ts.map +1 -0
  28. package/dist/agents/generateWithPII.js +175 -0
  29. package/dist/agents/generateWithPII.js.map +1 -0
  30. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts +1 -6
  31. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  32. package/dist/agents/lifecycle/AgentLifecycleManager.js +0 -7
  33. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  34. package/dist/cli/commands/init.d.ts +6 -3
  35. package/dist/cli/commands/init.d.ts.map +1 -1
  36. package/dist/cli/commands/init.js +51 -46
  37. package/dist/cli/commands/init.js.map +1 -1
  38. package/dist/cli/commands/learn/index.d.ts +4 -0
  39. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  40. package/dist/cli/commands/learn/index.js +57 -0
  41. package/dist/cli/commands/learn/index.js.map +1 -1
  42. package/dist/cli/index.js +14 -0
  43. package/dist/cli/index.js.map +1 -1
  44. package/dist/core/memory/AdapterConfig.d.ts +108 -0
  45. package/dist/core/memory/AdapterConfig.d.ts.map +1 -0
  46. package/dist/core/memory/AdapterConfig.js +189 -0
  47. package/dist/core/memory/AdapterConfig.js.map +1 -0
  48. package/dist/core/memory/AdapterFactory.d.ts +72 -0
  49. package/dist/core/memory/AdapterFactory.d.ts.map +1 -0
  50. package/dist/core/memory/AdapterFactory.js +152 -0
  51. package/dist/core/memory/AdapterFactory.js.map +1 -0
  52. package/dist/core/memory/AgentDBManager.d.ts +28 -5
  53. package/dist/core/memory/AgentDBManager.d.ts.map +1 -1
  54. package/dist/core/memory/AgentDBManager.js +99 -73
  55. package/dist/core/memory/AgentDBManager.js.map +1 -1
  56. package/dist/core/memory/PatternCache.d.ts +105 -0
  57. package/dist/core/memory/PatternCache.d.ts.map +1 -0
  58. package/dist/core/memory/PatternCache.js +183 -0
  59. package/dist/core/memory/PatternCache.js.map +1 -0
  60. package/dist/core/memory/RealAgentDBAdapter.d.ts +14 -0
  61. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  62. package/dist/core/memory/RealAgentDBAdapter.js +153 -16
  63. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  64. package/dist/core/memory/ReasoningBankAdapter.d.ts +4 -0
  65. package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -1
  66. package/dist/core/memory/ReasoningBankAdapter.js +20 -0
  67. package/dist/core/memory/ReasoningBankAdapter.js.map +1 -1
  68. package/dist/core/memory/SwarmMemoryManager.d.ts +8 -0
  69. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  70. package/dist/core/memory/SwarmMemoryManager.js +33 -0
  71. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  72. package/dist/core/memory/index.d.ts +6 -0
  73. package/dist/core/memory/index.d.ts.map +1 -1
  74. package/dist/core/memory/index.js +12 -1
  75. package/dist/core/memory/index.js.map +1 -1
  76. package/dist/core/neural/NeuralTrainer.d.ts +2 -6
  77. package/dist/core/neural/NeuralTrainer.d.ts.map +1 -1
  78. package/dist/core/neural/NeuralTrainer.js +7 -25
  79. package/dist/core/neural/NeuralTrainer.js.map +1 -1
  80. package/dist/learning/ImprovementLoop.js +2 -2
  81. package/dist/learning/ImprovementLoop.js.map +1 -1
  82. package/dist/learning/LearningEngine.d.ts +11 -7
  83. package/dist/learning/LearningEngine.d.ts.map +1 -1
  84. package/dist/learning/LearningEngine.js +156 -72
  85. package/dist/learning/LearningEngine.js.map +1 -1
  86. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +83 -0
  87. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +1 -0
  88. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +130 -0
  89. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +1 -0
  90. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +58 -0
  91. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +1 -0
  92. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +84 -0
  93. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +1 -0
  94. package/dist/mcp/handlers/filtered/index.d.ts +47 -0
  95. package/dist/mcp/handlers/filtered/index.d.ts.map +1 -0
  96. package/dist/mcp/handlers/filtered/index.js +63 -0
  97. package/dist/mcp/handlers/filtered/index.js.map +1 -0
  98. package/dist/mcp/handlers/filtered/performance-tester-filtered.d.ts +57 -0
  99. package/dist/mcp/handlers/filtered/performance-tester-filtered.d.ts.map +1 -0
  100. package/dist/mcp/handlers/filtered/performance-tester-filtered.js +83 -0
  101. package/dist/mcp/handlers/filtered/performance-tester-filtered.js.map +1 -0
  102. package/dist/mcp/handlers/filtered/quality-assessor-filtered.d.ts +57 -0
  103. package/dist/mcp/handlers/filtered/quality-assessor-filtered.d.ts.map +1 -0
  104. package/dist/mcp/handlers/filtered/quality-assessor-filtered.js +93 -0
  105. package/dist/mcp/handlers/filtered/quality-assessor-filtered.js.map +1 -0
  106. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +54 -0
  107. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +1 -0
  108. package/dist/mcp/handlers/filtered/security-scanner-filtered.js +73 -0
  109. package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +1 -0
  110. package/dist/mcp/handlers/filtered/test-executor-filtered.d.ts +61 -0
  111. package/dist/mcp/handlers/filtered/test-executor-filtered.d.ts.map +1 -0
  112. package/dist/mcp/handlers/filtered/test-executor-filtered.js +117 -0
  113. package/dist/mcp/handlers/filtered/test-executor-filtered.js.map +1 -0
  114. package/dist/mcp/handlers/phase2/Phase2Tools.js +2 -2
  115. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  116. package/dist/scripts/backup-helper.d.ts +64 -0
  117. package/dist/scripts/backup-helper.d.ts.map +1 -0
  118. package/dist/scripts/backup-helper.js +251 -0
  119. package/dist/scripts/backup-helper.js.map +1 -0
  120. package/dist/scripts/migrate-with-backup.d.ts +15 -0
  121. package/dist/scripts/migrate-with-backup.d.ts.map +1 -0
  122. package/dist/scripts/migrate-with-backup.js +194 -0
  123. package/dist/scripts/migrate-with-backup.js.map +1 -0
  124. package/dist/security/pii-tokenization.d.ts +216 -0
  125. package/dist/security/pii-tokenization.d.ts.map +1 -0
  126. package/dist/security/pii-tokenization.js +325 -0
  127. package/dist/security/pii-tokenization.js.map +1 -0
  128. package/dist/utils/EmbeddingGenerator.d.ts +35 -0
  129. package/dist/utils/EmbeddingGenerator.d.ts.map +1 -0
  130. package/dist/utils/EmbeddingGenerator.js +72 -0
  131. package/dist/utils/EmbeddingGenerator.js.map +1 -0
  132. package/dist/utils/batch-operations.d.ts +215 -0
  133. package/dist/utils/batch-operations.d.ts.map +1 -0
  134. package/dist/utils/batch-operations.js +266 -0
  135. package/dist/utils/batch-operations.js.map +1 -0
  136. package/dist/utils/filtering.d.ts +180 -0
  137. package/dist/utils/filtering.d.ts.map +1 -0
  138. package/dist/utils/filtering.js +288 -0
  139. package/dist/utils/filtering.js.map +1 -0
  140. package/dist/utils/prompt-cache-examples.d.ts +111 -0
  141. package/dist/utils/prompt-cache-examples.d.ts.map +1 -0
  142. package/dist/utils/prompt-cache-examples.js +416 -0
  143. package/dist/utils/prompt-cache-examples.js.map +1 -0
  144. package/dist/utils/prompt-cache.d.ts +305 -0
  145. package/dist/utils/prompt-cache.d.ts.map +1 -0
  146. package/dist/utils/prompt-cache.js +448 -0
  147. package/dist/utils/prompt-cache.js.map +1 -0
  148. package/package.json +7 -16
  149. package/dist/mcp/tools/deprecated.d.ts +0 -1390
  150. package/dist/mcp/tools/deprecated.d.ts.map +0 -1
  151. package/dist/mcp/tools/deprecated.js +0 -859
  152. package/dist/mcp/tools/deprecated.js.map +0 -1
@@ -0,0 +1,448 @@
1
+ "use strict";
2
+ /**
3
+ * Prompt Caching Infrastructure (CO-1)
4
+ *
5
+ * Implements Anthropic's prompt caching with proper cache key management and invalidation.
6
+ *
7
+ * IMPORTANT: Anthropic caching requirements:
8
+ * 1. Minimum 1024 tokens per cached block
9
+ * 2. Cache control on LAST 3 blocks only
10
+ * 3. 5-minute automatic TTL
11
+ *
12
+ * Cost model:
13
+ * - Cache write: 25% premium on input tokens
14
+ * - Cache hit: 90% discount on cached tokens
15
+ * - Regular tokens: Standard $3.00 per 1M input tokens
16
+ *
17
+ * @module utils/prompt-cache
18
+ */
19
+ var __importDefault = (this && this.__importDefault) || function (mod) {
20
+ return (mod && mod.__esModule) ? mod : { "default": mod };
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.PromptCacheManager = void 0;
24
+ const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
25
+ const crypto_1 = require("crypto");
26
+ /**
27
+ * PromptCacheManager
28
+ *
29
+ * Manages Anthropic prompt caching with content-addressable cache keys,
30
+ * TTL-based invalidation, and cost accounting.
31
+ *
32
+ * Features:
33
+ * - SHA-256 based cache keys for content addressability
34
+ * - 5-minute TTL with automatic pruning
35
+ * - Cost tracking for cache writes (25% premium) vs hits (90% discount)
36
+ * - Statistics for cache hit rate and cost savings
37
+ * - Support for up to 3 cached blocks per request
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const cacheManager = new PromptCacheManager(process.env.ANTHROPIC_API_KEY!);
42
+ *
43
+ * const response = await cacheManager.createWithCache({
44
+ * model: 'claude-sonnet-4',
45
+ * systemPrompts: [
46
+ * { text: AGENT_SYSTEM_PROMPT, priority: 'high' },
47
+ * ],
48
+ * projectContext: [
49
+ * { text: JSON.stringify(projectStructure), priority: 'medium' },
50
+ * ],
51
+ * messages: [
52
+ * { role: 'user', content: 'Generate tests for this code...' },
53
+ * ],
54
+ * });
55
+ *
56
+ * const stats = cacheManager.getStats();
57
+ * console.log(`Cache hit rate: ${(stats.hitRate * 100).toFixed(1)}%`);
58
+ * console.log(`Cost savings: $${stats.costSavings.toFixed(4)}`);
59
+ * ```
60
+ */
61
+ class PromptCacheManager {
62
+ /**
63
+ * Create a new PromptCacheManager
64
+ *
65
+ * @param apiKey - Anthropic API key
66
+ */
67
+ constructor(apiKey) {
68
+ this.cacheKeys = new Map();
69
+ this.stats = {
70
+ hits: 0,
71
+ misses: 0,
72
+ writes: 0,
73
+ hitRate: 0,
74
+ costSavings: 0,
75
+ tokensWritten: 0,
76
+ tokensRead: 0,
77
+ tokensRegular: 0,
78
+ };
79
+ /** Cache TTL in milliseconds (5 minutes as per Anthropic specs) */
80
+ this.CACHE_TTL = 5 * 60 * 1000;
81
+ /** Minimum tokens required for caching */
82
+ this.MIN_CACHE_TOKENS = 1024;
83
+ /** Cost per million tokens */
84
+ this.COST_PER_MILLION = 3.0;
85
+ /** Cache write premium (25%) */
86
+ this.CACHE_WRITE_PREMIUM = 1.25;
87
+ /** Cache read discount (90%) */
88
+ this.CACHE_READ_DISCOUNT = 0.1; // 90% discount means 10% cost
89
+ this.anthropic = new sdk_1.default({ apiKey });
90
+ }
91
+ /**
92
+ * Create message with cached content
93
+ *
94
+ * IMPORTANT: Anthropic caching requires:
95
+ * 1. Minimum 1024 tokens per cached block
96
+ * 2. Cache control on LAST 3 blocks only
97
+ * 3. 5-minute TTL (automatic)
98
+ *
99
+ * This method automatically:
100
+ * - Checks content size before caching (must be >= 1024 tokens)
101
+ * - Adds cache control to last 3 blocks
102
+ * - Tracks cache hits/misses via content hashing
103
+ * - Updates cost statistics
104
+ *
105
+ * @param params - Message parameters with cacheable content
106
+ * @returns Anthropic message response
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * const response = await cacheManager.createWithCache({
111
+ * model: 'claude-sonnet-4',
112
+ * systemPrompts: [
113
+ * { text: SYSTEM_PROMPT, priority: 'high' },
114
+ * ],
115
+ * projectContext: [
116
+ * { text: projectData, priority: 'medium' },
117
+ * ],
118
+ * messages: [{ role: 'user', content: userQuery }],
119
+ * });
120
+ * ```
121
+ */
122
+ async createWithCache(params) {
123
+ // Build system content with cache breakpoints
124
+ const systemContent = [];
125
+ // Add system prompts (cache if >= MIN_CACHE_TOKENS)
126
+ for (const prompt of params.systemPrompts) {
127
+ const shouldCache = this.shouldCache(prompt.text);
128
+ systemContent.push({
129
+ type: 'text',
130
+ text: prompt.text,
131
+ ...(shouldCache && { cache_control: { type: 'ephemeral' } }),
132
+ });
133
+ }
134
+ // Add project context (cache if provided and >= MIN_CACHE_TOKENS)
135
+ if (params.projectContext) {
136
+ for (const context of params.projectContext) {
137
+ const shouldCache = this.shouldCache(context.text);
138
+ systemContent.push({
139
+ type: 'text',
140
+ text: context.text,
141
+ ...(shouldCache && { cache_control: { type: 'ephemeral' } }),
142
+ });
143
+ }
144
+ }
145
+ // Generate cache key from cacheable content
146
+ const cacheKey = this.generateCacheKey(systemContent);
147
+ const isHit = this.isCacheHit(cacheKey);
148
+ // Track cache statistics (only if we have cacheable content)
149
+ if (cacheKey) {
150
+ if (isHit) {
151
+ this.stats.hits++;
152
+ }
153
+ else {
154
+ this.stats.misses++;
155
+ this.stats.writes++;
156
+ const estimatedTokens = this.estimateTokens(systemContent);
157
+ this.cacheKeys.set(cacheKey, {
158
+ hash: cacheKey,
159
+ timestamp: Date.now(),
160
+ tokens: estimatedTokens,
161
+ });
162
+ }
163
+ }
164
+ // Make API call
165
+ const response = await this.anthropic.messages.create({
166
+ model: params.model,
167
+ system: systemContent,
168
+ messages: params.messages,
169
+ max_tokens: params.maxTokens || 4096,
170
+ ...(params.temperature !== undefined && { temperature: params.temperature }),
171
+ });
172
+ // Update statistics from response
173
+ this.updateStats(response, isHit);
174
+ return response;
175
+ }
176
+ /**
177
+ * Generate cache key from content using SHA-256
178
+ *
179
+ * Creates a content-addressable cache key by hashing all text blocks.
180
+ * Only cached blocks (those with cache_control) are included in the hash.
181
+ *
182
+ * @param content - Text blocks to hash
183
+ * @returns SHA-256 hash of content
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * const key = cacheManager.generateCacheKey([
188
+ * { type: 'text', text: 'system prompt', cache_control: { type: 'ephemeral' } },
189
+ * { type: 'text', text: 'project context', cache_control: { type: 'ephemeral' } },
190
+ * ]);
191
+ * // Returns: "a3f2c8b9..." (SHA-256 hash)
192
+ * ```
193
+ */
194
+ generateCacheKey(content) {
195
+ // Only hash content that will be cached
196
+ const cachedBlocks = content
197
+ .filter(c => 'cache_control' in c && c.cache_control)
198
+ .map(c => c.text);
199
+ if (cachedBlocks.length === 0) {
200
+ // No cached content, return empty key
201
+ return '';
202
+ }
203
+ // Hash concatenated text with separator
204
+ const text = cachedBlocks.join('|||CACHE_SEPARATOR|||');
205
+ return (0, crypto_1.createHash)('sha256').update(text).digest('hex');
206
+ }
207
+ /**
208
+ * Check if cache key exists and is fresh (within 5 minutes)
209
+ *
210
+ * @param cacheKey - Cache key to check
211
+ * @returns true if cache hit, false if cache miss
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * const isHit = cacheManager.isCacheHit('a3f2c8b9...');
216
+ * if (isHit) {
217
+ * console.log('Cache hit! Will save 90% on cached tokens');
218
+ * }
219
+ * ```
220
+ */
221
+ isCacheHit(cacheKey) {
222
+ if (!cacheKey)
223
+ return false;
224
+ const cached = this.cacheKeys.get(cacheKey);
225
+ if (!cached)
226
+ return false;
227
+ const age = Date.now() - cached.timestamp;
228
+ return age < this.CACHE_TTL;
229
+ }
230
+ /**
231
+ * Update cache statistics from API response
232
+ *
233
+ * Tracks:
234
+ * - Cache creation tokens (write with 25% premium)
235
+ * - Cache read tokens (hit with 90% discount)
236
+ * - Regular input tokens (standard cost)
237
+ * - Cost savings calculation
238
+ *
239
+ * @param response - Anthropic API response
240
+ * @param wasHit - Whether this was a cache hit
241
+ */
242
+ updateStats(response, wasHit) {
243
+ // Extract usage from response
244
+ const usage = response.usage;
245
+ // Track cache write (cache creation)
246
+ if (usage?.cache_creation_input_tokens) {
247
+ const writeTokens = usage.cache_creation_input_tokens;
248
+ this.stats.tokensWritten += writeTokens;
249
+ // Cache write cost: 25% premium
250
+ const writeCost = writeTokens * this.CACHE_WRITE_PREMIUM * (this.COST_PER_MILLION / 1000000);
251
+ // Regular cost would have been
252
+ const regularCost = writeTokens * (this.COST_PER_MILLION / 1000000);
253
+ // Negative savings because write is more expensive
254
+ this.stats.costSavings -= (writeCost - regularCost);
255
+ }
256
+ // Track cache hit (cache read)
257
+ if (usage?.cache_read_input_tokens) {
258
+ const readTokens = usage.cache_read_input_tokens;
259
+ this.stats.tokensRead += readTokens;
260
+ // Cache read cost: 90% discount (10% of regular cost)
261
+ const readCost = readTokens * this.CACHE_READ_DISCOUNT * (this.COST_PER_MILLION / 1000000);
262
+ // Regular cost would have been
263
+ const regularCost = readTokens * (this.COST_PER_MILLION / 1000000);
264
+ // Positive savings from cache hit
265
+ this.stats.costSavings += (regularCost - readCost);
266
+ }
267
+ // Track regular input tokens
268
+ if (usage?.input_tokens) {
269
+ // Total input tokens includes cache tokens, so subtract cached portions
270
+ const cacheCreation = usage.cache_creation_input_tokens || 0;
271
+ const cacheRead = usage.cache_read_input_tokens || 0;
272
+ const regularTokens = usage.input_tokens - cacheCreation - cacheRead;
273
+ this.stats.tokensRegular += regularTokens;
274
+ }
275
+ // Update hit rate
276
+ const total = this.stats.hits + this.stats.misses;
277
+ this.stats.hitRate = total > 0 ? this.stats.hits / total : 0;
278
+ }
279
+ /**
280
+ * Get cache statistics
281
+ *
282
+ * @returns Current cache statistics including hit rate and cost savings
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * const stats = cacheManager.getStats();
287
+ * console.log(`Hit rate: ${(stats.hitRate * 100).toFixed(1)}%`);
288
+ * console.log(`Cost savings: $${stats.costSavings.toFixed(4)}`);
289
+ * console.log(`Total hits: ${stats.hits}, misses: ${stats.misses}`);
290
+ * ```
291
+ */
292
+ getStats() {
293
+ return { ...this.stats };
294
+ }
295
+ /**
296
+ * Clear cache keys older than TTL
297
+ *
298
+ * Automatically prunes expired cache entries to prevent memory bloat.
299
+ * Should be called periodically in long-running processes.
300
+ *
301
+ * @returns Number of entries pruned
302
+ *
303
+ * @example
304
+ * ```typescript
305
+ * // Run every 5 minutes
306
+ * setInterval(() => {
307
+ * const pruned = cacheManager.pruneCache();
308
+ * console.log(`Pruned ${pruned} expired cache entries`);
309
+ * }, 5 * 60 * 1000);
310
+ * ```
311
+ */
312
+ pruneCache() {
313
+ const now = Date.now();
314
+ let pruned = 0;
315
+ // Convert to array to avoid iterator issues with older TypeScript targets
316
+ const entries = Array.from(this.cacheKeys.entries());
317
+ for (let i = 0; i < entries.length; i++) {
318
+ const [key, value] = entries[i];
319
+ if (now - value.timestamp > this.CACHE_TTL) {
320
+ this.cacheKeys.delete(key);
321
+ pruned++;
322
+ }
323
+ }
324
+ return pruned;
325
+ }
326
+ /**
327
+ * Reset statistics
328
+ *
329
+ * Clears all cache statistics. Useful for testing or when starting
330
+ * a new measurement period.
331
+ *
332
+ * @example
333
+ * ```typescript
334
+ * // Reset stats at start of each day
335
+ * cacheManager.resetStats();
336
+ * ```
337
+ */
338
+ resetStats() {
339
+ this.stats = {
340
+ hits: 0,
341
+ misses: 0,
342
+ writes: 0,
343
+ hitRate: 0,
344
+ costSavings: 0,
345
+ tokensWritten: 0,
346
+ tokensRead: 0,
347
+ tokensRegular: 0,
348
+ };
349
+ }
350
+ /**
351
+ * Clear all cache keys
352
+ *
353
+ * Removes all cache entries. Does not affect statistics.
354
+ *
355
+ * @example
356
+ * ```typescript
357
+ * // Clear cache when deploying new version
358
+ * cacheManager.clearCache();
359
+ * ```
360
+ */
361
+ clearCache() {
362
+ this.cacheKeys.clear();
363
+ }
364
+ /**
365
+ * Check if content should be cached based on token count
366
+ *
367
+ * Anthropic requires minimum 1024 tokens for caching to be effective.
368
+ *
369
+ * @param text - Text content to check
370
+ * @returns true if content is large enough to cache
371
+ */
372
+ shouldCache(text) {
373
+ // Rough estimate: 4 characters per token (conservative)
374
+ const estimatedTokens = text.length / 4;
375
+ return estimatedTokens >= this.MIN_CACHE_TOKENS;
376
+ }
377
+ /**
378
+ * Estimate token count for content blocks
379
+ *
380
+ * Uses rough heuristic: 4 characters per token (conservative estimate)
381
+ *
382
+ * @param content - Text blocks to estimate
383
+ * @returns Estimated token count
384
+ */
385
+ estimateTokens(content) {
386
+ const totalChars = content.reduce((sum, block) => sum + block.text.length, 0);
387
+ return Math.ceil(totalChars / 4);
388
+ }
389
+ /**
390
+ * Get cache size (number of entries)
391
+ *
392
+ * @returns Number of cache entries
393
+ */
394
+ getCacheSize() {
395
+ return this.cacheKeys.size;
396
+ }
397
+ /**
398
+ * Get expected hit rate target
399
+ *
400
+ * According to the MCP improvement plan, we should target
401
+ * 60-80% cache hit rate over 5-minute windows.
402
+ *
403
+ * @returns Target hit rate range
404
+ */
405
+ static getTargetHitRate() {
406
+ return { min: 0.6, max: 0.8 };
407
+ }
408
+ /**
409
+ * Calculate break-even point
410
+ *
411
+ * Cache writes cost 25% more than regular calls.
412
+ * Cache hits save 90% on cached tokens.
413
+ *
414
+ * Break-even: 1 write + N hits where total cost equals regular cost
415
+ *
416
+ * @param cacheTokens - Number of tokens in cached content
417
+ * @returns Number of hits needed to break even
418
+ */
419
+ static calculateBreakEven(cacheTokens) {
420
+ const WRITE_PREMIUM = 1.25;
421
+ const READ_DISCOUNT = 0.1;
422
+ const COST_PER_MILLION = 3.0;
423
+ // Cost of cache write vs regular
424
+ const writeCost = cacheTokens * WRITE_PREMIUM * (COST_PER_MILLION / 1000000);
425
+ const regularCost = cacheTokens * (COST_PER_MILLION / 1000000);
426
+ const writeOverhead = writeCost - regularCost;
427
+ // Savings per cache hit
428
+ const hitSavings = regularCost - (cacheTokens * READ_DISCOUNT * (COST_PER_MILLION / 1000000));
429
+ // Hits needed to break even
430
+ const hitsToBreakEven = Math.ceil(writeOverhead / hitSavings);
431
+ // Calculate savings at different hit counts
432
+ const calculateTotal = (hits) => {
433
+ const totalRegular = regularCost * (1 + hits);
434
+ const totalCached = writeCost + (hits * cacheTokens * READ_DISCOUNT * (COST_PER_MILLION / 1000000));
435
+ return totalRegular - totalCached;
436
+ };
437
+ return {
438
+ hitsToBreakEven,
439
+ savings: {
440
+ atBreakEven: calculateTotal(hitsToBreakEven),
441
+ at5Hits: calculateTotal(5),
442
+ at10Hits: calculateTotal(10),
443
+ },
444
+ };
445
+ }
446
+ }
447
+ exports.PromptCacheManager = PromptCacheManager;
448
+ //# sourceMappingURL=prompt-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-cache.js","sourceRoot":"","sources":["../../src/utils/prompt-cache.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "1.7.0",
4
- "description": "Agentic Quality Engineering Fleet System - AI-driven quality management platform with 37 QE skills, learning, pattern reuse, ML-based flaky detection, Multi-Model Router (70-81% cost savings), streaming progress updates, 102 MCP tools, and native TypeScript hooks",
3
+ "version": "1.8.1",
4
+ "description": "Agentic Quality Engineering Fleet System - AI-driven quality management platform with 38 QE skills, learning, pattern reuse, ML-based flaky detection, Multi-Model Router (70-81% cost savings), streaming progress updates, 102 MCP tools, and native TypeScript hooks",
5
5
  "main": "dist/cli/index.js",
6
6
  "types": "dist/cli/index.d.ts",
7
7
  "bin": {
@@ -84,7 +84,10 @@
84
84
  "verify:features": "tsx scripts/verify-features.ts",
85
85
  "verify:all": "npm run verify:counts && npm run verify:agent-skills && npm run verify:features",
86
86
  "update:counts": "tsx scripts/update-documentation-counts.ts",
87
- "migrate:learning": "tsx scripts/migrate-learning-schema.ts"
87
+ "migrate:learning": "tsx scripts/migrate-learning-schema.ts",
88
+ "migrate:agentdb": "tsx scripts/migrate-to-agentdb.ts",
89
+ "migrate:dry-run": "tsx scripts/migrate-to-agentdb.ts --dry-run",
90
+ "migrate:rollback": "tsx scripts/rollback-migration.ts"
88
91
  },
89
92
  "keywords": [
90
93
  "quality-engineering",
@@ -113,7 +116,6 @@
113
116
  "@anthropic-ai/sdk": "^0.64.0",
114
117
  "@babel/parser": "^7.24.0",
115
118
  "@babel/traverse": "^7.24.0",
116
- "@faker-js/faker": "^10.0.0",
117
119
  "@modelcontextprotocol/sdk": "^1.21.1",
118
120
  "@xenova/transformers": "^2.6.0",
119
121
  "agentdb": "^1.0.0",
@@ -123,17 +125,14 @@
123
125
  "better-sqlite3": "^12.4.1",
124
126
  "chalk": "^4.1.2",
125
127
  "chokidar": "^3.6.0",
126
- "claude-flow": "^2.7.31",
127
128
  "cli-table3": "^0.6.5",
128
129
  "commander": "^14.0.1",
129
- "dotenv": "^17.2.3",
130
130
  "fs-extra": "^11.1.1",
131
131
  "graphql": "^16.11.0",
132
132
  "inquirer": "^8.2.6",
133
133
  "ora": "^5.4.1",
134
134
  "uuid": "^11.0.5",
135
135
  "winston": "^3.18.3",
136
- "ws": "^8.14.2",
137
136
  "yaml": "^2.8.1"
138
137
  },
139
138
  "resolutions": {
@@ -152,17 +151,12 @@
152
151
  "@types/jest": "^30.0.0",
153
152
  "@types/node": "^20.19.17",
154
153
  "@types/uuid": "^10.0.0",
155
- "@types/ws": "^8.5.10",
156
154
  "@typescript-eslint/eslint-plugin": "^6.13.0",
157
155
  "@typescript-eslint/parser": "^6.13.0",
158
- "ajv": "^8.17.1",
159
- "ajv-formats": "^3.0.1",
160
- "commander": "^14.0.1",
161
156
  "dotenv": "^17.2.3",
162
157
  "eslint": "^8.55.0",
163
158
  "eslint-plugin-security": "^3.0.1",
164
159
  "graceful-fs": "^4.2.11",
165
- "graphql": "^16.11.0",
166
160
  "istanbul-lib-coverage": "^3.2.2",
167
161
  "jest": "^30.2.0",
168
162
  "jest-extended": "^6.0.0",
@@ -173,10 +167,7 @@
173
167
  "ts-node": "^10.9.1",
174
168
  "tsx": "^4.20.6",
175
169
  "typedoc": "^0.28.13",
176
- "typescript": "^5.9.3",
177
- "uuid": "^11.0.5",
178
- "winston": "^3.18.3",
179
- "yaml": "^2.8.1"
170
+ "typescript": "^5.9.3"
180
171
  },
181
172
  "engines": {
182
173
  "node": ">=18.0.0",