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,252 @@
1
+ /**
2
+ * Batch Coverage Analysis Example
3
+ *
4
+ * Demonstrates using the BatchOperationManager to analyze coverage
5
+ * for multiple modules/packages in parallel.
6
+ *
7
+ * Performance Improvement:
8
+ * - Sequential: 10 modules × 1s = 10s
9
+ * - Batched: max(1s) with 5 concurrent = ~2s
10
+ * - Speedup: 5x faster
11
+ *
12
+ * @module agents/examples/batchAnalyze
13
+ */
14
+ import { type BatchResult } from '../../utils/batch-operations';
15
+ /**
16
+ * Configuration for batch coverage analysis
17
+ */
18
+ export interface BatchAnalyzeConfig {
19
+ /**
20
+ * Coverage threshold percentage
21
+ */
22
+ threshold?: number;
23
+ /**
24
+ * Maximum concurrent analysis operations
25
+ * @default 5
26
+ */
27
+ maxConcurrent?: number;
28
+ /**
29
+ * Timeout per module in milliseconds
30
+ * @default 60000 (60 seconds)
31
+ */
32
+ timeout?: number;
33
+ /**
34
+ * Enable retry on failure
35
+ * @default true
36
+ */
37
+ retryOnError?: boolean;
38
+ /**
39
+ * Include detailed file-level coverage
40
+ */
41
+ includeDetails?: boolean;
42
+ /**
43
+ * Progress callback
44
+ */
45
+ onProgress?: (completed: number, total: number, module: string) => void;
46
+ }
47
+ /**
48
+ * Input for a single module analysis
49
+ */
50
+ export interface ModuleAnalysisInput {
51
+ /**
52
+ * Module name or path
53
+ */
54
+ moduleName: string;
55
+ /**
56
+ * Path to coverage data file (lcov, json, etc.)
57
+ */
58
+ coverageDataPath?: string;
59
+ /**
60
+ * Module-specific configuration
61
+ */
62
+ config?: {
63
+ threshold?: number;
64
+ includeSubmodules?: boolean;
65
+ };
66
+ }
67
+ /**
68
+ * Coverage gap information
69
+ */
70
+ export interface CoverageGap {
71
+ /**
72
+ * File path
73
+ */
74
+ filePath: string;
75
+ /**
76
+ * Current coverage percentage
77
+ */
78
+ coverage: number;
79
+ /**
80
+ * Uncovered lines
81
+ */
82
+ uncoveredLines: number[];
83
+ /**
84
+ * Uncovered branches
85
+ */
86
+ uncoveredBranches?: Array<{
87
+ line: number;
88
+ branch: number;
89
+ }>;
90
+ /**
91
+ * Priority (high/medium/low)
92
+ */
93
+ priority: 'high' | 'medium' | 'low';
94
+ /**
95
+ * Complexity metrics
96
+ */
97
+ complexity?: {
98
+ cyclomatic: number;
99
+ cognitive: number;
100
+ };
101
+ }
102
+ /**
103
+ * Result for a single module analysis
104
+ */
105
+ export interface ModuleAnalysisResult {
106
+ /**
107
+ * Module name
108
+ */
109
+ moduleName: string;
110
+ /**
111
+ * Overall coverage metrics
112
+ */
113
+ coverage: {
114
+ lines: number;
115
+ branches: number;
116
+ functions: number;
117
+ statements: number;
118
+ };
119
+ /**
120
+ * Coverage gaps found
121
+ */
122
+ gaps: CoverageGap[];
123
+ /**
124
+ * Number of files analyzed
125
+ */
126
+ filesAnalyzed: number;
127
+ /**
128
+ * Analysis time in milliseconds
129
+ */
130
+ analysisTime: number;
131
+ /**
132
+ * Recommendations for improvement
133
+ */
134
+ recommendations?: string[];
135
+ }
136
+ /**
137
+ * Batch analyze coverage for multiple modules
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const modules = [
142
+ * { moduleName: 'auth', coverageDataPath: 'coverage/auth/lcov.info' },
143
+ * { moduleName: 'api', coverageDataPath: 'coverage/api/lcov.info' },
144
+ * { moduleName: 'ui', coverageDataPath: 'coverage/ui/lcov.info' }
145
+ * ];
146
+ *
147
+ * const result = await analyzeCoverageForModules(modules, {
148
+ * threshold: 80,
149
+ * maxConcurrent: 5,
150
+ * includeDetails: true,
151
+ * onProgress: (completed, total, module) => {
152
+ * console.log(`Analyzed ${completed}/${total}: ${module}`);
153
+ * }
154
+ * });
155
+ *
156
+ * console.log(`Analyzed ${result.results.length} modules`);
157
+ * console.log(`Success rate: ${result.successRate * 100}%`);
158
+ * ```
159
+ */
160
+ export declare function analyzeCoverageForModules(modules: ModuleAnalysisInput[], config: BatchAnalyzeConfig): Promise<BatchResult<ModuleAnalysisResult>>;
161
+ /**
162
+ * Batch analyze coverage with gap prioritization
163
+ *
164
+ * Analyzes all modules and returns a prioritized list of files to test.
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * const result = await analyzeCoverageWithPriority(modules, {
169
+ * threshold: 80,
170
+ * topN: 20 // Return top 20 gaps
171
+ * });
172
+ *
173
+ * console.log('Top coverage gaps to address:');
174
+ * result.prioritizedGaps.forEach((gap, idx) => {
175
+ * console.log(`${idx + 1}. ${gap.filePath} (${gap.coverage}%)`);
176
+ * });
177
+ * ```
178
+ */
179
+ export declare function analyzeCoverageWithPriority(modules: ModuleAnalysisInput[], config: BatchAnalyzeConfig & {
180
+ topN?: number;
181
+ }): Promise<BatchResult<ModuleAnalysisResult> & {
182
+ prioritizedGaps: CoverageGap[];
183
+ overallCoverage: {
184
+ lines: number;
185
+ branches: number;
186
+ functions: number;
187
+ statements: number;
188
+ };
189
+ }>;
190
+ /**
191
+ * Continuous coverage monitoring with batch analysis
192
+ *
193
+ * Runs coverage analysis at intervals and tracks trends over time.
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * const monitor = new CoverageMonitor(modules, {
198
+ * interval: 60000, // 1 minute
199
+ * threshold: 80,
200
+ * onCoverageChange: (current, previous) => {
201
+ * console.log(`Coverage changed: ${previous}% -> ${current}%`);
202
+ * }
203
+ * });
204
+ *
205
+ * await monitor.start();
206
+ * ```
207
+ */
208
+ export declare class CoverageMonitor {
209
+ private modules;
210
+ private config;
211
+ private intervalId?;
212
+ private previousCoverage?;
213
+ constructor(modules: ModuleAnalysisInput[], config: BatchAnalyzeConfig & {
214
+ interval?: number;
215
+ onCoverageChange?: (current: number, previous: number) => void;
216
+ });
217
+ start(): Promise<void>;
218
+ stop(): void;
219
+ private runAnalysis;
220
+ }
221
+ /**
222
+ * Analyze coverage delta between two points in time
223
+ *
224
+ * Useful for PR validation to ensure coverage doesn't decrease.
225
+ *
226
+ * @example
227
+ * ```typescript
228
+ * const delta = await analyzeCoverageDelta(
229
+ * modules,
230
+ * 'baseline-coverage.json',
231
+ * 'current-coverage.json',
232
+ * { threshold: 80 }
233
+ * );
234
+ *
235
+ * if (delta.overallChange < 0) {
236
+ * console.error('Coverage decreased!');
237
+ * process.exit(1);
238
+ * }
239
+ * ```
240
+ */
241
+ export declare function analyzeCoverageDelta(modules: ModuleAnalysisInput[], baselinePath: string, currentPath: string, config: BatchAnalyzeConfig): Promise<{
242
+ overallChange: number;
243
+ moduleChanges: Array<{
244
+ module: string;
245
+ before: number;
246
+ after: number;
247
+ change: number;
248
+ }>;
249
+ newGaps: CoverageGap[];
250
+ fixedGaps: CoverageGap[];
251
+ }>;
252
+ //# sourceMappingURL=batchAnalyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchAnalyze.d.ts","sourceRoot":"","sources":["../../../src/agents/examples/batchAnalyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ /**
3
+ * Batch Coverage Analysis Example
4
+ *
5
+ * Demonstrates using the BatchOperationManager to analyze coverage
6
+ * for multiple modules/packages in parallel.
7
+ *
8
+ * Performance Improvement:
9
+ * - Sequential: 10 modules × 1s = 10s
10
+ * - Batched: max(1s) with 5 concurrent = ~2s
11
+ * - Speedup: 5x faster
12
+ *
13
+ * @module agents/examples/batchAnalyze
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.CoverageMonitor = void 0;
17
+ exports.analyzeCoverageForModules = analyzeCoverageForModules;
18
+ exports.analyzeCoverageWithPriority = analyzeCoverageWithPriority;
19
+ exports.analyzeCoverageDelta = analyzeCoverageDelta;
20
+ const batch_operations_1 = require("../../utils/batch-operations");
21
+ /**
22
+ * Batch analyze coverage for multiple modules
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const modules = [
27
+ * { moduleName: 'auth', coverageDataPath: 'coverage/auth/lcov.info' },
28
+ * { moduleName: 'api', coverageDataPath: 'coverage/api/lcov.info' },
29
+ * { moduleName: 'ui', coverageDataPath: 'coverage/ui/lcov.info' }
30
+ * ];
31
+ *
32
+ * const result = await analyzeCoverageForModules(modules, {
33
+ * threshold: 80,
34
+ * maxConcurrent: 5,
35
+ * includeDetails: true,
36
+ * onProgress: (completed, total, module) => {
37
+ * console.log(`Analyzed ${completed}/${total}: ${module}`);
38
+ * }
39
+ * });
40
+ *
41
+ * console.log(`Analyzed ${result.results.length} modules`);
42
+ * console.log(`Success rate: ${result.successRate * 100}%`);
43
+ * ```
44
+ */
45
+ async function analyzeCoverageForModules(modules, config) {
46
+ const batchManager = new batch_operations_1.BatchOperationManager();
47
+ const { threshold = 80, maxConcurrent = 5, timeout = 60000, retryOnError = true, includeDetails = false, onProgress, } = config;
48
+ // Handler function for single module analysis
49
+ const analyzeModule = async (input) => {
50
+ const startTime = Date.now();
51
+ // This would call your actual coverage analysis service
52
+ const coverage = await analyzeCoverageData({
53
+ moduleName: input.moduleName,
54
+ coverageDataPath: input.coverageDataPath,
55
+ threshold: input.config?.threshold || threshold,
56
+ includeDetails,
57
+ });
58
+ // Find gaps (files below threshold)
59
+ const gaps = findCoverageGaps(coverage, threshold);
60
+ // Generate recommendations
61
+ const recommendations = includeDetails
62
+ ? generateRecommendations(gaps)
63
+ : undefined;
64
+ const analysisTime = Date.now() - startTime;
65
+ return {
66
+ moduleName: input.moduleName,
67
+ coverage: coverage.summary,
68
+ gaps,
69
+ filesAnalyzed: coverage.files.length,
70
+ analysisTime,
71
+ recommendations,
72
+ };
73
+ };
74
+ // Execute batch analysis
75
+ return batchManager.batchExecute(modules, analyzeModule, {
76
+ maxConcurrent,
77
+ timeout,
78
+ retryOnError,
79
+ maxRetries: 3,
80
+ failFast: false,
81
+ onProgress: (completed, total) => {
82
+ const currentModule = modules[completed - 1]?.moduleName || 'unknown';
83
+ onProgress?.(completed, total, currentModule);
84
+ },
85
+ });
86
+ }
87
+ /**
88
+ * Placeholder for actual coverage analysis implementation
89
+ */
90
+ async function analyzeCoverageData(params) {
91
+ // This would integrate with your CoverageAnalyzerAgent
92
+ throw new Error('Not implemented - integrate with CoverageAnalyzerAgent');
93
+ }
94
+ /**
95
+ * Find coverage gaps below threshold
96
+ */
97
+ function findCoverageGaps(coverage, threshold) {
98
+ return coverage.files
99
+ .filter((file) => file.coverage < threshold)
100
+ .map((file) => {
101
+ const priority = file.coverage < threshold - 20
102
+ ? 'high'
103
+ : file.coverage < threshold - 10
104
+ ? 'medium'
105
+ : 'low';
106
+ return {
107
+ filePath: file.path,
108
+ coverage: file.coverage,
109
+ uncoveredLines: [], // Would be populated from actual coverage data
110
+ priority,
111
+ };
112
+ })
113
+ .sort((a, b) => a.coverage - b.coverage); // Worst coverage first
114
+ }
115
+ /**
116
+ * Generate improvement recommendations
117
+ */
118
+ function generateRecommendations(gaps) {
119
+ const recommendations = [];
120
+ if (gaps.length === 0) {
121
+ return ['All files meet coverage threshold'];
122
+ }
123
+ const highPriorityGaps = gaps.filter((g) => g.priority === 'high');
124
+ if (highPriorityGaps.length > 0) {
125
+ recommendations.push(`Focus on ${highPriorityGaps.length} high-priority files with <60% coverage`);
126
+ }
127
+ const avgCoverage = gaps.reduce((sum, g) => sum + g.coverage, 0) / gaps.length;
128
+ if (avgCoverage < 50) {
129
+ recommendations.push('Consider implementing integration tests to improve overall coverage');
130
+ }
131
+ if (gaps.length > 10) {
132
+ recommendations.push('Use batch test generation to address multiple gaps simultaneously');
133
+ }
134
+ return recommendations;
135
+ }
136
+ /**
137
+ * Batch analyze coverage with gap prioritization
138
+ *
139
+ * Analyzes all modules and returns a prioritized list of files to test.
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const result = await analyzeCoverageWithPriority(modules, {
144
+ * threshold: 80,
145
+ * topN: 20 // Return top 20 gaps
146
+ * });
147
+ *
148
+ * console.log('Top coverage gaps to address:');
149
+ * result.prioritizedGaps.forEach((gap, idx) => {
150
+ * console.log(`${idx + 1}. ${gap.filePath} (${gap.coverage}%)`);
151
+ * });
152
+ * ```
153
+ */
154
+ async function analyzeCoverageWithPriority(modules, config) {
155
+ const result = await analyzeCoverageForModules(modules, config);
156
+ // Aggregate all gaps
157
+ const allGaps = result.results.flatMap((r) => r.gaps);
158
+ // Sort by priority and coverage
159
+ const prioritizedGaps = allGaps
160
+ .sort((a, b) => {
161
+ const priorityOrder = { high: 0, medium: 1, low: 2 };
162
+ const priorityDiff = priorityOrder[a.priority] - priorityOrder[b.priority];
163
+ return priorityDiff !== 0 ? priorityDiff : a.coverage - b.coverage;
164
+ })
165
+ .slice(0, config.topN || 50);
166
+ // Calculate overall coverage
167
+ const totalCoverage = result.results.reduce((sum, r) => ({
168
+ lines: sum.lines + r.coverage.lines,
169
+ branches: sum.branches + r.coverage.branches,
170
+ functions: sum.functions + r.coverage.functions,
171
+ statements: sum.statements + r.coverage.statements,
172
+ }), { lines: 0, branches: 0, functions: 0, statements: 0 });
173
+ const count = result.results.length || 1;
174
+ const overallCoverage = {
175
+ lines: totalCoverage.lines / count,
176
+ branches: totalCoverage.branches / count,
177
+ functions: totalCoverage.functions / count,
178
+ statements: totalCoverage.statements / count,
179
+ };
180
+ return {
181
+ ...result,
182
+ prioritizedGaps,
183
+ overallCoverage,
184
+ };
185
+ }
186
+ /**
187
+ * Continuous coverage monitoring with batch analysis
188
+ *
189
+ * Runs coverage analysis at intervals and tracks trends over time.
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * const monitor = new CoverageMonitor(modules, {
194
+ * interval: 60000, // 1 minute
195
+ * threshold: 80,
196
+ * onCoverageChange: (current, previous) => {
197
+ * console.log(`Coverage changed: ${previous}% -> ${current}%`);
198
+ * }
199
+ * });
200
+ *
201
+ * await monitor.start();
202
+ * ```
203
+ */
204
+ class CoverageMonitor {
205
+ constructor(modules, config) {
206
+ this.modules = modules;
207
+ this.config = config;
208
+ }
209
+ async start() {
210
+ const interval = this.config.interval || 60000;
211
+ // Initial analysis
212
+ await this.runAnalysis();
213
+ // Schedule periodic analysis
214
+ this.intervalId = setInterval(() => {
215
+ this.runAnalysis();
216
+ }, interval);
217
+ }
218
+ stop() {
219
+ if (this.intervalId) {
220
+ clearInterval(this.intervalId);
221
+ this.intervalId = undefined;
222
+ }
223
+ }
224
+ async runAnalysis() {
225
+ const result = await analyzeCoverageWithPriority(this.modules, this.config);
226
+ const currentCoverage = result.overallCoverage.lines;
227
+ if (this.previousCoverage !== undefined &&
228
+ this.config.onCoverageChange) {
229
+ this.config.onCoverageChange(currentCoverage, this.previousCoverage);
230
+ }
231
+ this.previousCoverage = currentCoverage;
232
+ }
233
+ }
234
+ exports.CoverageMonitor = CoverageMonitor;
235
+ /**
236
+ * Analyze coverage delta between two points in time
237
+ *
238
+ * Useful for PR validation to ensure coverage doesn't decrease.
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * const delta = await analyzeCoverageDelta(
243
+ * modules,
244
+ * 'baseline-coverage.json',
245
+ * 'current-coverage.json',
246
+ * { threshold: 80 }
247
+ * );
248
+ *
249
+ * if (delta.overallChange < 0) {
250
+ * console.error('Coverage decreased!');
251
+ * process.exit(1);
252
+ * }
253
+ * ```
254
+ */
255
+ async function analyzeCoverageDelta(modules, baselinePath, currentPath, config) {
256
+ // This would load baseline and current coverage, then compare
257
+ throw new Error('Not implemented - integrate with coverage comparison logic');
258
+ }
259
+ //# sourceMappingURL=batchAnalyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchAnalyze.js","sourceRoot":"","sources":["../../../src/agents/examples/batchAnalyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Batch Test Generation Example
3
+ *
4
+ * Demonstrates using the BatchOperationManager to generate tests
5
+ * for multiple files in parallel with automatic retry and timeout handling.
6
+ *
7
+ * Performance Improvement:
8
+ * - Sequential: 3 files × 2s = 6s
9
+ * - Batched: max(2s) with 5 concurrent = ~2s
10
+ * - Speedup: 3x faster
11
+ *
12
+ * @module agents/examples/batchGenerate
13
+ */
14
+ import { type BatchResult } from '../../utils/batch-operations';
15
+ import type { TestGenerationRequest, TestGenerationResult } from '../TestGeneratorAgent';
16
+ /**
17
+ * Configuration for batch test generation
18
+ */
19
+ export interface BatchGenerateConfig {
20
+ /**
21
+ * Test framework to use
22
+ */
23
+ framework: 'jest' | 'vitest' | 'mocha';
24
+ /**
25
+ * Target coverage percentage
26
+ */
27
+ targetCoverage?: number;
28
+ /**
29
+ * Maximum concurrent file processing
30
+ * @default 5
31
+ */
32
+ maxConcurrent?: number;
33
+ /**
34
+ * Timeout per file in milliseconds
35
+ * @default 60000 (60 seconds)
36
+ */
37
+ timeout?: number;
38
+ /**
39
+ * Enable retry on failure
40
+ * @default true
41
+ */
42
+ retryOnError?: boolean;
43
+ /**
44
+ * Progress callback
45
+ */
46
+ onProgress?: (completed: number, total: number, file: string) => void;
47
+ }
48
+ /**
49
+ * Single file test generation input
50
+ */
51
+ export interface FileGenerationInput {
52
+ /**
53
+ * Path to source file
54
+ */
55
+ filePath: string;
56
+ /**
57
+ * File content (optional, will read if not provided)
58
+ */
59
+ content?: string;
60
+ /**
61
+ * Custom configuration for this file
62
+ */
63
+ config?: Partial<TestGenerationRequest>;
64
+ }
65
+ /**
66
+ * Result for a single file
67
+ */
68
+ export interface FileGenerationResult {
69
+ /**
70
+ * Source file path
71
+ */
72
+ filePath: string;
73
+ /**
74
+ * Generated test file path
75
+ */
76
+ testFilePath: string;
77
+ /**
78
+ * Test generation result
79
+ */
80
+ result: TestGenerationResult;
81
+ /**
82
+ * Generation time in milliseconds
83
+ */
84
+ generationTime: number;
85
+ }
86
+ /**
87
+ * Batch test generation for multiple files
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const files = [
92
+ * { filePath: 'src/utils/parser.ts' },
93
+ * { filePath: 'src/utils/validator.ts' },
94
+ * { filePath: 'src/utils/formatter.ts' }
95
+ * ];
96
+ *
97
+ * const result = await generateTestsForFiles(files, {
98
+ * framework: 'jest',
99
+ * targetCoverage: 80,
100
+ * maxConcurrent: 5,
101
+ * onProgress: (completed, total, file) => {
102
+ * console.log(`Progress: ${completed}/${total} - ${file}`);
103
+ * }
104
+ * });
105
+ *
106
+ * console.log(`Generated ${result.results.length} test files`);
107
+ * console.log(`Success rate: ${result.successRate * 100}%`);
108
+ * console.log(`Total time: ${result.totalTime}ms`);
109
+ * ```
110
+ */
111
+ export declare function generateTestsForFiles(files: FileGenerationInput[], config: BatchGenerateConfig): Promise<BatchResult<FileGenerationResult>>;
112
+ /**
113
+ * Batch generate tests for an entire directory
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const result = await generateTestsForDirectory('src/utils', {
118
+ * framework: 'jest',
119
+ * pattern: '**\/*.ts',
120
+ * exclude: ['**\/*.test.ts', '**\/*.spec.ts'],
121
+ * maxConcurrent: 5
122
+ * });
123
+ * ```
124
+ */
125
+ export declare function generateTestsForDirectory(directory: string, config: BatchGenerateConfig & {
126
+ pattern?: string;
127
+ exclude?: string[];
128
+ }): Promise<BatchResult<FileGenerationResult>>;
129
+ /**
130
+ * Batch generate tests with intelligent prioritization
131
+ *
132
+ * Prioritizes files by:
133
+ * 1. Code complexity (higher first)
134
+ * 2. Current test coverage (lower first)
135
+ * 3. Change frequency (higher first)
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const result = await generateTestsWithPriority(
140
+ * [
141
+ * { filePath: 'src/complex.ts', complexity: 15, coverage: 20 },
142
+ * { filePath: 'src/simple.ts', complexity: 3, coverage: 80 },
143
+ * ],
144
+ * { framework: 'jest' }
145
+ * );
146
+ * ```
147
+ */
148
+ export declare function generateTestsWithPriority(files: Array<FileGenerationInput & {
149
+ complexity?: number;
150
+ coverage?: number;
151
+ changeFrequency?: number;
152
+ }>, config: BatchGenerateConfig): Promise<BatchResult<FileGenerationResult>>;
153
+ //# sourceMappingURL=batchGenerate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchGenerate.d.ts","sourceRoot":"","sources":["../../../src/agents/examples/batchGenerate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEvC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,oBAAoB,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAkD5C;AAyBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,mBAAmB,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,GACA,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAO5C;AAeD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,KAAK,CACV,mBAAmB,GAAG;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CACF,EACD,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAS5C"}