agentic-qe 1.9.3 → 1.9.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 (108) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +30 -5
  3. package/config/.env.otel.example +25 -0
  4. package/config/OTEL-QUICK-REFERENCE.md +137 -0
  5. package/config/README-OTEL.md +222 -0
  6. package/config/alerting-rules.yml +518 -0
  7. package/config/docker-compose.otel.yml +187 -0
  8. package/config/grafana/dashboards/agentic-qe-overview.json +286 -0
  9. package/config/grafana/provisioning/dashboards/dashboards.yml +19 -0
  10. package/config/grafana/provisioning/datasources/datasources.yml +53 -0
  11. package/config/otel-collector-config.yaml.example +145 -0
  12. package/config/prometheus.yml.example +106 -0
  13. package/dist/alerting/AlertManager.d.ts +120 -0
  14. package/dist/alerting/AlertManager.d.ts.map +1 -0
  15. package/dist/alerting/AlertManager.js +345 -0
  16. package/dist/alerting/AlertManager.js.map +1 -0
  17. package/dist/alerting/FeedbackRouter.d.ts +98 -0
  18. package/dist/alerting/FeedbackRouter.d.ts.map +1 -0
  19. package/dist/alerting/FeedbackRouter.js +331 -0
  20. package/dist/alerting/FeedbackRouter.js.map +1 -0
  21. package/dist/alerting/StrategyApplicator.d.ts +120 -0
  22. package/dist/alerting/StrategyApplicator.d.ts.map +1 -0
  23. package/dist/alerting/StrategyApplicator.js +299 -0
  24. package/dist/alerting/StrategyApplicator.js.map +1 -0
  25. package/dist/alerting/index.d.ts +68 -0
  26. package/dist/alerting/index.d.ts.map +1 -0
  27. package/dist/alerting/index.js +112 -0
  28. package/dist/alerting/index.js.map +1 -0
  29. package/dist/alerting/types.d.ts +118 -0
  30. package/dist/alerting/types.d.ts.map +1 -0
  31. package/dist/alerting/types.js +11 -0
  32. package/dist/alerting/types.js.map +1 -0
  33. package/dist/cli/init/claude-config.d.ts.map +1 -1
  34. package/dist/cli/init/claude-config.js +12 -7
  35. package/dist/cli/init/claude-config.js.map +1 -1
  36. package/dist/core/memory/IPatternStore.d.ts +209 -0
  37. package/dist/core/memory/IPatternStore.d.ts.map +1 -0
  38. package/dist/core/memory/IPatternStore.js +15 -0
  39. package/dist/core/memory/IPatternStore.js.map +1 -0
  40. package/dist/core/memory/MigrationTools.d.ts +192 -0
  41. package/dist/core/memory/MigrationTools.d.ts.map +1 -0
  42. package/dist/core/memory/MigrationTools.js +615 -0
  43. package/dist/core/memory/MigrationTools.js.map +1 -0
  44. package/dist/core/memory/NeuralEnhancement.d.ts +154 -0
  45. package/dist/core/memory/NeuralEnhancement.d.ts.map +1 -0
  46. package/dist/core/memory/NeuralEnhancement.js +598 -0
  47. package/dist/core/memory/NeuralEnhancement.js.map +1 -0
  48. package/dist/core/memory/PatternStoreFactory.d.ts +143 -0
  49. package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -0
  50. package/dist/core/memory/PatternStoreFactory.js +370 -0
  51. package/dist/core/memory/PatternStoreFactory.js.map +1 -0
  52. package/dist/core/memory/RealAgentDBAdapter.d.ts +1 -0
  53. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  54. package/dist/core/memory/RealAgentDBAdapter.js +28 -20
  55. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  56. package/dist/core/memory/RuVectorPatternStore.d.ts +198 -0
  57. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -0
  58. package/dist/core/memory/RuVectorPatternStore.js +605 -0
  59. package/dist/core/memory/RuVectorPatternStore.js.map +1 -0
  60. package/dist/core/memory/SelfHealingMonitor.d.ts +186 -0
  61. package/dist/core/memory/SelfHealingMonitor.d.ts.map +1 -0
  62. package/dist/core/memory/SelfHealingMonitor.js +451 -0
  63. package/dist/core/memory/SelfHealingMonitor.js.map +1 -0
  64. package/dist/core/memory/SwarmMemoryManager.d.ts +62 -0
  65. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  66. package/dist/core/memory/SwarmMemoryManager.js +97 -0
  67. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  68. package/dist/core/memory/index.d.ts +11 -0
  69. package/dist/core/memory/index.d.ts.map +1 -1
  70. package/dist/core/memory/index.js +36 -1
  71. package/dist/core/memory/index.js.map +1 -1
  72. package/dist/reasoning/RuVectorReasoningAdapter.d.ts +232 -0
  73. package/dist/reasoning/RuVectorReasoningAdapter.d.ts.map +1 -0
  74. package/dist/reasoning/RuVectorReasoningAdapter.js +585 -0
  75. package/dist/reasoning/RuVectorReasoningAdapter.js.map +1 -0
  76. package/dist/reasoning/index.d.ts +2 -0
  77. package/dist/reasoning/index.d.ts.map +1 -1
  78. package/dist/reasoning/index.js +6 -1
  79. package/dist/reasoning/index.js.map +1 -1
  80. package/dist/reporting/ResultAggregator.d.ts +107 -0
  81. package/dist/reporting/ResultAggregator.d.ts.map +1 -0
  82. package/dist/reporting/ResultAggregator.js +435 -0
  83. package/dist/reporting/ResultAggregator.js.map +1 -0
  84. package/dist/reporting/index.d.ts +48 -0
  85. package/dist/reporting/index.d.ts.map +1 -0
  86. package/dist/reporting/index.js +154 -0
  87. package/dist/reporting/index.js.map +1 -0
  88. package/dist/reporting/reporters/ControlLoopReporter.d.ts +128 -0
  89. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +1 -0
  90. package/dist/reporting/reporters/ControlLoopReporter.js +417 -0
  91. package/dist/reporting/reporters/ControlLoopReporter.js.map +1 -0
  92. package/dist/reporting/reporters/HumanReadableReporter.d.ts +140 -0
  93. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +1 -0
  94. package/dist/reporting/reporters/HumanReadableReporter.js +524 -0
  95. package/dist/reporting/reporters/HumanReadableReporter.js.map +1 -0
  96. package/dist/reporting/reporters/JSONReporter.d.ts +193 -0
  97. package/dist/reporting/reporters/JSONReporter.d.ts.map +1 -0
  98. package/dist/reporting/reporters/JSONReporter.js +324 -0
  99. package/dist/reporting/reporters/JSONReporter.js.map +1 -0
  100. package/dist/reporting/reporters/index.d.ts +14 -0
  101. package/dist/reporting/reporters/index.d.ts.map +1 -0
  102. package/dist/reporting/reporters/index.js +19 -0
  103. package/dist/reporting/reporters/index.js.map +1 -0
  104. package/dist/reporting/types.d.ts +427 -0
  105. package/dist/reporting/types.d.ts.map +1 -0
  106. package/dist/reporting/types.js +12 -0
  107. package/dist/reporting/types.js.map +1 -0
  108. package/package.json +9 -1
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Result Aggregator
3
+ *
4
+ * Collects and aggregates test results, coverage data, quality metrics,
5
+ * and other execution data from multiple sources into a unified structure.
6
+ *
7
+ * @module reporting/ResultAggregator
8
+ * @version 1.0.0
9
+ */
10
+ import { AggregatedResults, ExecutionMetadata, ProjectInfo, TestSuiteResult } from './types';
11
+ import { TestResult, QualityMetrics, CoverageReport, TestResultsSummary, SecurityScanResults, PerformanceMetrics } from '../mcp/tools/qe/shared/types';
12
+ /**
13
+ * Input data for aggregation
14
+ */
15
+ export interface AggregatorInput {
16
+ /** Project information */
17
+ project: ProjectInfo;
18
+ /** Test results */
19
+ testResults?: {
20
+ tests: TestResult[];
21
+ suites?: TestSuiteResult[];
22
+ summary?: TestResultsSummary;
23
+ };
24
+ /** Coverage data */
25
+ coverage?: CoverageReport;
26
+ /** Quality metrics */
27
+ qualityMetrics?: QualityMetrics;
28
+ /** Performance metrics */
29
+ performance?: PerformanceMetrics;
30
+ /** Security scan results */
31
+ security?: SecurityScanResults;
32
+ /** Execution metadata */
33
+ metadata?: Partial<ExecutionMetadata>;
34
+ }
35
+ /**
36
+ * Result Aggregator
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const aggregator = new ResultAggregator();
41
+ *
42
+ * const results = aggregator.aggregate({
43
+ * project: { name: 'my-project', version: '1.0.0' },
44
+ * testResults: { tests: [...], summary: {...} },
45
+ * coverage: coverageData,
46
+ * qualityMetrics: metrics
47
+ * });
48
+ * ```
49
+ */
50
+ export declare class ResultAggregator {
51
+ private executionId;
52
+ private startTime;
53
+ constructor();
54
+ /**
55
+ * Aggregate results from multiple sources
56
+ */
57
+ aggregate(input: AggregatorInput): AggregatedResults;
58
+ /**
59
+ * Aggregate test results
60
+ */
61
+ private aggregateTestResults;
62
+ /**
63
+ * Aggregate coverage data
64
+ */
65
+ private aggregateCoverage;
66
+ /**
67
+ * Aggregate quality metrics
68
+ */
69
+ private aggregateQualityMetrics;
70
+ /**
71
+ * Aggregate performance data
72
+ */
73
+ private aggregatePerformance;
74
+ /**
75
+ * Aggregate security data
76
+ */
77
+ private aggregateSecurity;
78
+ /**
79
+ * Build execution metadata
80
+ */
81
+ private buildMetadata;
82
+ /**
83
+ * Calculate overall execution status
84
+ */
85
+ private calculateStatus;
86
+ /**
87
+ * Generate execution summary
88
+ */
89
+ private generateSummary;
90
+ /**
91
+ * Generate status message
92
+ */
93
+ private generateStatusMessage;
94
+ /**
95
+ * Calculate quality grade
96
+ */
97
+ private calculateGrade;
98
+ /**
99
+ * Reset aggregator for new execution
100
+ */
101
+ reset(): void;
102
+ /**
103
+ * Get current execution ID
104
+ */
105
+ getExecutionId(): string;
106
+ }
107
+ //# sourceMappingURL=ResultAggregator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultAggregator.d.ts","sourceRoot":"","sources":["../../src/reporting/ResultAggregator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,iBAAiB,EAMjB,iBAAiB,EAGjB,WAAW,EACX,eAAe,EAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,OAAO,EAAE,WAAW,CAAC;IAErB,mBAAmB;IACnB,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,kBAAkB,CAAC;KAC9B,CAAC;IAEF,oBAAoB;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,sBAAsB;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAE/B,yBAAyB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;;IAO1B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB;IAiDpD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4C5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkEzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgD/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2EvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+B7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB"}
@@ -0,0 +1,435 @@
1
+ "use strict";
2
+ /**
3
+ * Result Aggregator
4
+ *
5
+ * Collects and aggregates test results, coverage data, quality metrics,
6
+ * and other execution data from multiple sources into a unified structure.
7
+ *
8
+ * @module reporting/ResultAggregator
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ResultAggregator = void 0;
13
+ const uuid_1 = require("uuid");
14
+ /**
15
+ * Result Aggregator
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const aggregator = new ResultAggregator();
20
+ *
21
+ * const results = aggregator.aggregate({
22
+ * project: { name: 'my-project', version: '1.0.0' },
23
+ * testResults: { tests: [...], summary: {...} },
24
+ * coverage: coverageData,
25
+ * qualityMetrics: metrics
26
+ * });
27
+ * ```
28
+ */
29
+ class ResultAggregator {
30
+ constructor() {
31
+ this.executionId = (0, uuid_1.v4)();
32
+ this.startTime = Date.now();
33
+ }
34
+ /**
35
+ * Aggregate results from multiple sources
36
+ */
37
+ aggregate(input) {
38
+ const now = new Date().toISOString();
39
+ const executionDuration = Date.now() - this.startTime;
40
+ // Aggregate test results
41
+ const testResults = this.aggregateTestResults(input.testResults);
42
+ // Aggregate coverage data
43
+ const coverage = this.aggregateCoverage(input.coverage);
44
+ // Aggregate quality metrics
45
+ const qualityMetrics = this.aggregateQualityMetrics(input.qualityMetrics);
46
+ // Aggregate performance data
47
+ const performance = this.aggregatePerformance(input.performance);
48
+ // Aggregate security data
49
+ const security = this.aggregateSecurity(input.security);
50
+ // Build execution metadata
51
+ const metadata = this.buildMetadata(input.metadata, executionDuration);
52
+ // Calculate overall status
53
+ const status = this.calculateStatus(testResults, coverage, qualityMetrics, security);
54
+ // Generate summary
55
+ const summary = this.generateSummary(testResults, coverage, qualityMetrics, security, status);
56
+ return {
57
+ executionId: this.executionId,
58
+ timestamp: now,
59
+ project: input.project,
60
+ testResults,
61
+ coverage,
62
+ qualityMetrics,
63
+ performance,
64
+ security,
65
+ metadata,
66
+ status,
67
+ summary
68
+ };
69
+ }
70
+ /**
71
+ * Aggregate test results
72
+ */
73
+ aggregateTestResults(input) {
74
+ if (!input || !input.tests) {
75
+ return {
76
+ total: 0,
77
+ passed: 0,
78
+ failed: 0,
79
+ skipped: 0,
80
+ duration: 0,
81
+ tests: [],
82
+ passRate: 0,
83
+ failureRate: 0
84
+ };
85
+ }
86
+ const tests = input.tests;
87
+ const summary = input.summary;
88
+ // Calculate totals
89
+ const total = summary?.total || tests.length;
90
+ const passed = summary?.passed || tests.filter(t => t.status === 'passed').length;
91
+ const failed = summary?.failed || tests.filter(t => t.status === 'failed').length;
92
+ const skipped = summary?.skipped || tests.filter(t => t.status === 'skipped').length;
93
+ const flaky = summary?.flakyTests;
94
+ const duration = summary?.duration || tests.reduce((sum, t) => sum + t.duration, 0);
95
+ const passRate = total > 0 ? passed / total : 0;
96
+ const failureRate = total > 0 ? failed / total : 0;
97
+ return {
98
+ total,
99
+ passed,
100
+ failed,
101
+ skipped,
102
+ flaky,
103
+ duration,
104
+ tests,
105
+ suites: input.suites,
106
+ passRate,
107
+ failureRate
108
+ };
109
+ }
110
+ /**
111
+ * Aggregate coverage data
112
+ */
113
+ aggregateCoverage(input) {
114
+ if (!input) {
115
+ return undefined;
116
+ }
117
+ const { summary, files } = input;
118
+ return {
119
+ overall: summary.overallPercentage,
120
+ lines: {
121
+ total: summary.totalLines,
122
+ covered: summary.coveredLines,
123
+ uncovered: summary.totalLines - summary.coveredLines,
124
+ percentage: summary.totalLines > 0
125
+ ? (summary.coveredLines / summary.totalLines) * 100
126
+ : 0
127
+ },
128
+ branches: {
129
+ total: summary.totalBranches,
130
+ covered: summary.coveredBranches,
131
+ uncovered: summary.totalBranches - summary.coveredBranches,
132
+ percentage: summary.totalBranches > 0
133
+ ? (summary.coveredBranches / summary.totalBranches) * 100
134
+ : 0
135
+ },
136
+ functions: {
137
+ total: summary.totalFunctions,
138
+ covered: summary.coveredFunctions,
139
+ uncovered: summary.totalFunctions - summary.coveredFunctions,
140
+ percentage: summary.totalFunctions > 0
141
+ ? (summary.coveredFunctions / summary.totalFunctions) * 100
142
+ : 0
143
+ },
144
+ statements: {
145
+ total: summary.totalLines, // Approximation
146
+ covered: summary.coveredLines,
147
+ uncovered: summary.totalLines - summary.coveredLines,
148
+ percentage: summary.totalLines > 0
149
+ ? (summary.coveredLines / summary.totalLines) * 100
150
+ : 0
151
+ },
152
+ files: files.map(file => ({
153
+ path: file.path,
154
+ lines: {
155
+ total: file.lines.total,
156
+ covered: file.lines.covered,
157
+ uncovered: file.lines.uncovered.length,
158
+ percentage: file.lines.percentage
159
+ },
160
+ branches: {
161
+ total: file.branches.total,
162
+ covered: file.branches.covered,
163
+ uncovered: file.branches.uncovered.length,
164
+ percentage: file.branches.percentage
165
+ },
166
+ functions: {
167
+ total: file.functions.total,
168
+ covered: file.functions.covered,
169
+ uncovered: file.functions.uncovered.length,
170
+ percentage: file.functions.percentage
171
+ },
172
+ uncoveredLines: file.lines.uncovered
173
+ }))
174
+ };
175
+ }
176
+ /**
177
+ * Aggregate quality metrics
178
+ */
179
+ aggregateQualityMetrics(input) {
180
+ if (!input) {
181
+ return undefined;
182
+ }
183
+ // Calculate overall quality score (weighted)
184
+ const weights = {
185
+ coverage: 0.3,
186
+ testQuality: 0.25,
187
+ security: 0.25,
188
+ codeQuality: 0.2
189
+ };
190
+ const coverageScore = input.coverage.overallPercentage;
191
+ const testQualityScore = (1 - input.testResults.failureRate) * 100;
192
+ const securityScore = Math.max(0, 100 - input.security.summary.critical * 50 - input.security.summary.high * 10);
193
+ const codeQualityScore = input.codeQuality.maintainabilityIndex;
194
+ const score = Math.round(coverageScore * weights.coverage +
195
+ testQualityScore * weights.testQuality +
196
+ securityScore * weights.security +
197
+ codeQualityScore * weights.codeQuality);
198
+ // Calculate grade
199
+ const grade = this.calculateGrade(score);
200
+ return {
201
+ score,
202
+ grade,
203
+ codeQuality: {
204
+ maintainabilityIndex: input.codeQuality.maintainabilityIndex,
205
+ cyclomaticComplexity: input.codeQuality.cyclomaticComplexity,
206
+ technicalDebt: input.codeQuality.technicalDebt,
207
+ codeSmells: input.codeQuality.codeSmells,
208
+ duplications: input.codeQuality.duplications
209
+ },
210
+ gatesPassed: 0, // Will be calculated by quality gate evaluation
211
+ gatesFailed: 0
212
+ };
213
+ }
214
+ /**
215
+ * Aggregate performance data
216
+ */
217
+ aggregatePerformance(input) {
218
+ if (!input) {
219
+ return undefined;
220
+ }
221
+ return {
222
+ responseTime: {
223
+ min: 0, // Not provided in input
224
+ max: input.responseTime.max,
225
+ mean: (input.responseTime.p50 + input.responseTime.p95 + input.responseTime.p99) / 3,
226
+ median: input.responseTime.p50,
227
+ p95: input.responseTime.p95,
228
+ p99: input.responseTime.p99
229
+ },
230
+ throughput: input.throughput,
231
+ errorRate: input.errorRate,
232
+ resources: {
233
+ cpu: input.resourceUsage.cpu,
234
+ memory: input.resourceUsage.memory,
235
+ disk: input.resourceUsage.disk
236
+ }
237
+ };
238
+ }
239
+ /**
240
+ * Aggregate security data
241
+ */
242
+ aggregateSecurity(input) {
243
+ if (!input) {
244
+ return undefined;
245
+ }
246
+ const total = input.summary.critical +
247
+ input.summary.high +
248
+ input.summary.medium +
249
+ input.summary.low;
250
+ // Calculate security score
251
+ const score = Math.max(0, 100 -
252
+ input.summary.critical * 50 -
253
+ input.summary.high * 15 -
254
+ input.summary.medium * 5 -
255
+ input.summary.low * 1);
256
+ return {
257
+ total,
258
+ summary: {
259
+ critical: input.summary.critical,
260
+ high: input.summary.high,
261
+ medium: input.summary.medium,
262
+ low: input.summary.low,
263
+ info: 0 // Default to 0 if not provided
264
+ },
265
+ score,
266
+ vulnerabilities: input.vulnerabilities.map(v => ({
267
+ id: v.id,
268
+ severity: v.severity,
269
+ title: v.title,
270
+ description: v.description,
271
+ file: v.file,
272
+ cwe: v.cwe,
273
+ cvss: v.cvss
274
+ }))
275
+ };
276
+ }
277
+ /**
278
+ * Build execution metadata
279
+ */
280
+ buildMetadata(input, duration) {
281
+ const now = new Date().toISOString();
282
+ const startTime = new Date(this.startTime).toISOString();
283
+ return {
284
+ startedAt: input?.startedAt || startTime,
285
+ completedAt: input?.completedAt || now,
286
+ duration: duration || Date.now() - this.startTime,
287
+ ci: input?.ci,
288
+ agent: input?.agent,
289
+ environment: input?.environment
290
+ };
291
+ }
292
+ /**
293
+ * Calculate overall execution status
294
+ */
295
+ calculateStatus(testResults, coverage, qualityMetrics, security) {
296
+ // Critical failure: tests failed
297
+ if (testResults.failureRate > 0.05) {
298
+ return 'failure';
299
+ }
300
+ // Critical failure: critical security vulnerabilities
301
+ if (security && security.summary.critical > 0) {
302
+ return 'failure';
303
+ }
304
+ // Warning: low coverage
305
+ if (coverage && coverage.overall < 70) {
306
+ return 'warning';
307
+ }
308
+ // Warning: high security vulnerabilities
309
+ if (security && security.summary.high > 0) {
310
+ return 'warning';
311
+ }
312
+ // Warning: low quality score
313
+ if (qualityMetrics && qualityMetrics.score < 70) {
314
+ return 'warning';
315
+ }
316
+ return 'success';
317
+ }
318
+ /**
319
+ * Generate execution summary
320
+ */
321
+ generateSummary(testResults, coverage, qualityMetrics, security, status) {
322
+ const highlights = [];
323
+ const recommendations = [];
324
+ let criticalIssues = 0;
325
+ let warnings = 0;
326
+ // Test results analysis
327
+ if (testResults.passRate >= 0.95) {
328
+ highlights.push(`Excellent test pass rate: ${(testResults.passRate * 100).toFixed(1)}%`);
329
+ }
330
+ else if (testResults.failureRate > 0.05) {
331
+ criticalIssues++;
332
+ recommendations.push('Fix failing tests before deployment');
333
+ }
334
+ // Coverage analysis
335
+ if (coverage) {
336
+ if (coverage.overall >= 80) {
337
+ highlights.push(`Good code coverage: ${coverage.overall.toFixed(1)}%`);
338
+ }
339
+ else if (coverage.overall < 70) {
340
+ warnings++;
341
+ recommendations.push(`Increase code coverage to minimum 80% (current: ${coverage.overall.toFixed(1)}%)`);
342
+ }
343
+ }
344
+ // Security analysis
345
+ if (security) {
346
+ if (security.summary.critical > 0) {
347
+ criticalIssues += security.summary.critical;
348
+ recommendations.push(`Address ${security.summary.critical} critical security vulnerabilities immediately`);
349
+ }
350
+ else if (security.summary.high === 0 && security.summary.medium === 0) {
351
+ highlights.push('No security vulnerabilities detected');
352
+ }
353
+ }
354
+ // Quality analysis
355
+ if (qualityMetrics) {
356
+ if (qualityMetrics.score >= 85) {
357
+ highlights.push(`High quality score: ${qualityMetrics.score} (${qualityMetrics.grade})`);
358
+ }
359
+ else if (qualityMetrics.score < 70) {
360
+ warnings++;
361
+ recommendations.push('Improve code quality metrics');
362
+ }
363
+ }
364
+ // Deployment readiness
365
+ const deploymentReady = status === 'success' &&
366
+ criticalIssues === 0 &&
367
+ testResults.failureRate <= 0.05;
368
+ // Status message
369
+ const message = this.generateStatusMessage(status || 'success', testResults, coverage, security);
370
+ return {
371
+ status: status || 'success',
372
+ message,
373
+ criticalIssues,
374
+ warnings,
375
+ recommendations: recommendations.slice(0, 5),
376
+ deploymentReady,
377
+ highlights: highlights.slice(0, 5)
378
+ };
379
+ }
380
+ /**
381
+ * Generate status message
382
+ */
383
+ generateStatusMessage(status, testResults, coverage, security) {
384
+ switch (status) {
385
+ case 'success':
386
+ return 'All quality checks passed. Ready for deployment.';
387
+ case 'warning':
388
+ return `Quality checks completed with warnings. ${testResults.passed}/${testResults.total} tests passed. Review warnings before deployment.`;
389
+ case 'failure':
390
+ const issues = [];
391
+ if (testResults.failed > 0) {
392
+ issues.push(`${testResults.failed} test(s) failed`);
393
+ }
394
+ if (security?.summary.critical && security.summary.critical > 0) {
395
+ issues.push(`${security.summary.critical} critical security issue(s)`);
396
+ }
397
+ return `Quality checks failed: ${issues.join(', ')}. Deployment blocked.`;
398
+ case 'error':
399
+ return 'Quality check execution encountered errors.';
400
+ default:
401
+ return 'Quality check status unknown.';
402
+ }
403
+ }
404
+ /**
405
+ * Calculate quality grade
406
+ */
407
+ calculateGrade(score) {
408
+ if (score >= 95)
409
+ return 'A+';
410
+ if (score >= 85)
411
+ return 'A';
412
+ if (score >= 75)
413
+ return 'B';
414
+ if (score >= 65)
415
+ return 'C';
416
+ if (score >= 55)
417
+ return 'D';
418
+ return 'F';
419
+ }
420
+ /**
421
+ * Reset aggregator for new execution
422
+ */
423
+ reset() {
424
+ this.executionId = (0, uuid_1.v4)();
425
+ this.startTime = Date.now();
426
+ }
427
+ /**
428
+ * Get current execution ID
429
+ */
430
+ getExecutionId() {
431
+ return this.executionId;
432
+ }
433
+ }
434
+ exports.ResultAggregator = ResultAggregator;
435
+ //# sourceMappingURL=ResultAggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultAggregator.js","sourceRoot":"","sources":["../../src/reporting/ResultAggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Reporting Module
3
+ *
4
+ * Complete output generation and reporting system for quality check results.
5
+ * Supports multiple output formats and provides result aggregation capabilities.
6
+ *
7
+ * @module reporting
8
+ * @version 1.0.0
9
+ */
10
+ export * from './types';
11
+ export { ResultAggregator, AggregatorInput } from './ResultAggregator';
12
+ export { HumanReadableReporter, JSONReporter, JSONReportOutput, ControlLoopReporter, ControlLoopConfig } from './reporters';
13
+ export type { Reporter, ReporterConfig, ReportFormat, ReporterOutput, AggregatedResults, ControlLoopFeedback } from './types';
14
+ /**
15
+ * Reporter Factory
16
+ *
17
+ * Creates appropriate reporter based on format
18
+ */
19
+ import { Reporter, ReporterConfig, ReportFormat } from './types';
20
+ export declare class ReporterFactory {
21
+ /**
22
+ * Create reporter by format
23
+ */
24
+ static create(format: ReportFormat, config?: Partial<ReporterConfig>): Reporter;
25
+ /**
26
+ * Create all reporters
27
+ */
28
+ static createAll(config?: Partial<ReporterConfig>): Map<ReportFormat, Reporter>;
29
+ /**
30
+ * Get available formats
31
+ */
32
+ static getAvailableFormats(): ReportFormat[];
33
+ /**
34
+ * Validate format
35
+ */
36
+ static isValidFormat(format: string): format is ReportFormat;
37
+ }
38
+ /**
39
+ * Convenience function to generate reports in all formats
40
+ */
41
+ import { AggregatedResults, ReporterOutput } from './types';
42
+ export declare function generateAllReports(results: AggregatedResults, config?: Partial<ReporterConfig>): Promise<Map<ReportFormat, ReporterOutput>>;
43
+ export declare function writeReports(results: AggregatedResults, outputDir: string, config?: Partial<ReporterConfig>): Promise<Map<ReportFormat, string>>;
44
+ /**
45
+ * Quick report generation helper
46
+ */
47
+ export declare function quickReport(results: AggregatedResults, format?: ReportFormat): Promise<string>;
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporting/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACb,MAAM,SAAS,CAAC;AAKjB,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,QAAQ;IA8B/E;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC;IAU/E;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,YAAY,EAAE;IAI5C;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,YAAY;CAG7D;AAED;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5D,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAW5C;AAQD,wBAAsB,YAAY,CAChC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAgBpC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAE,YAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7G"}