agentic-qe 1.6.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/.claude/skills/sherlock-review/SKILL.md +786 -0
  2. package/CHANGELOG.md +651 -0
  3. package/README.md +52 -8
  4. package/dist/agents/BaseAgent.d.ts +30 -10
  5. package/dist/agents/BaseAgent.d.ts.map +1 -1
  6. package/dist/agents/BaseAgent.js +115 -43
  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/FleetCommanderAgent.d.ts +16 -0
  11. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  12. package/dist/agents/FleetCommanderAgent.js +35 -20
  13. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  14. package/dist/agents/LearningAgent.d.ts +2 -2
  15. package/dist/agents/LearningAgent.d.ts.map +1 -1
  16. package/dist/agents/LearningAgent.js +4 -4
  17. package/dist/agents/LearningAgent.js.map +1 -1
  18. package/dist/agents/TestExecutorAgent.d.ts +9 -0
  19. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  20. package/dist/agents/TestExecutorAgent.js +60 -0
  21. package/dist/agents/TestExecutorAgent.js.map +1 -1
  22. package/dist/agents/examples/batchAnalyze.d.ts +252 -0
  23. package/dist/agents/examples/batchAnalyze.d.ts.map +1 -0
  24. package/dist/agents/examples/batchAnalyze.js +259 -0
  25. package/dist/agents/examples/batchAnalyze.js.map +1 -0
  26. package/dist/agents/examples/batchGenerate.d.ts +153 -0
  27. package/dist/agents/examples/batchGenerate.d.ts.map +1 -0
  28. package/dist/agents/examples/batchGenerate.js +166 -0
  29. package/dist/agents/examples/batchGenerate.js.map +1 -0
  30. package/dist/agents/generateWithPII.d.ts +128 -0
  31. package/dist/agents/generateWithPII.d.ts.map +1 -0
  32. package/dist/agents/generateWithPII.js +175 -0
  33. package/dist/agents/generateWithPII.js.map +1 -0
  34. package/dist/agents/index.d.ts.map +1 -1
  35. package/dist/agents/index.js +0 -2
  36. package/dist/agents/index.js.map +1 -1
  37. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts +5 -0
  38. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  39. package/dist/agents/lifecycle/AgentLifecycleManager.js +10 -0
  40. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  41. package/dist/cli/commands/agentdb/learn.d.ts.map +1 -1
  42. package/dist/cli/commands/agentdb/learn.js +190 -71
  43. package/dist/cli/commands/agentdb/learn.js.map +1 -1
  44. package/dist/cli/commands/debug/agent.d.ts.map +1 -1
  45. package/dist/cli/commands/debug/agent.js +40 -13
  46. package/dist/cli/commands/debug/agent.js.map +1 -1
  47. package/dist/cli/commands/debug/diagnostics.js +38 -11
  48. package/dist/cli/commands/debug/diagnostics.js.map +1 -1
  49. package/dist/cli/commands/debug/health-check.js +47 -12
  50. package/dist/cli/commands/debug/health-check.js.map +1 -1
  51. package/dist/cli/commands/debug/profile.js +7 -7
  52. package/dist/cli/commands/debug/profile.js.map +1 -1
  53. package/dist/cli/commands/debug/trace.js +4 -4
  54. package/dist/cli/commands/debug/trace.js.map +1 -1
  55. package/dist/cli/commands/debug/troubleshoot.js +41 -27
  56. package/dist/cli/commands/debug/troubleshoot.js.map +1 -1
  57. package/dist/cli/commands/init.d.ts +6 -3
  58. package/dist/cli/commands/init.d.ts.map +1 -1
  59. package/dist/cli/commands/init.js +71 -54
  60. package/dist/cli/commands/init.js.map +1 -1
  61. package/dist/cli/commands/learn/index.d.ts +4 -0
  62. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  63. package/dist/cli/commands/learn/index.js +57 -0
  64. package/dist/cli/commands/learn/index.js.map +1 -1
  65. package/dist/cli/commands/test/clean.d.ts.map +1 -1
  66. package/dist/cli/commands/test/clean.js +26 -9
  67. package/dist/cli/commands/test/clean.js.map +1 -1
  68. package/dist/cli/commands/test/debug.js +6 -7
  69. package/dist/cli/commands/test/debug.js.map +1 -1
  70. package/dist/cli/commands/test/diff.js +4 -37
  71. package/dist/cli/commands/test/diff.js.map +1 -1
  72. package/dist/cli/commands/test/profile.js +7 -40
  73. package/dist/cli/commands/test/profile.js.map +1 -1
  74. package/dist/cli/commands/test/trace.js +4 -37
  75. package/dist/cli/commands/test/trace.js.map +1 -1
  76. package/dist/cli/index.js +14 -0
  77. package/dist/cli/index.js.map +1 -1
  78. package/dist/core/ArtifactWorkflow.d.ts +4 -0
  79. package/dist/core/ArtifactWorkflow.d.ts.map +1 -1
  80. package/dist/core/ArtifactWorkflow.js +34 -13
  81. package/dist/core/ArtifactWorkflow.js.map +1 -1
  82. package/dist/core/coordination/BlackboardCoordination.d.ts +4 -0
  83. package/dist/core/coordination/BlackboardCoordination.d.ts.map +1 -1
  84. package/dist/core/coordination/BlackboardCoordination.js +28 -22
  85. package/dist/core/coordination/BlackboardCoordination.js.map +1 -1
  86. package/dist/core/coordination/ConsensusGating.d.ts +4 -0
  87. package/dist/core/coordination/ConsensusGating.d.ts.map +1 -1
  88. package/dist/core/coordination/ConsensusGating.js +25 -18
  89. package/dist/core/coordination/ConsensusGating.js.map +1 -1
  90. package/dist/core/memory/AgentDBManager.d.ts +5 -0
  91. package/dist/core/memory/AgentDBManager.d.ts.map +1 -1
  92. package/dist/core/memory/AgentDBManager.js +19 -1
  93. package/dist/core/memory/AgentDBManager.js.map +1 -1
  94. package/dist/core/memory/AgentDBService.d.ts.map +1 -1
  95. package/dist/core/memory/AgentDBService.js +6 -3
  96. package/dist/core/memory/AgentDBService.js.map +1 -1
  97. package/dist/core/memory/RealAgentDBAdapter.d.ts +8 -0
  98. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  99. package/dist/core/memory/RealAgentDBAdapter.js +74 -17
  100. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  101. package/dist/core/memory/ReasoningBankAdapter.d.ts +4 -0
  102. package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -1
  103. package/dist/core/memory/ReasoningBankAdapter.js +20 -0
  104. package/dist/core/memory/ReasoningBankAdapter.js.map +1 -1
  105. package/dist/core/memory/SwarmMemoryManager.d.ts +8 -0
  106. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  107. package/dist/core/memory/SwarmMemoryManager.js +33 -0
  108. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  109. package/dist/learning/ImprovementLoop.js +2 -2
  110. package/dist/learning/ImprovementLoop.js.map +1 -1
  111. package/dist/learning/LearningEngine.d.ts +11 -7
  112. package/dist/learning/LearningEngine.d.ts.map +1 -1
  113. package/dist/learning/LearningEngine.js +157 -73
  114. package/dist/learning/LearningEngine.js.map +1 -1
  115. package/dist/learning/StateExtractor.d.ts +1 -1
  116. package/dist/learning/StateExtractor.d.ts.map +1 -1
  117. package/dist/learning/StateExtractor.js +62 -13
  118. package/dist/learning/StateExtractor.js.map +1 -1
  119. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +83 -0
  120. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +1 -0
  121. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +130 -0
  122. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +1 -0
  123. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +58 -0
  124. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +1 -0
  125. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +84 -0
  126. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +1 -0
  127. package/dist/mcp/handlers/filtered/index.d.ts +47 -0
  128. package/dist/mcp/handlers/filtered/index.d.ts.map +1 -0
  129. package/dist/mcp/handlers/filtered/index.js +63 -0
  130. package/dist/mcp/handlers/filtered/index.js.map +1 -0
  131. package/dist/mcp/handlers/filtered/performance-tester-filtered.d.ts +57 -0
  132. package/dist/mcp/handlers/filtered/performance-tester-filtered.d.ts.map +1 -0
  133. package/dist/mcp/handlers/filtered/performance-tester-filtered.js +83 -0
  134. package/dist/mcp/handlers/filtered/performance-tester-filtered.js.map +1 -0
  135. package/dist/mcp/handlers/filtered/quality-assessor-filtered.d.ts +57 -0
  136. package/dist/mcp/handlers/filtered/quality-assessor-filtered.d.ts.map +1 -0
  137. package/dist/mcp/handlers/filtered/quality-assessor-filtered.js +93 -0
  138. package/dist/mcp/handlers/filtered/quality-assessor-filtered.js.map +1 -0
  139. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +54 -0
  140. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +1 -0
  141. package/dist/mcp/handlers/filtered/security-scanner-filtered.js +73 -0
  142. package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +1 -0
  143. package/dist/mcp/handlers/filtered/test-executor-filtered.d.ts +61 -0
  144. package/dist/mcp/handlers/filtered/test-executor-filtered.d.ts.map +1 -0
  145. package/dist/mcp/handlers/filtered/test-executor-filtered.js +117 -0
  146. package/dist/mcp/handlers/filtered/test-executor-filtered.js.map +1 -0
  147. package/dist/mcp/handlers/phase2/Phase2Tools.js +2 -2
  148. package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
  149. package/dist/mcp/tools/deprecated.d.ts +8 -8
  150. package/dist/scripts/backup-helper.d.ts +64 -0
  151. package/dist/scripts/backup-helper.d.ts.map +1 -0
  152. package/dist/scripts/backup-helper.js +251 -0
  153. package/dist/scripts/backup-helper.js.map +1 -0
  154. package/dist/scripts/migrate-with-backup.d.ts +15 -0
  155. package/dist/scripts/migrate-with-backup.d.ts.map +1 -0
  156. package/dist/scripts/migrate-with-backup.js +194 -0
  157. package/dist/scripts/migrate-with-backup.js.map +1 -0
  158. package/dist/security/pii-tokenization.d.ts +216 -0
  159. package/dist/security/pii-tokenization.d.ts.map +1 -0
  160. package/dist/security/pii-tokenization.js +325 -0
  161. package/dist/security/pii-tokenization.js.map +1 -0
  162. package/dist/utils/Config.d.ts.map +1 -1
  163. package/dist/utils/Config.js +14 -5
  164. package/dist/utils/Config.js.map +1 -1
  165. package/dist/utils/Database.d.ts.map +1 -1
  166. package/dist/utils/Database.js +5 -2
  167. package/dist/utils/Database.js.map +1 -1
  168. package/dist/utils/EmbeddingGenerator.d.ts +35 -0
  169. package/dist/utils/EmbeddingGenerator.d.ts.map +1 -0
  170. package/dist/utils/EmbeddingGenerator.js +72 -0
  171. package/dist/utils/EmbeddingGenerator.js.map +1 -0
  172. package/dist/utils/Logger.d.ts +1 -1
  173. package/dist/utils/Logger.d.ts.map +1 -1
  174. package/dist/utils/Logger.js +4 -4
  175. package/dist/utils/Logger.js.map +1 -1
  176. package/dist/utils/SecurityScanner.js +1 -1
  177. package/dist/utils/SecurityScanner.js.map +1 -1
  178. package/dist/utils/batch-operations.d.ts +215 -0
  179. package/dist/utils/batch-operations.d.ts.map +1 -0
  180. package/dist/utils/batch-operations.js +266 -0
  181. package/dist/utils/batch-operations.js.map +1 -0
  182. package/dist/utils/filtering.d.ts +180 -0
  183. package/dist/utils/filtering.d.ts.map +1 -0
  184. package/dist/utils/filtering.js +288 -0
  185. package/dist/utils/filtering.js.map +1 -0
  186. package/dist/utils/prompt-cache-examples.d.ts +111 -0
  187. package/dist/utils/prompt-cache-examples.d.ts.map +1 -0
  188. package/dist/utils/prompt-cache-examples.js +416 -0
  189. package/dist/utils/prompt-cache-examples.js.map +1 -0
  190. package/dist/utils/prompt-cache.d.ts +305 -0
  191. package/dist/utils/prompt-cache.d.ts.map +1 -0
  192. package/dist/utils/prompt-cache.js +448 -0
  193. package/dist/utils/prompt-cache.js.map +1 -0
  194. package/package.json +6 -3
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * Batch Operation Manager (QW-2)
4
+ *
5
+ * Provides efficient batch execution of independent operations with:
6
+ * - Concurrency control (max parallel operations)
7
+ * - Automatic retry with exponential backoff
8
+ * - Timeout handling per operation
9
+ * - Error aggregation and reporting
10
+ *
11
+ * Performance Impact:
12
+ * - 60-80% latency reduction (5s → 0.5s for typical workflows)
13
+ * - 80% fewer API calls (100 sequential → 20 batched)
14
+ * - 3-5x speedup on multi-file operations
15
+ *
16
+ * @module utils/batch-operations
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.batchManager = exports.BatchOperationManager = exports.BatchOperationError = exports.TimeoutError = void 0;
20
+ exports.executeBatch = executeBatch;
21
+ /**
22
+ * Custom error for timeout scenarios
23
+ */
24
+ class TimeoutError extends Error {
25
+ constructor(message, timeoutMs) {
26
+ super(message);
27
+ this.timeoutMs = timeoutMs;
28
+ this.name = 'TimeoutError';
29
+ }
30
+ }
31
+ exports.TimeoutError = TimeoutError;
32
+ /**
33
+ * Custom error for batch operation failures
34
+ */
35
+ class BatchOperationError extends Error {
36
+ constructor(message, errors, successCount, totalCount) {
37
+ super(message);
38
+ this.errors = errors;
39
+ this.successCount = successCount;
40
+ this.totalCount = totalCount;
41
+ this.name = 'BatchOperationError';
42
+ }
43
+ }
44
+ exports.BatchOperationError = BatchOperationError;
45
+ /**
46
+ * Batch Operation Manager
47
+ *
48
+ * Executes multiple independent operations in parallel batches with
49
+ * automatic retry, timeout handling, and error recovery.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const batchManager = new BatchOperationManager();
54
+ *
55
+ * const result = await batchManager.batchExecute(
56
+ * ['file1.ts', 'file2.ts', 'file3.ts'],
57
+ * async (file) => await analyzeFile(file),
58
+ * {
59
+ * maxConcurrent: 5,
60
+ * timeout: 60000,
61
+ * retryOnError: true,
62
+ * maxRetries: 3,
63
+ * onProgress: (completed, total) => {
64
+ * console.log(`Progress: ${completed}/${total}`);
65
+ * }
66
+ * }
67
+ * );
68
+ *
69
+ * console.log(`Success rate: ${result.successRate * 100}%`);
70
+ * console.log(`Total time: ${result.totalTime}ms`);
71
+ * ```
72
+ */
73
+ class BatchOperationManager {
74
+ /**
75
+ * Execute multiple operations in parallel batches
76
+ *
77
+ * Operations are executed in batches of `maxConcurrent` at a time.
78
+ * Failed operations are retried with exponential backoff.
79
+ *
80
+ * @param operations - Array of input data for operations
81
+ * @param handler - Function to execute for each operation
82
+ * @param options - Batch execution options
83
+ * @returns Promise resolving to batch results
84
+ * @throws {BatchOperationError} If failFast is true and any operation fails
85
+ */
86
+ async batchExecute(operations, handler, options = {}) {
87
+ const { maxConcurrent = BatchOperationManager.DEFAULT_MAX_CONCURRENT, timeout = BatchOperationManager.DEFAULT_TIMEOUT, retryOnError = true, maxRetries = BatchOperationManager.DEFAULT_MAX_RETRIES, failFast = false, onProgress, } = options;
88
+ const startTime = Date.now();
89
+ const results = new Array(operations.length);
90
+ const errors = [];
91
+ const failedIndices = new Set(); // Track indices that failed
92
+ let totalRetries = 0;
93
+ let completed = 0;
94
+ // Process in batches
95
+ for (let i = 0; i < operations.length; i += maxConcurrent) {
96
+ const batch = operations.slice(i, i + maxConcurrent);
97
+ const batchIndices = Array.from({ length: batch.length }, (_, idx) => i + idx);
98
+ // Execute batch in parallel
99
+ const batchPromises = batch.map((op, batchIdx) => {
100
+ const globalIdx = batchIndices[batchIdx];
101
+ return this.executeWithRetry(handler, op, {
102
+ timeout,
103
+ retryOnError,
104
+ maxRetries,
105
+ })
106
+ .then((result) => {
107
+ results[globalIdx] = result.value;
108
+ totalRetries += result.retriesAttempted;
109
+ completed++;
110
+ onProgress?.(completed, operations.length);
111
+ return { success: true, index: globalIdx, result: result.value };
112
+ })
113
+ .catch((error) => {
114
+ const batchError = {
115
+ index: globalIdx,
116
+ operation: op,
117
+ error: error instanceof Error ? error : new Error(String(error)),
118
+ retriesAttempted: error.retriesAttempted || 0,
119
+ };
120
+ errors.push(batchError);
121
+ failedIndices.add(globalIdx); // Mark this index as failed
122
+ totalRetries += error.retriesAttempted || 0;
123
+ completed++;
124
+ onProgress?.(completed, operations.length);
125
+ if (failFast) {
126
+ throw new BatchOperationError(`Operation failed at index ${globalIdx}: ${error.message}`, [batchError], completed - 1, operations.length);
127
+ }
128
+ return { success: false, index: globalIdx, error: batchError };
129
+ });
130
+ });
131
+ // Wait for batch to complete
132
+ await Promise.all(batchPromises);
133
+ }
134
+ const totalTime = Date.now() - startTime;
135
+ const successCount = operations.length - failedIndices.size;
136
+ const successRate = operations.length > 0 ? successCount / operations.length : 0;
137
+ // Filter out failed operations (not falsy values!)
138
+ // Only exclude results from indices that actually failed
139
+ const validResults = results.filter((r, idx) => !failedIndices.has(idx));
140
+ const batchResult = {
141
+ results: validResults,
142
+ errors,
143
+ totalTime,
144
+ totalRetries,
145
+ successRate,
146
+ };
147
+ // If there were errors and we didn't fail fast, still return the results
148
+ // but log warnings
149
+ if (errors.length > 0 && !failFast) {
150
+ console.warn(`Batch execution completed with ${errors.length} error(s) out of ${operations.length} operations`);
151
+ }
152
+ return batchResult;
153
+ }
154
+ /**
155
+ * Execute single operation with timeout and retry logic
156
+ *
157
+ * Implements exponential backoff: min(1000 * 2^attempt, 10000)
158
+ *
159
+ * @param handler - Operation handler function
160
+ * @param op - Operation input data
161
+ * @param options - Execution options
162
+ * @returns Promise resolving to operation result with metadata
163
+ * @throws Error if all retry attempts fail
164
+ * @private
165
+ */
166
+ async executeWithRetry(handler, op, options) {
167
+ const maxRetries = options.retryOnError ? options.maxRetries : 0;
168
+ let lastError;
169
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
170
+ try {
171
+ // Execute with timeout
172
+ const result = await this.executeWithTimeout(handler, op, options.timeout);
173
+ return { value: result, retriesAttempted: attempt };
174
+ }
175
+ catch (error) {
176
+ lastError = error instanceof Error ? error : new Error(String(error));
177
+ // Don't retry on last attempt
178
+ if (attempt === maxRetries) {
179
+ break;
180
+ }
181
+ // Exponential backoff: min(1000 * 2^attempt, 10000)
182
+ const backoffDelay = Math.min(BatchOperationManager.MIN_BACKOFF * Math.pow(2, attempt), BatchOperationManager.MAX_BACKOFF);
183
+ // Log retry attempt
184
+ console.debug(`Retry attempt ${attempt + 1}/${maxRetries} after ${backoffDelay}ms for operation`);
185
+ // Wait before retrying
186
+ await this.sleep(backoffDelay);
187
+ }
188
+ }
189
+ // All retries exhausted
190
+ const error = lastError || new Error('Operation failed');
191
+ error.retriesAttempted = maxRetries;
192
+ throw error;
193
+ }
194
+ /**
195
+ * Execute operation with timeout
196
+ *
197
+ * @param handler - Operation handler function
198
+ * @param op - Operation input data
199
+ * @param timeoutMs - Timeout in milliseconds
200
+ * @returns Promise resolving to operation result
201
+ * @throws {TimeoutError} if operation exceeds timeout
202
+ * @private
203
+ */
204
+ async executeWithTimeout(handler, op, timeoutMs) {
205
+ let timeoutHandle;
206
+ const timeoutPromise = new Promise((_, reject) => {
207
+ timeoutHandle = setTimeout(() => reject(new TimeoutError('Operation timeout', timeoutMs)), timeoutMs);
208
+ });
209
+ try {
210
+ const result = await Promise.race([handler(op), timeoutPromise]);
211
+ return result;
212
+ }
213
+ finally {
214
+ // Clean up timeout handle to prevent memory leaks
215
+ if (timeoutHandle) {
216
+ clearTimeout(timeoutHandle);
217
+ }
218
+ }
219
+ }
220
+ /**
221
+ * Sleep for specified milliseconds
222
+ *
223
+ * @param ms - Milliseconds to sleep
224
+ * @returns Promise that resolves after delay
225
+ * @private
226
+ */
227
+ sleep(ms) {
228
+ return new Promise((resolve) => setTimeout(resolve, ms));
229
+ }
230
+ /**
231
+ * Execute operations sequentially (useful for dependent operations)
232
+ *
233
+ * @param operations - Array of input data for operations
234
+ * @param handler - Function to execute for each operation
235
+ * @param options - Execution options (timeout, retry)
236
+ * @returns Promise resolving to array of results
237
+ */
238
+ async sequentialExecute(operations, handler, options = {}) {
239
+ return this.batchExecute(operations, handler, {
240
+ ...options,
241
+ maxConcurrent: 1,
242
+ });
243
+ }
244
+ }
245
+ exports.BatchOperationManager = BatchOperationManager;
246
+ BatchOperationManager.DEFAULT_MAX_CONCURRENT = 5;
247
+ BatchOperationManager.DEFAULT_TIMEOUT = 60000; // 60 seconds
248
+ BatchOperationManager.DEFAULT_MAX_RETRIES = 3;
249
+ BatchOperationManager.MIN_BACKOFF = 1000; // 1 second
250
+ BatchOperationManager.MAX_BACKOFF = 10000; // 10 seconds
251
+ /**
252
+ * Default singleton instance
253
+ */
254
+ exports.batchManager = new BatchOperationManager();
255
+ /**
256
+ * Convenience function for batch execution
257
+ *
258
+ * @param operations - Array of input data for operations
259
+ * @param handler - Function to execute for each operation
260
+ * @param options - Batch execution options
261
+ * @returns Promise resolving to batch results
262
+ */
263
+ async function executeBatch(operations, handler, options) {
264
+ return exports.batchManager.batchExecute(operations, handler, options);
265
+ }
266
+ //# sourceMappingURL=batch-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-operations.js","sourceRoot":"","sources":["../../src/utils/batch-operations.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AA4ZH,oCAMC;AAjUD;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe,EAAkB,SAAiB;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,cAAS,GAAT,SAAS,CAAQ;QAE5D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YACE,OAAe,EACC,MAAoB,EACpB,YAAoB,EACpB,UAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,WAAM,GAAN,MAAM,CAAc;QACpB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAVD,kDAUC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,qBAAqB;IAOhC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,YAAY,CAChB,UAAe,EACf,OAA8B,EAC9B,UAAwB,EAAE;QAE1B,MAAM,EACJ,aAAa,GAAG,qBAAqB,CAAC,sBAAsB,EAC5D,OAAO,GAAG,qBAAqB,CAAC,eAAe,EAC/C,YAAY,GAAG,IAAI,EACnB,UAAU,GAAG,qBAAqB,CAAC,mBAAmB,EACtD,QAAQ,GAAG,KAAK,EAChB,UAAU,GACX,GAAG,OAAO,CAAC;QAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAsB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,4BAA4B;QACrE,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,qBAAqB;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EACxB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CACpB,CAAC;YAEF,4BAA4B;YAC5B,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE;gBAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC,gBAAgB,CAC1B,OAAO,EACP,EAAE,EACF;oBACE,OAAO;oBACP,YAAY;oBACZ,UAAU;iBACX,CACF;qBACE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACf,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;oBAClC,YAAY,IAAI,MAAM,CAAC,gBAAgB,CAAC;oBACxC,SAAS,EAAE,CAAC;oBACZ,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;gBACnE,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACf,MAAM,UAAU,GAAe;wBAC7B,KAAK,EAAE,SAAS;wBAChB,SAAS,EAAE,EAAE;wBACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAChE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC;qBAC9C,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACxB,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B;oBAC1D,YAAY,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC;oBAC5C,SAAS,EAAE,CAAC;oBACZ,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBAE3C,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,mBAAmB,CAC3B,6BAA6B,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,EAC1D,CAAC,UAAU,CAAC,EACZ,SAAS,GAAG,CAAC,EACb,UAAU,CAAC,MAAM,CAClB,CAAC;oBACJ,CAAC;oBAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;gBACjE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,6BAA6B;YAC7B,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACzC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;QAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,mDAAmD;QACnD,yDAAyD;QACzD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAQ,CAAC;QAEhF,MAAM,WAAW,GAAmB;YAClC,OAAO,EAAE,YAAY;YACrB,MAAM;YACN,SAAS;YACT,YAAY;YACZ,WAAW;SACZ,CAAC;QAEF,yEAAyE;QACzE,mBAAmB;QACnB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,kCAAkC,MAAM,CAAC,MAAM,oBAAoB,UAAU,CAAC,MAAM,aAAa,CAClG,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;OAWG;IACK,KAAK,CAAC,gBAAgB,CAC5B,OAA8B,EAC9B,EAAK,EACL,OAIC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,SAA4B,CAAC;QAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,uBAAuB;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEtE,8BAA8B;gBAC9B,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC3B,MAAM;gBACR,CAAC;gBAED,oDAAoD;gBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,qBAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxD,qBAAqB,CAAC,WAAW,CAClC,CAAC;gBAEF,oBAAoB;gBACpB,OAAO,CAAC,KAAK,CACX,iBAAiB,OAAO,GAAG,CAAC,IAAI,UAAU,UAAU,YAAY,kBAAkB,CACnF,CAAC;gBAEF,uBAAuB;gBACvB,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,SAAS,IAAI,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxD,KAAa,CAAC,gBAAgB,GAAG,UAAU,CAAC;QAC7C,MAAM,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,kBAAkB,CAC9B,OAA8B,EAC9B,EAAK,EACL,SAAiB;QAEjB,IAAI,aAAyC,CAAC;QAE9C,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACtD,aAAa,GAAG,UAAU,CACxB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,EAC9D,SAAS,CACV,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;YACjE,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,kDAAkD;YAClD,IAAI,aAAa,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,iBAAiB,CACrB,UAAe,EACf,OAA8B,EAC9B,UAA+C,EAAE;QAEjD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE;YAC5C,GAAG,OAAO;YACV,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;;AAtPH,sDAuPC;AAtPyB,4CAAsB,GAAG,CAAC,CAAC;AAC3B,qCAAe,GAAG,KAAK,CAAC,CAAC,aAAa;AACtC,yCAAmB,GAAG,CAAC,CAAC;AACxB,iCAAW,GAAG,IAAI,CAAC,CAAC,WAAW;AAC/B,iCAAW,GAAG,KAAK,CAAC,CAAC,aAAa;AAoP5D;;GAEG;AACU,QAAA,YAAY,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAExD;;;;;;;GAOG;AACI,KAAK,UAAU,YAAY,CAChC,UAAe,EACf,OAA8B,EAC9B,OAAsB;IAEtB,OAAO,oBAAY,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Client-Side Data Filtering Layer (QW-1)
3
+ *
4
+ * Processes full datasets locally and returns only top-N items + summary statistics.
5
+ * Reduces output tokens by 95%+ while maintaining complete data analysis.
6
+ *
7
+ * **Performance Impact:**
8
+ * - Coverage analysis: 50,000 → 500 tokens (99% reduction)
9
+ * - Test execution: 30,000 → 800 tokens (97.3% reduction)
10
+ * - Quality assessment: 20,000 → 500 tokens (97.5% reduction)
11
+ *
12
+ * @version 1.0.0
13
+ * @author Agentic QE Team
14
+ * @see docs/planning/mcp-improvement-plan-revised.md (QW-1 section)
15
+ */
16
+ /**
17
+ * Filter configuration options
18
+ */
19
+ export interface FilterConfig {
20
+ /**
21
+ * Threshold value for filtering (context-dependent)
22
+ * - Coverage: minimum coverage percentage (e.g., 80)
23
+ * - Performance: maximum response time in ms (e.g., 200)
24
+ * - Quality: minimum quality score (e.g., 70)
25
+ */
26
+ threshold?: number;
27
+ /**
28
+ * Maximum number of items to return (default: 10)
29
+ */
30
+ topN?: number;
31
+ /**
32
+ * Filter by priority levels (e.g., only return 'high' and 'critical')
33
+ */
34
+ priorities?: ('critical' | 'high' | 'medium' | 'low')[];
35
+ /**
36
+ * Field name to sort by (default: priority-based sorting)
37
+ */
38
+ sortBy?: string;
39
+ /**
40
+ * Include detailed metrics aggregation (default: true)
41
+ */
42
+ includeMetrics?: boolean;
43
+ }
44
+ /**
45
+ * Priority level type
46
+ */
47
+ export type PriorityLevel = 'critical' | 'high' | 'medium' | 'low';
48
+ /**
49
+ * Filter result with summary, top items, and aggregated metrics
50
+ */
51
+ export interface FilterResult<T> {
52
+ /**
53
+ * Summary statistics about the filtering operation
54
+ */
55
+ summary: {
56
+ /** Total number of items in the original dataset */
57
+ total: number;
58
+ /** Number of items after applying priority filters */
59
+ filtered: number;
60
+ /** Number of items returned (topN) */
61
+ returned: number;
62
+ /** Reduction percentage (tokens saved) */
63
+ reductionPercent: number;
64
+ };
65
+ /**
66
+ * Top N items after filtering and sorting
67
+ */
68
+ topItems: T[];
69
+ /**
70
+ * Aggregated metrics from the full dataset
71
+ */
72
+ metrics: {
73
+ /** Distribution by priority level */
74
+ priorityDistribution: Record<PriorityLevel, number>;
75
+ /** Average value (if applicable) */
76
+ avgValue?: number;
77
+ /** Standard deviation (if applicable) */
78
+ stdDev?: number;
79
+ /** Minimum value */
80
+ min?: number;
81
+ /** Maximum value */
82
+ max?: number;
83
+ /** Additional custom metrics */
84
+ [key: string]: any;
85
+ };
86
+ }
87
+ /**
88
+ * Generic function to filter large datasets with priority-based sorting
89
+ *
90
+ * **Algorithm Complexity:** O(n log n) where n = dataset size
91
+ * - Priority filtering: O(n)
92
+ * - Sorting: O(n log n)
93
+ * - Slicing: O(1)
94
+ * - Metrics calculation: O(n)
95
+ *
96
+ * @template T - Type of items in the dataset
97
+ * @param data - Full dataset to filter
98
+ * @param config - Filter configuration
99
+ * @param priorityFn - Function to determine priority level for each item
100
+ * @param sortFn - Optional custom sort function (default: priority-based)
101
+ * @param valueFn - Optional function to extract numeric value for metrics
102
+ * @returns Filtered result with summary, top items, and metrics
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * // Filter coverage gaps by lowest coverage first
107
+ * const result = filterLargeDataset(
108
+ * coverageFiles,
109
+ * { threshold: 80, topN: 10, priorities: ['high', 'medium'] },
110
+ * (file) => file.coverage < 60 ? 'high' : file.coverage < 80 ? 'medium' : 'low',
111
+ * (a, b) => a.coverage - b.coverage, // Sort by worst coverage first
112
+ * (file) => file.coverage
113
+ * );
114
+ * ```
115
+ */
116
+ export declare function filterLargeDataset<T>(data: T[], config: FilterConfig, priorityFn: (item: T) => PriorityLevel, sortFn?: (a: T, b: T) => number, valueFn?: (item: T) => number): FilterResult<T>;
117
+ /**
118
+ * Count items by priority level
119
+ *
120
+ * @param data - Dataset to count
121
+ * @param priorityFn - Function to determine priority level
122
+ * @returns Distribution of items by priority
123
+ */
124
+ export declare function countByPriority<T>(data: T[], priorityFn: (item: T) => PriorityLevel): Record<PriorityLevel, number>;
125
+ /**
126
+ * Calculate aggregate statistics from dataset
127
+ *
128
+ * @param data - Dataset to analyze
129
+ * @param priorityFn - Function to determine priority level
130
+ * @param valueFn - Optional function to extract numeric value
131
+ * @returns Aggregated metrics including distribution, average, std dev, min, max
132
+ */
133
+ export declare function calculateMetrics<T>(data: T[], priorityFn: (item: T) => PriorityLevel, valueFn?: (item: T) => number): FilterResult<T>['metrics'];
134
+ /**
135
+ * Calculate priority level for coverage data
136
+ *
137
+ * @param coverage - Coverage percentage (0-100)
138
+ * @param threshold - Coverage threshold (default: 80)
139
+ * @returns Priority level based on coverage
140
+ */
141
+ export declare function calculateCoveragePriority(coverage: number, threshold?: number): PriorityLevel;
142
+ /**
143
+ * Calculate priority level for performance metrics
144
+ *
145
+ * @param responseTime - Response time in milliseconds
146
+ * @param threshold - Maximum acceptable response time (default: 200ms)
147
+ * @returns Priority level based on response time
148
+ */
149
+ export declare function calculatePerformancePriority(responseTime: number, threshold?: number): PriorityLevel;
150
+ /**
151
+ * Calculate priority level for quality scores
152
+ *
153
+ * @param score - Quality score (0-100)
154
+ * @param threshold - Minimum acceptable score (default: 70)
155
+ * @returns Priority level based on quality score
156
+ */
157
+ export declare function calculateQualityPriority(score: number, threshold?: number): PriorityLevel;
158
+ /**
159
+ * Calculate priority level for security vulnerabilities
160
+ *
161
+ * @param severity - Vulnerability severity (critical, high, medium, low)
162
+ * @returns Priority level matching severity
163
+ */
164
+ export declare function calculateSecurityPriority(severity: string): PriorityLevel;
165
+ /**
166
+ * Calculate priority level for flaky tests
167
+ *
168
+ * @param flakyRate - Flaky test rate percentage (0-100)
169
+ * @returns Priority level based on flakiness
170
+ */
171
+ export declare function calculateFlakyPriority(flakyRate: number): PriorityLevel;
172
+ /**
173
+ * Create a summary string for filtered results
174
+ *
175
+ * @param result - Filter result
176
+ * @param entityName - Name of the entity type (e.g., 'files', 'tests', 'issues')
177
+ * @returns Human-readable summary
178
+ */
179
+ export declare function createFilterSummary<T>(result: FilterResult<T>, entityName?: string): string;
180
+ //# sourceMappingURL=filtering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../src/utils/filtering.ts"],"names":[],"mappings":"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"}