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,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"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * Batch Test Generation Example
4
+ *
5
+ * Demonstrates using the BatchOperationManager to generate tests
6
+ * for multiple files in parallel with automatic retry and timeout handling.
7
+ *
8
+ * Performance Improvement:
9
+ * - Sequential: 3 files × 2s = 6s
10
+ * - Batched: max(2s) with 5 concurrent = ~2s
11
+ * - Speedup: 3x faster
12
+ *
13
+ * @module agents/examples/batchGenerate
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.generateTestsForFiles = generateTestsForFiles;
17
+ exports.generateTestsForDirectory = generateTestsForDirectory;
18
+ exports.generateTestsWithPriority = generateTestsWithPriority;
19
+ const batch_operations_1 = require("../../utils/batch-operations");
20
+ /**
21
+ * Batch test generation for multiple files
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const files = [
26
+ * { filePath: 'src/utils/parser.ts' },
27
+ * { filePath: 'src/utils/validator.ts' },
28
+ * { filePath: 'src/utils/formatter.ts' }
29
+ * ];
30
+ *
31
+ * const result = await generateTestsForFiles(files, {
32
+ * framework: 'jest',
33
+ * targetCoverage: 80,
34
+ * maxConcurrent: 5,
35
+ * onProgress: (completed, total, file) => {
36
+ * console.log(`Progress: ${completed}/${total} - ${file}`);
37
+ * }
38
+ * });
39
+ *
40
+ * console.log(`Generated ${result.results.length} test files`);
41
+ * console.log(`Success rate: ${result.successRate * 100}%`);
42
+ * console.log(`Total time: ${result.totalTime}ms`);
43
+ * ```
44
+ */
45
+ async function generateTestsForFiles(files, config) {
46
+ const batchManager = new batch_operations_1.BatchOperationManager();
47
+ const { framework, targetCoverage = 80, maxConcurrent = 5, timeout = 60000, retryOnError = true, onProgress, } = config;
48
+ // Handler function for single file generation
49
+ const generateForFile = async (input) => {
50
+ const startTime = Date.now();
51
+ // This would call your actual test generation service
52
+ // For now, this is a placeholder that shows the integration pattern
53
+ const result = await generateUnitTestsForFile({
54
+ filePath: input.filePath,
55
+ content: input.content,
56
+ framework,
57
+ targetCoverage,
58
+ ...input.config,
59
+ });
60
+ const generationTime = Date.now() - startTime;
61
+ return {
62
+ filePath: input.filePath,
63
+ testFilePath: getTestFilePath(input.filePath, framework),
64
+ result,
65
+ generationTime,
66
+ };
67
+ };
68
+ // Execute batch generation
69
+ return batchManager.batchExecute(files, generateForFile, {
70
+ maxConcurrent,
71
+ timeout,
72
+ retryOnError,
73
+ maxRetries: 3,
74
+ failFast: false,
75
+ onProgress: (completed, total) => {
76
+ const currentFile = files[completed - 1]?.filePath || 'unknown';
77
+ onProgress?.(completed, total, currentFile);
78
+ },
79
+ });
80
+ }
81
+ /**
82
+ * Placeholder for actual test generation implementation
83
+ * Replace this with your actual TestGeneratorAgent call
84
+ */
85
+ async function generateUnitTestsForFile(params) {
86
+ // This would integrate with your TestGeneratorAgent
87
+ // For demonstration purposes only
88
+ throw new Error('Not implemented - integrate with TestGeneratorAgent');
89
+ }
90
+ /**
91
+ * Get test file path based on source file path
92
+ */
93
+ function getTestFilePath(sourcePath, framework) {
94
+ const extension = framework === 'jest' || framework === 'vitest' ? '.test.ts' : '.spec.ts';
95
+ return sourcePath.replace(/\.(ts|js)$/, extension);
96
+ }
97
+ /**
98
+ * Batch generate tests for an entire directory
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const result = await generateTestsForDirectory('src/utils', {
103
+ * framework: 'jest',
104
+ * pattern: '**\/*.ts',
105
+ * exclude: ['**\/*.test.ts', '**\/*.spec.ts'],
106
+ * maxConcurrent: 5
107
+ * });
108
+ * ```
109
+ */
110
+ async function generateTestsForDirectory(directory, config) {
111
+ const { pattern = '**/*.ts', exclude = ['**/*.test.ts', '**/*.spec.ts'] } = config;
112
+ // Find all matching files (would use glob or similar)
113
+ const files = await findSourceFiles(directory, pattern, exclude);
114
+ return generateTestsForFiles(files, config);
115
+ }
116
+ /**
117
+ * Placeholder for file discovery
118
+ * Replace with actual glob implementation
119
+ */
120
+ async function findSourceFiles(directory, pattern, exclude) {
121
+ // This would use glob or a similar file discovery mechanism
122
+ throw new Error('Not implemented - integrate with file system utilities');
123
+ }
124
+ /**
125
+ * Batch generate tests with intelligent prioritization
126
+ *
127
+ * Prioritizes files by:
128
+ * 1. Code complexity (higher first)
129
+ * 2. Current test coverage (lower first)
130
+ * 3. Change frequency (higher first)
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const result = await generateTestsWithPriority(
135
+ * [
136
+ * { filePath: 'src/complex.ts', complexity: 15, coverage: 20 },
137
+ * { filePath: 'src/simple.ts', complexity: 3, coverage: 80 },
138
+ * ],
139
+ * { framework: 'jest' }
140
+ * );
141
+ * ```
142
+ */
143
+ async function generateTestsWithPriority(files, config) {
144
+ // Sort by priority score
145
+ const prioritized = [...files].sort((a, b) => {
146
+ const scoreA = calculatePriorityScore(a);
147
+ const scoreB = calculatePriorityScore(b);
148
+ return scoreB - scoreA; // Higher score first
149
+ });
150
+ return generateTestsForFiles(prioritized, config);
151
+ }
152
+ /**
153
+ * Calculate priority score for a file
154
+ * Higher score = higher priority
155
+ */
156
+ function calculatePriorityScore(file) {
157
+ const complexity = file.complexity || 5;
158
+ const coverage = file.coverage || 50;
159
+ const changeFrequency = file.changeFrequency || 1;
160
+ // Normalize to 0-100 scale and weight
161
+ const complexityScore = Math.min(complexity * 5, 100) * 0.4;
162
+ const coverageScore = (100 - coverage) * 0.4; // Invert: lower coverage = higher priority
163
+ const changeScore = Math.min(changeFrequency * 10, 100) * 0.2;
164
+ return complexityScore + coverageScore + changeScore;
165
+ }
166
+ //# sourceMappingURL=batchGenerate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchGenerate.js","sourceRoot":"","sources":["../../../src/agents/examples/batchGenerate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Test Generator with PII Tokenization
3
+ *
4
+ * Integrates PIITokenizer with TestGeneratorAgent to ensure GDPR/CCPA compliance
5
+ * when generating tests with realistic data.
6
+ *
7
+ * @module agents/generateWithPII
8
+ * @compliance GDPR Article 25, CCPA Section 1798.100, PCI-DSS 3.4
9
+ */
10
+ /**
11
+ * Test generation result with PII tracking
12
+ */
13
+ export interface TestGenerationWithPIIResult {
14
+ /** Generated test file path */
15
+ testFile: string;
16
+ /** Final test code with original PII (for file output only) */
17
+ testCode: string;
18
+ /** Tokenized version (safe for logs/database) */
19
+ tokenizedCode: string;
20
+ /** PII statistics for audit trail */
21
+ piiStats: {
22
+ emails: number;
23
+ phones: number;
24
+ ssns: number;
25
+ creditCards: number;
26
+ names: number;
27
+ total: number;
28
+ };
29
+ /** Framework used */
30
+ framework: 'jest' | 'vitest';
31
+ /** Success indicator */
32
+ success: boolean;
33
+ }
34
+ /**
35
+ * Generate test code with PII tokenization for compliance
36
+ *
37
+ * **WORKFLOW:**
38
+ * 1. Generate test code using TestGeneratorAgent
39
+ * 2. Tokenize PII before logging or storing
40
+ * 3. Store tokenized version in database (GDPR compliant)
41
+ * 4. Return detokenized version for file writing (user-controlled)
42
+ * 5. Clear reverse map to minimize data retention
43
+ *
44
+ * @param params - Test generation parameters
45
+ * @returns Test generation result with PII tracking
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const result = await generateTestWithRealisticData({
50
+ * sourceFile: '/src/UserService.ts',
51
+ * framework: 'jest',
52
+ * includeRealisticData: true
53
+ * });
54
+ *
55
+ * // Tokenized version stored in database (GDPR compliant)
56
+ * await db.storeTest({
57
+ * sourceFile: result.testFile,
58
+ * testCode: result.tokenizedCode,
59
+ * framework: result.framework
60
+ * });
61
+ *
62
+ * // Original PII written to file (user-controlled)
63
+ * await fs.writeFile(result.testFile, result.testCode);
64
+ *
65
+ * console.log(`Generated test with ${result.piiStats.total} PII instances`);
66
+ * ```
67
+ */
68
+ export declare function generateTestWithRealisticData(params: {
69
+ sourceFile: string;
70
+ framework: 'jest' | 'vitest';
71
+ includeRealisticData?: boolean;
72
+ }): Promise<TestGenerationWithPIIResult>;
73
+ /**
74
+ * Batch generate tests with PII tokenization
75
+ *
76
+ * Processes multiple source files concurrently while maintaining PII compliance.
77
+ *
78
+ * @param files - Source files to generate tests for
79
+ * @param framework - Testing framework to use
80
+ * @returns Array of test generation results
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const results = await batchGenerateTestsWithPII(
85
+ * ['/src/UserService.ts', '/src/PaymentService.ts'],
86
+ * 'jest'
87
+ * );
88
+ *
89
+ * // Store all tokenized versions
90
+ * await Promise.all(results.map(r => db.storeTest({
91
+ * sourceFile: r.testFile,
92
+ * testCode: r.tokenizedCode
93
+ * })));
94
+ *
95
+ * // Write original versions to files
96
+ * await Promise.all(results.map(r =>
97
+ * fs.writeFile(r.testFile, r.testCode)
98
+ * ));
99
+ *
100
+ * const totalPII = results.reduce((sum, r) => sum + r.piiStats.total, 0);
101
+ * console.log(`Total PII instances across all tests: ${totalPII}`);
102
+ * ```
103
+ */
104
+ export declare function batchGenerateTestsWithPII(files: string[], framework: 'jest' | 'vitest'): Promise<TestGenerationWithPIIResult[]>;
105
+ /**
106
+ * Validate PII tokenization compliance
107
+ *
108
+ * Ensures that tokenized content contains no PII for audit purposes.
109
+ *
110
+ * @param tokenizedContent - Content to validate
111
+ * @returns Validation result with any detected PII
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * const { tokenized } = tokenizer.tokenize(testCode);
116
+ * const validation = validateNoLeakedPII(tokenized);
117
+ *
118
+ * if (!validation.compliant) {
119
+ * console.error('PII leak detected!', validation.leakedPII);
120
+ * throw new Error('GDPR compliance violation');
121
+ * }
122
+ * ```
123
+ */
124
+ export declare function validateNoLeakedPII(tokenizedContent: string): {
125
+ compliant: boolean;
126
+ leakedPII: string[];
127
+ };
128
+ //# sourceMappingURL=generateWithPII.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateWithPII.d.ts","sourceRoot":"","sources":["../../src/agents/generateWithPII.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IAEjB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IAEjB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IAEtB,qCAAqC;IACrC,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,qBAAqB;IACrB,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE7B,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAqDvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,GAAG,QAAQ,GAC3B,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAUxC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG;IAC7D,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAgBA"}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ /**
3
+ * Test Generator with PII Tokenization
4
+ *
5
+ * Integrates PIITokenizer with TestGeneratorAgent to ensure GDPR/CCPA compliance
6
+ * when generating tests with realistic data.
7
+ *
8
+ * @module agents/generateWithPII
9
+ * @compliance GDPR Article 25, CCPA Section 1798.100, PCI-DSS 3.4
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.generateTestWithRealisticData = generateTestWithRealisticData;
13
+ exports.batchGenerateTestsWithPII = batchGenerateTestsWithPII;
14
+ exports.validateNoLeakedPII = validateNoLeakedPII;
15
+ const pii_tokenization_1 = require("../security/pii-tokenization");
16
+ /**
17
+ * Generate test code with PII tokenization for compliance
18
+ *
19
+ * **WORKFLOW:**
20
+ * 1. Generate test code using TestGeneratorAgent
21
+ * 2. Tokenize PII before logging or storing
22
+ * 3. Store tokenized version in database (GDPR compliant)
23
+ * 4. Return detokenized version for file writing (user-controlled)
24
+ * 5. Clear reverse map to minimize data retention
25
+ *
26
+ * @param params - Test generation parameters
27
+ * @returns Test generation result with PII tracking
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const result = await generateTestWithRealisticData({
32
+ * sourceFile: '/src/UserService.ts',
33
+ * framework: 'jest',
34
+ * includeRealisticData: true
35
+ * });
36
+ *
37
+ * // Tokenized version stored in database (GDPR compliant)
38
+ * await db.storeTest({
39
+ * sourceFile: result.testFile,
40
+ * testCode: result.tokenizedCode,
41
+ * framework: result.framework
42
+ * });
43
+ *
44
+ * // Original PII written to file (user-controlled)
45
+ * await fs.writeFile(result.testFile, result.testCode);
46
+ *
47
+ * console.log(`Generated test with ${result.piiStats.total} PII instances`);
48
+ * ```
49
+ */
50
+ async function generateTestWithRealisticData(params) {
51
+ const tokenizer = new pii_tokenization_1.PIITokenizer();
52
+ try {
53
+ // Step 1: Generate test code using TestGeneratorAgent
54
+ // Note: This is a simplified example - actual TestGeneratorAgent construction
55
+ // would require proper context, memoryStore, and eventBus setup
56
+ const testCode = `
57
+ // Generated test with realistic data
58
+ import { describe, it, expect } from '${params.framework}';
59
+
60
+ describe('User Service Tests', () => {
61
+ it('should handle user creation', () => {
62
+ const user = {
63
+ email: 'test@example.com',
64
+ phone: '555-1234',
65
+ // PII data would be here in actual generation
66
+ };
67
+ expect(user).toBeDefined();
68
+ });
69
+ });
70
+ `.trim();
71
+ // Step 2: Tokenize PII before logging or storing
72
+ const { tokenized, reverseMap, piiCount, piiBreakdown } = tokenizer.tokenize(testCode);
73
+ // Step 3: Log tokenized version (safe, GDPR compliant)
74
+ console.log(`[PII Tokenization] Generated test with ${piiCount} PII instances (tokenized)`);
75
+ console.log('[PII Breakdown]', piiBreakdown);
76
+ // Tokenized content is safe for logging
77
+ if (process.env.DEBUG_TESTS === 'true') {
78
+ console.log('[Tokenized Content]', tokenized.substring(0, 500));
79
+ }
80
+ // Step 4: Restore original PII for file writing
81
+ const finalCode = tokenizer.detokenize(tokenized, reverseMap);
82
+ return {
83
+ testFile: params.sourceFile.replace(/\.ts$/, '.test.ts'),
84
+ testCode: finalCode, // Original PII for file output
85
+ tokenizedCode: tokenized, // PII-free version for database/logs
86
+ piiStats: {
87
+ ...piiBreakdown,
88
+ total: piiCount,
89
+ },
90
+ framework: params.framework,
91
+ success: true,
92
+ };
93
+ }
94
+ finally {
95
+ // Step 5: CRITICAL - Clear reverse map to minimize data retention (GDPR Article 5(1)(e))
96
+ tokenizer.clear();
97
+ }
98
+ }
99
+ /**
100
+ * Batch generate tests with PII tokenization
101
+ *
102
+ * Processes multiple source files concurrently while maintaining PII compliance.
103
+ *
104
+ * @param files - Source files to generate tests for
105
+ * @param framework - Testing framework to use
106
+ * @returns Array of test generation results
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * const results = await batchGenerateTestsWithPII(
111
+ * ['/src/UserService.ts', '/src/PaymentService.ts'],
112
+ * 'jest'
113
+ * );
114
+ *
115
+ * // Store all tokenized versions
116
+ * await Promise.all(results.map(r => db.storeTest({
117
+ * sourceFile: r.testFile,
118
+ * testCode: r.tokenizedCode
119
+ * })));
120
+ *
121
+ * // Write original versions to files
122
+ * await Promise.all(results.map(r =>
123
+ * fs.writeFile(r.testFile, r.testCode)
124
+ * ));
125
+ *
126
+ * const totalPII = results.reduce((sum, r) => sum + r.piiStats.total, 0);
127
+ * console.log(`Total PII instances across all tests: ${totalPII}`);
128
+ * ```
129
+ */
130
+ async function batchGenerateTestsWithPII(files, framework) {
131
+ return Promise.all(files.map(sourceFile => generateTestWithRealisticData({
132
+ sourceFile,
133
+ framework,
134
+ includeRealisticData: true,
135
+ })));
136
+ }
137
+ /**
138
+ * Validate PII tokenization compliance
139
+ *
140
+ * Ensures that tokenized content contains no PII for audit purposes.
141
+ *
142
+ * @param tokenizedContent - Content to validate
143
+ * @returns Validation result with any detected PII
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * const { tokenized } = tokenizer.tokenize(testCode);
148
+ * const validation = validateNoLeakedPII(tokenized);
149
+ *
150
+ * if (!validation.compliant) {
151
+ * console.error('PII leak detected!', validation.leakedPII);
152
+ * throw new Error('GDPR compliance violation');
153
+ * }
154
+ * ```
155
+ */
156
+ function validateNoLeakedPII(tokenizedContent) {
157
+ const detector = new pii_tokenization_1.PIITokenizer();
158
+ const { piiCount, piiBreakdown } = detector.tokenize(tokenizedContent);
159
+ const leakedPII = [];
160
+ if (piiBreakdown.emails > 0)
161
+ leakedPII.push(`${piiBreakdown.emails} emails`);
162
+ if (piiBreakdown.phones > 0)
163
+ leakedPII.push(`${piiBreakdown.phones} phones`);
164
+ if (piiBreakdown.ssns > 0)
165
+ leakedPII.push(`${piiBreakdown.ssns} SSNs`);
166
+ if (piiBreakdown.creditCards > 0)
167
+ leakedPII.push(`${piiBreakdown.creditCards} credit cards`);
168
+ if (piiBreakdown.names > 0)
169
+ leakedPII.push(`${piiBreakdown.names} names`);
170
+ return {
171
+ compliant: piiCount === 0,
172
+ leakedPII,
173
+ };
174
+ }
175
+ //# sourceMappingURL=generateWithPII.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateWithPII.js","sourceRoot":"","sources":["../../src/agents/generateWithPII.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA8BhE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,aAAa,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,EAAE,oBAAoB;IAIxC;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAyRzE;;OAEG;IACH,iBAAiB,IAAI,WAAW,EAAE;IAwBlC;;OAEG;IACH,OAAO,CAAC,sBAAsB;CA6W/B;AAGD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAQ/G"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA8BhE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,aAAa,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,EAAE,oBAAoB;IAIxC;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAuRzE;;OAEG;IACH,iBAAiB,IAAI,WAAW,EAAE;IAwBlC;;OAEG;IACH,OAAO,CAAC,sBAAsB;CA6W/B;AAGD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAQ/G"}
@@ -183,8 +183,6 @@ class QEAgentFactory {
183
183
  requiredMetrics: ['coverage', 'quality-score', 'security-scan']
184
184
  }
185
185
  };
186
- // TODO: Uncomment when DeploymentReadinessAgent is implemented
187
- // return new DeploymentReadinessAgent(deploymentConfig);
188
186
  throw new Error(`Agent type ${type} implementation in progress. Week 2 P0.`);
189
187
  }
190
188
  case types_1.QEAgentType.PERFORMANCE_TESTER: {