agentic-qe 2.3.2 → 2.3.4

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 (283) hide show
  1. package/CHANGELOG.md +140 -0
  2. package/README.md +1 -1
  3. package/dist/agents/BaseAgent.d.ts +10 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +113 -0
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  8. package/dist/agents/CoverageAnalyzerAgent.js +53 -27
  9. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  10. package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
  11. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  12. package/dist/agents/FlakyTestHunterAgent.js +20 -5
  13. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  14. package/dist/agents/QualityGateAgent.js +44 -6
  15. package/dist/agents/QualityGateAgent.js.map +1 -1
  16. package/dist/cli/commands/dream/index.d.ts +50 -0
  17. package/dist/cli/commands/dream/index.d.ts.map +1 -0
  18. package/dist/cli/commands/dream/index.js +282 -0
  19. package/dist/cli/commands/dream/index.js.map +1 -0
  20. package/dist/cli/commands/learn/index.d.ts +31 -5
  21. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  22. package/dist/cli/commands/learn/index.js +183 -50
  23. package/dist/cli/commands/learn/index.js.map +1 -1
  24. package/dist/cli/commands/transfer/index.d.ts +55 -0
  25. package/dist/cli/commands/transfer/index.d.ts.map +1 -0
  26. package/dist/cli/commands/transfer/index.js +317 -0
  27. package/dist/cli/commands/transfer/index.js.map +1 -0
  28. package/dist/cli/index.js +156 -3
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/init/database-init.js +5 -0
  31. package/dist/cli/init/database-init.js.map +1 -1
  32. package/dist/cli/init/index.d.ts.map +1 -1
  33. package/dist/cli/init/index.js +12 -4
  34. package/dist/cli/init/index.js.map +1 -1
  35. package/dist/cli/init/learning-init.d.ts +39 -0
  36. package/dist/cli/init/learning-init.d.ts.map +1 -0
  37. package/dist/cli/init/learning-init.js +239 -0
  38. package/dist/cli/init/learning-init.js.map +1 -0
  39. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  40. package/dist/learning/PerformanceTracker.d.ts +9 -0
  41. package/dist/learning/PerformanceTracker.d.ts.map +1 -1
  42. package/dist/learning/PerformanceTracker.js +26 -2
  43. package/dist/learning/PerformanceTracker.js.map +1 -1
  44. package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
  45. package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
  46. package/dist/learning/baselines/BaselineCollector.js +398 -0
  47. package/dist/learning/baselines/BaselineCollector.js.map +1 -0
  48. package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
  49. package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
  50. package/dist/learning/baselines/StandardTaskSuite.js +801 -0
  51. package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
  52. package/dist/learning/baselines/index.d.ts +10 -0
  53. package/dist/learning/baselines/index.d.ts.map +1 -0
  54. package/dist/learning/baselines/index.js +15 -0
  55. package/dist/learning/baselines/index.js.map +1 -0
  56. package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
  57. package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
  58. package/dist/learning/capture/ExecutionRecorder.js +195 -0
  59. package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
  60. package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
  61. package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
  62. package/dist/learning/capture/ExperienceCapture.js +432 -0
  63. package/dist/learning/capture/ExperienceCapture.js.map +1 -0
  64. package/dist/learning/capture/index.d.ts +12 -0
  65. package/dist/learning/capture/index.d.ts.map +1 -0
  66. package/dist/learning/capture/index.js +17 -0
  67. package/dist/learning/capture/index.js.map +1 -0
  68. package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
  69. package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
  70. package/dist/learning/dashboard/MetricsDashboard.js +230 -0
  71. package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
  72. package/dist/learning/dashboard/index.d.ts +7 -0
  73. package/dist/learning/dashboard/index.d.ts.map +1 -0
  74. package/dist/learning/dashboard/index.js +23 -0
  75. package/dist/learning/dashboard/index.js.map +1 -0
  76. package/dist/learning/dream/ConceptGraph.d.ts +160 -0
  77. package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
  78. package/dist/learning/dream/ConceptGraph.js +445 -0
  79. package/dist/learning/dream/ConceptGraph.js.map +1 -0
  80. package/dist/learning/dream/DreamEngine.d.ts +150 -0
  81. package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
  82. package/dist/learning/dream/DreamEngine.js +551 -0
  83. package/dist/learning/dream/DreamEngine.js.map +1 -0
  84. package/dist/learning/dream/InsightGenerator.d.ts +152 -0
  85. package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
  86. package/dist/learning/dream/InsightGenerator.js +463 -0
  87. package/dist/learning/dream/InsightGenerator.js.map +1 -0
  88. package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
  89. package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
  90. package/dist/learning/dream/SpreadingActivation.js +320 -0
  91. package/dist/learning/dream/SpreadingActivation.js.map +1 -0
  92. package/dist/learning/dream/index.d.ts +14 -0
  93. package/dist/learning/dream/index.d.ts.map +1 -0
  94. package/dist/learning/dream/index.js +22 -0
  95. package/dist/learning/dream/index.js.map +1 -0
  96. package/dist/learning/metrics/AlertManager.d.ts +107 -0
  97. package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
  98. package/dist/learning/metrics/AlertManager.js +246 -0
  99. package/dist/learning/metrics/AlertManager.js.map +1 -0
  100. package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
  101. package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
  102. package/dist/learning/metrics/LearningMetrics.js +754 -0
  103. package/dist/learning/metrics/LearningMetrics.js.map +1 -0
  104. package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
  105. package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
  106. package/dist/learning/metrics/MetricsCollector.js +240 -0
  107. package/dist/learning/metrics/MetricsCollector.js.map +1 -0
  108. package/dist/learning/metrics/MetricsStore.d.ts +149 -0
  109. package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
  110. package/dist/learning/metrics/MetricsStore.js +502 -0
  111. package/dist/learning/metrics/MetricsStore.js.map +1 -0
  112. package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
  113. package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
  114. package/dist/learning/metrics/TrendAnalyzer.js +210 -0
  115. package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
  116. package/dist/learning/metrics/index.d.ts +13 -0
  117. package/dist/learning/metrics/index.d.ts.map +1 -0
  118. package/dist/learning/metrics/index.js +39 -0
  119. package/dist/learning/metrics/index.js.map +1 -0
  120. package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
  121. package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
  122. package/dist/learning/scheduler/IdleDetector.js +281 -0
  123. package/dist/learning/scheduler/IdleDetector.js.map +1 -0
  124. package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
  125. package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
  126. package/dist/learning/scheduler/SleepCycle.js +506 -0
  127. package/dist/learning/scheduler/SleepCycle.js.map +1 -0
  128. package/dist/learning/scheduler/SleepScheduler.d.ts +131 -0
  129. package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
  130. package/dist/learning/scheduler/SleepScheduler.js +299 -0
  131. package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
  132. package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
  133. package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
  134. package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
  135. package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
  136. package/dist/learning/scheduler/index.d.ts +16 -0
  137. package/dist/learning/scheduler/index.d.ts.map +1 -0
  138. package/dist/learning/scheduler/index.js +23 -0
  139. package/dist/learning/scheduler/index.js.map +1 -0
  140. package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
  141. package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
  142. package/dist/learning/synthesis/PatternSynthesis.js +479 -0
  143. package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
  144. package/dist/learning/synthesis/index.d.ts +10 -0
  145. package/dist/learning/synthesis/index.d.ts.map +1 -0
  146. package/dist/learning/synthesis/index.js +14 -0
  147. package/dist/learning/synthesis/index.js.map +1 -0
  148. package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
  149. package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
  150. package/dist/learning/transfer/CompatibilityScorer.js +319 -0
  151. package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
  152. package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
  153. package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
  154. package/dist/learning/transfer/TransferProtocol.js +611 -0
  155. package/dist/learning/transfer/TransferProtocol.js.map +1 -0
  156. package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
  157. package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
  158. package/dist/learning/transfer/TransferPrototype.js +433 -0
  159. package/dist/learning/transfer/TransferPrototype.js.map +1 -0
  160. package/dist/learning/transfer/TransferValidator.d.ts +140 -0
  161. package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
  162. package/dist/learning/transfer/TransferValidator.js +413 -0
  163. package/dist/learning/transfer/TransferValidator.js.map +1 -0
  164. package/dist/learning/transfer/index.d.ts +14 -0
  165. package/dist/learning/transfer/index.d.ts.map +1 -0
  166. package/dist/learning/transfer/index.js +22 -0
  167. package/dist/learning/transfer/index.js.map +1 -0
  168. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
  169. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
  170. package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
  171. package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
  172. package/dist/mcp/server-instructions.d.ts +1 -1
  173. package/dist/mcp/server-instructions.js +1 -1
  174. package/dist/mcp/server.d.ts.map +1 -1
  175. package/dist/mcp/server.js +2 -1
  176. package/dist/mcp/server.js.map +1 -1
  177. package/package.json +7 -2
  178. package/scripts/README.md +352 -0
  179. package/scripts/hooks/capture-task-learning.js +191 -0
  180. package/scripts/hooks/emit-task-complete.sh +35 -0
  181. package/scripts/hooks/emit-task-spawn.sh +27 -0
  182. package/.claude/agents/failing-agent.json +0 -9
  183. package/.claude/agents/test-agent.json +0 -9
  184. package/dist/App.d.ts +0 -5
  185. package/dist/App.d.ts.map +0 -1
  186. package/dist/App.js +0 -15
  187. package/dist/App.js.map +0 -1
  188. package/dist/cli/init/utils.d.ts +0 -183
  189. package/dist/cli/init/utils.d.ts.map +0 -1
  190. package/dist/cli/init/utils.js +0 -354
  191. package/dist/cli/init/utils.js.map +0 -1
  192. package/dist/components/Dashboard/Dashboard.d.ts +0 -4
  193. package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
  194. package/dist/components/Dashboard/Dashboard.js +0 -148
  195. package/dist/components/Dashboard/Dashboard.js.map +0 -1
  196. package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
  197. package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
  198. package/dist/components/Dashboard/DashboardHeader.js +0 -138
  199. package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
  200. package/dist/contexts/DashboardContext.d.ts +0 -41
  201. package/dist/contexts/DashboardContext.d.ts.map +0 -1
  202. package/dist/contexts/DashboardContext.js +0 -187
  203. package/dist/contexts/DashboardContext.js.map +0 -1
  204. package/dist/core/transport/QUICTransport.d.ts +0 -320
  205. package/dist/core/transport/QUICTransport.d.ts.map +0 -1
  206. package/dist/core/transport/QUICTransport.js +0 -711
  207. package/dist/core/transport/QUICTransport.js.map +0 -1
  208. package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
  209. package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
  210. package/dist/learning/LearningPersistenceAdapter.js +0 -202
  211. package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
  212. package/dist/learning/algorithms/QLearning.d.ts +0 -68
  213. package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
  214. package/dist/learning/algorithms/QLearning.js +0 -116
  215. package/dist/learning/algorithms/QLearning.js.map +0 -1
  216. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
  217. package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
  218. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
  219. package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
  220. package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
  221. package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
  222. package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
  223. package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
  224. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
  225. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
  226. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
  227. package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
  228. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
  229. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
  230. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
  231. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
  232. package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
  233. package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
  234. package/dist/mcp/handlers/optimize-tests.js +0 -533
  235. package/dist/mcp/handlers/optimize-tests.js.map +0 -1
  236. package/dist/mcp/handlers/predict-defects.d.ts +0 -194
  237. package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
  238. package/dist/mcp/handlers/predict-defects.js +0 -722
  239. package/dist/mcp/handlers/predict-defects.js.map +0 -1
  240. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
  241. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
  242. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
  243. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
  244. package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
  245. package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
  246. package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
  247. package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
  248. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
  249. package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
  250. package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
  251. package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
  252. package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
  253. package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
  254. package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
  255. package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
  256. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
  257. package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
  258. package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
  259. package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
  260. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
  261. package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
  262. package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
  263. package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
  264. package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
  265. package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
  266. package/dist/mcp/handlers/quality-analyze.js +0 -720
  267. package/dist/mcp/handlers/quality-analyze.js.map +0 -1
  268. package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
  269. package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
  270. package/dist/mcp/handlers/security/check-authz.js +0 -434
  271. package/dist/mcp/handlers/security/check-authz.js.map +0 -1
  272. package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
  273. package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
  274. package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
  275. package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
  276. package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
  277. package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
  278. package/dist/mcp/handlers/security/validate-auth.js +0 -294
  279. package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
  280. package/dist/mcp/handlers/test-generate.d.ts +0 -107
  281. package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
  282. package/dist/mcp/handlers/test-generate.js +0 -454
  283. package/dist/mcp/handlers/test-generate.js.map +0 -1
@@ -1,454 +0,0 @@
1
- "use strict";
2
- /**
3
- * Test Generation Handler
4
- *
5
- * Handles AI-driven test generation for various testing strategies.
6
- * Integrates with code analysis and test synthesis capabilities.
7
- *
8
- * @version 1.0.0
9
- * @author Agentic QE Team
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TestGenerateHandler = void 0;
13
- const base_handler_js_1 = require("./base-handler.js");
14
- const SecureRandom_js_1 = require("../../utils/SecureRandom.js");
15
- class TestGenerateHandler extends base_handler_js_1.BaseHandler {
16
- constructor(registry, hookExecutor) {
17
- super();
18
- this.generatedSuites = new Map();
19
- this.generators = new Map();
20
- this.registry = registry;
21
- this.hookExecutor = hookExecutor;
22
- this.initializeGenerators();
23
- }
24
- async handle(args) {
25
- const requestId = this.generateRequestId();
26
- this.log('info', 'Generating test suite', { requestId, spec: args.spec });
27
- try {
28
- // Validate required parameters
29
- this.validateRequired(args, ['spec']);
30
- this.validateTestGenerationSpec(args.spec);
31
- // Get or spawn test-generator agent
32
- let agentId = args.agentId;
33
- if (!agentId) {
34
- this.log('info', 'Spawning test-generator agent');
35
- const spawnResult = await this.registry.spawnAgent('test-generator', {
36
- name: 'test-generator',
37
- description: `Generate ${args.spec.type} tests using ${args.spec.frameworks?.[0] || 'default'} framework`
38
- });
39
- agentId = spawnResult.id;
40
- this.log('info', `Spawned test-generator agent: ${agentId}`);
41
- }
42
- // Execute pre-task hook
43
- await this.hookExecutor.executePreTask({
44
- description: `Generating ${args.spec.type} tests for ${args.spec.sourceCode.repositoryUrl}`,
45
- agentType: 'test-generator',
46
- agentId
47
- });
48
- // Execute test generation via agent
49
- const { result: testSuite, executionTime } = await this.measureExecutionTime(async () => {
50
- // Create proper TaskAssignment for BaseAgent validation
51
- const taskAssignment = {
52
- id: requestId,
53
- task: {
54
- id: requestId,
55
- type: 'generate-tests',
56
- description: `Generate ${args.spec.type} tests for ${args.spec.sourceCode.repositoryUrl}`,
57
- priority: 'medium',
58
- input: args.spec,
59
- requirements: {
60
- capabilities: ['test-generation', 'code-analysis']
61
- },
62
- context: {
63
- requestId,
64
- timestamp: new Date().toISOString(),
65
- framework: args.spec.frameworks?.[0] || 'jest',
66
- coverageTarget: args.spec.coverageTarget
67
- }
68
- },
69
- agentId: agentId,
70
- assignedAt: new Date(),
71
- status: 'assigned'
72
- };
73
- // Use agent registry to execute task
74
- const result = await this.registry.executeTask(agentId, taskAssignment);
75
- // Also run legacy generation for backward compatibility
76
- const legacyResult = await this.generateTestSuite(args.spec, agentId);
77
- // Merge results (prefer agent result if available)
78
- return result?.output || legacyResult;
79
- });
80
- // Execute post-task hook
81
- await this.hookExecutor.executePostTask({
82
- taskId: agentId,
83
- results: {
84
- suiteId: testSuite.id,
85
- testCount: testSuite.tests.length,
86
- coverage: testSuite.coverage.achieved,
87
- executionTime
88
- }
89
- });
90
- this.log('info', `Test suite generated successfully in ${executionTime.toFixed(2)}ms`, {
91
- suiteId: testSuite.id,
92
- testCount: testSuite.tests.length,
93
- coverage: testSuite.coverage.achieved
94
- });
95
- return this.createSuccessResponse(testSuite, requestId);
96
- }
97
- catch (error) {
98
- this.log('error', 'Test generation failed', { error: error instanceof Error ? error.message : String(error) });
99
- // Execute post-task hook with failure
100
- if (args.agentId) {
101
- await this.hookExecutor.executePostTask({
102
- taskId: args.agentId,
103
- results: { error: error instanceof Error ? error.message : String(error) }
104
- }).catch((hookError) => {
105
- this.log('error', 'Failed to execute post-task hook', {
106
- error: hookError instanceof Error ? hookError.message : String(hookError)
107
- });
108
- });
109
- }
110
- return this.createErrorResponse(error instanceof Error ? error.message : 'Test generation failed', requestId);
111
- }
112
- }
113
- initializeGenerators() {
114
- this.generators.set('unit', {
115
- analyzer: 'function-analysis',
116
- strategy: 'boundary-value-analysis',
117
- patterns: ['arrange-act-assert', 'given-when-then'],
118
- coverage: ['statement', 'branch', 'function']
119
- });
120
- this.generators.set('integration', {
121
- analyzer: 'dependency-analysis',
122
- strategy: 'interaction-testing',
123
- patterns: ['mock-integration', 'contract-testing'],
124
- coverage: ['interface', 'workflow', 'data-flow']
125
- });
126
- this.generators.set('e2e', {
127
- analyzer: 'user-flow-analysis',
128
- strategy: 'scenario-based',
129
- patterns: ['page-object-model', 'behavior-driven'],
130
- coverage: ['user-journey', 'business-logic', 'ui-interaction']
131
- });
132
- this.generators.set('property-based', {
133
- analyzer: 'property-analysis',
134
- strategy: 'hypothesis-testing',
135
- patterns: ['quickcheck', 'property-invariants'],
136
- coverage: ['input-space', 'invariants', 'edge-cases']
137
- });
138
- this.generators.set('mutation', {
139
- analyzer: 'code-mutation',
140
- strategy: 'fault-injection',
141
- patterns: ['mutant-killing', 'fault-detection'],
142
- coverage: ['mutation-score', 'fault-types', 'test-strength']
143
- });
144
- }
145
- validateTestGenerationSpec(spec) {
146
- const validTypes = ['unit', 'integration', 'e2e', 'property-based', 'mutation'];
147
- if (!validTypes.includes(spec.type)) {
148
- throw new Error(`Invalid test type: ${spec.type}. Must be one of: ${validTypes.join(', ')}`);
149
- }
150
- if (!spec.sourceCode || !spec.sourceCode.repositoryUrl) {
151
- throw new Error('Source code repository URL is required');
152
- }
153
- if (spec.coverageTarget < 0 || spec.coverageTarget > 100) {
154
- throw new Error('Coverage target must be between 0 and 100');
155
- }
156
- }
157
- async generateTestSuite(spec, agentId) {
158
- const suiteId = `test-suite-${spec.type}-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(3)}`;
159
- // Analyze source code
160
- const analysisResults = await this.analyzeSourceCode(spec.sourceCode);
161
- // Generate test cases
162
- const tests = await this.generateTestCases(spec, analysisResults);
163
- // Calculate coverage
164
- const coverage = await this.calculateCoverage(tests, spec.coverageTarget, analysisResults);
165
- // Synthesize test data if requested
166
- if (spec.synthesizeData) {
167
- await this.synthesizeTestData(tests, analysisResults);
168
- }
169
- const testSuite = {
170
- id: suiteId,
171
- type: spec.type,
172
- name: `${spec.type.charAt(0).toUpperCase() + spec.type.slice(1)} Test Suite`,
173
- framework: spec.frameworks?.[0] || this.getDefaultFramework(spec.sourceCode.language),
174
- language: spec.sourceCode.language,
175
- tests,
176
- coverage,
177
- metadata: {
178
- generatedAt: new Date().toISOString(),
179
- sourceCommit: spec.sourceCode.branch,
180
- analysisResults,
181
- synthesizedData: spec.synthesizeData
182
- }
183
- };
184
- // Store test suite
185
- this.generatedSuites.set(suiteId, testSuite);
186
- return testSuite;
187
- }
188
- async analyzeSourceCode(sourceCode) {
189
- this.log('info', 'Analyzing source code', { repository: sourceCode.repositoryUrl, language: sourceCode.language });
190
- // Simulate code analysis
191
- // In a real implementation, this would:
192
- // 1. Clone the repository
193
- // 2. Parse AST for the target language
194
- // 3. Extract functions, classes, dependencies
195
- // 4. Identify complexity metrics
196
- // 5. Map control flow and data flow
197
- await new Promise(resolve => setTimeout(resolve, 200));
198
- return {
199
- functions: this.generateMockFunctions(sourceCode.language),
200
- classes: this.generateMockClasses(sourceCode.language),
201
- dependencies: this.generateMockDependencies(),
202
- complexity: this.generateComplexityMetrics(),
203
- patterns: this.identifyCodePatterns(sourceCode.language)
204
- };
205
- }
206
- async generateTestCases(spec, analysisResults) {
207
- const generator = this.generators.get(spec.type);
208
- const testCases = [];
209
- this.log('info', 'Generating test cases', { type: spec.type, strategy: generator.strategy });
210
- // Generate test cases based on type and analysis
211
- for (const func of analysisResults.functions) {
212
- const testCase = await this.generateTestCaseForFunction(spec, func, generator);
213
- testCases.push(testCase);
214
- }
215
- // Add edge case tests
216
- const edgeCases = await this.generateEdgeCaseTests(spec, analysisResults);
217
- testCases.push(...edgeCases);
218
- return testCases;
219
- }
220
- async generateTestCaseForFunction(spec, func, generator) {
221
- const testId = `test-${func.name}-${Date.now()}-${SecureRandom_js_1.SecureRandom.generateId(2)}`;
222
- return {
223
- id: testId,
224
- name: `test_${func.name}_${this.generateTestSuffix(spec.type)}`,
225
- description: `Test ${func.name} for ${spec.type} coverage`,
226
- type: spec.type,
227
- sourceFile: func.file,
228
- targetFunction: func.name,
229
- code: this.generateTestCode(spec, func, generator),
230
- assertions: this.generateAssertions(spec.type, func),
231
- tags: ['generated', spec.type, func.complexity || 'medium'],
232
- testData: spec.synthesizeData ? this.generateTestData(func) : undefined
233
- };
234
- }
235
- async generateEdgeCaseTests(spec, analysisResults) {
236
- // Generate edge case tests based on analysis
237
- const edgeCases = [];
238
- // Add boundary value tests
239
- if (spec.type === 'unit') {
240
- edgeCases.push(...this.generateBoundaryValueTests(analysisResults));
241
- }
242
- // Add error condition tests
243
- edgeCases.push(...this.generateErrorConditionTests(analysisResults));
244
- return edgeCases;
245
- }
246
- async calculateCoverage(tests, target, analysisResults) {
247
- // Simulate coverage calculation
248
- const achieved = Math.min(target + SecureRandom_js_1.SecureRandom.randomFloat() * 10, 95); // Simulate realistic coverage
249
- const gaps = [];
250
- if (achieved < target) {
251
- gaps.push({
252
- file: 'example.js',
253
- lines: [15, 23, 45],
254
- functions: ['uncoveredFunction'],
255
- branches: [2, 7],
256
- priority: 'medium'
257
- });
258
- }
259
- return {
260
- target,
261
- achieved: Math.round(achieved * 100) / 100,
262
- gaps
263
- };
264
- }
265
- async synthesizeTestData(tests, analysisResults) {
266
- this.log('info', 'Synthesizing test data');
267
- for (const test of tests) {
268
- if (!test.testData) {
269
- test.testData = this.generateRealisticTestData(test, analysisResults);
270
- }
271
- }
272
- }
273
- // Helper methods for mock data generation
274
- generateMockFunctions(language) {
275
- const functions = [
276
- { name: 'processData', file: 'processor.js', complexity: 'medium', parameters: ['data', 'options'] },
277
- { name: 'validateInput', file: 'validator.js', complexity: 'low', parameters: ['input'] },
278
- { name: 'calculateResult', file: 'calculator.js', complexity: 'high', parameters: ['a', 'b', 'operation'] }
279
- ];
280
- return functions.map(f => ({ ...f, language }));
281
- }
282
- generateMockClasses(language) {
283
- return [
284
- { name: 'DataProcessor', file: 'processor.js', methods: ['process', 'validate'] },
285
- { name: 'Calculator', file: 'calculator.js', methods: ['add', 'subtract', 'multiply'] }
286
- ];
287
- }
288
- generateMockDependencies() {
289
- return [
290
- { name: 'lodash', type: 'external', version: '^4.17.21' },
291
- { name: './utils', type: 'internal', exports: ['helper1', 'helper2'] }
292
- ];
293
- }
294
- generateComplexityMetrics() {
295
- return {
296
- cyclomaticComplexity: 3.2,
297
- linesOfCode: 156,
298
- maintainabilityIndex: 68.5,
299
- technicalDebt: 'low'
300
- };
301
- }
302
- identifyCodePatterns(language) {
303
- return ['mvc', 'observer', 'factory', 'singleton'];
304
- }
305
- generateTestSuffix(type) {
306
- const suffixes = {
307
- 'unit': 'should_return_expected_result',
308
- 'integration': 'should_integrate_correctly',
309
- 'e2e': 'should_complete_workflow',
310
- 'property-based': 'should_satisfy_property',
311
- 'mutation': 'should_detect_mutant'
312
- };
313
- return suffixes[type] || 'should_work';
314
- }
315
- generateTestCode(spec, func, generator) {
316
- // Generate basic test code structure
317
- const framework = spec.frameworks?.[0] || this.getDefaultFramework(spec.sourceCode.language);
318
- if (framework.includes('jest') || framework.includes('mocha')) {
319
- return this.generateJavaScriptTestCode(func, spec.type);
320
- }
321
- else if (framework.includes('pytest')) {
322
- return this.generatePythonTestCode(func, spec.type);
323
- }
324
- return this.generateGenericTestCode(func, spec.type);
325
- }
326
- generateJavaScriptTestCode(func, type) {
327
- return `describe('${func.name}', () => {
328
- test('should ${this.generateTestSuffix(type)}', () => {
329
- // Arrange
330
- const input = ${JSON.stringify(this.generateSampleInput(func))};
331
-
332
- // Act
333
- const result = ${func.name}(input);
334
-
335
- // Assert
336
- expect(result).toBeDefined();
337
- // Add more specific assertions based on function analysis
338
- });
339
- });`;
340
- }
341
- generatePythonTestCode(func, type) {
342
- return `def test_${func.name}_${this.generateTestSuffix(type)}():
343
- # Arrange
344
- input_data = ${JSON.stringify(this.generateSampleInput(func))}
345
-
346
- # Act
347
- result = ${func.name}(input_data)
348
-
349
- # Assert
350
- assert result is not None
351
- # Add more specific assertions based on function analysis`;
352
- }
353
- generateGenericTestCode(func, type) {
354
- return `// Test for ${func.name}
355
- // Type: ${type}
356
- // Generated test code would be customized based on language and framework`;
357
- }
358
- generateAssertions(type, func) {
359
- const baseAssertions = [
360
- {
361
- type: 'notEquals',
362
- description: 'Result should not be null or undefined',
363
- expected: null,
364
- actual: 'result'
365
- }
366
- ];
367
- if (type === 'property-based') {
368
- baseAssertions.push({
369
- type: 'property',
370
- description: 'Result should satisfy property invariants',
371
- actual: 'result'
372
- });
373
- }
374
- return baseAssertions;
375
- }
376
- generateTestData(func) {
377
- return {
378
- input: this.generateSampleInput(func),
379
- expected: this.generateExpectedOutput(func),
380
- edgeCases: this.generateEdgeCaseInputs(func)
381
- };
382
- }
383
- generateSampleInput(func) {
384
- // Generate realistic sample input based on function parameters
385
- const sampleData = {};
386
- for (const param of func.parameters || []) {
387
- sampleData[param] = this.generateSampleValueForParameter(param);
388
- }
389
- return sampleData;
390
- }
391
- generateSampleValueForParameter(param) {
392
- const samples = {
393
- 'data': { id: 1, name: 'test', value: 42 },
394
- 'input': 'sample input',
395
- 'options': { timeout: 5000, retries: 3 },
396
- 'a': 10,
397
- 'b': 5,
398
- 'operation': 'add'
399
- };
400
- return samples[param] || 'default_value';
401
- }
402
- generateExpectedOutput(func) {
403
- return 'expected_result_based_on_analysis';
404
- }
405
- generateEdgeCaseInputs(func) {
406
- return [
407
- null,
408
- undefined,
409
- '',
410
- 0,
411
- -1,
412
- Number.MAX_SAFE_INTEGER
413
- ];
414
- }
415
- generateBoundaryValueTests(analysisResults) {
416
- // Generate boundary value tests
417
- return [];
418
- }
419
- generateErrorConditionTests(analysisResults) {
420
- // Generate error condition tests
421
- return [];
422
- }
423
- generateRealisticTestData(test, analysisResults) {
424
- return {
425
- scenario: `realistic_data_for_${test.name}`,
426
- values: this.generateSampleInput({ parameters: ['input'] })
427
- };
428
- }
429
- getDefaultFramework(language) {
430
- const defaults = {
431
- 'javascript': 'jest',
432
- 'typescript': 'jest',
433
- 'python': 'pytest',
434
- 'java': 'junit',
435
- 'csharp': 'nunit',
436
- 'go': 'testing'
437
- };
438
- return defaults[language] || 'generic';
439
- }
440
- /**
441
- * Get test suite by ID
442
- */
443
- getTestSuite(suiteId) {
444
- return this.generatedSuites.get(suiteId);
445
- }
446
- /**
447
- * List all generated test suites
448
- */
449
- listTestSuites() {
450
- return Array.from(this.generatedSuites.values());
451
- }
452
- }
453
- exports.TestGenerateHandler = TestGenerateHandler;
454
- //# sourceMappingURL=test-generate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-generate.js","sourceRoot":"","sources":["../../../src/mcp/handlers/test-generate.ts"],"names":[],"mappings":"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"}