agentic-qe 1.9.4 → 2.1.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 (262) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +95 -1336
  2. package/.claude/agents/qe-chaos-engineer.md +152 -1211
  3. package/.claude/agents/qe-code-complexity.md +144 -707
  4. package/.claude/agents/qe-coverage-analyzer.md +147 -743
  5. package/.claude/agents/qe-deployment-readiness.md +143 -1496
  6. package/.claude/agents/qe-flaky-test-hunter.md +132 -1529
  7. package/.claude/agents/qe-fleet-commander.md +12 -12
  8. package/.claude/agents/qe-performance-tester.md +150 -886
  9. package/.claude/agents/qe-production-intelligence.md +155 -1396
  10. package/.claude/agents/qe-quality-analyzer.md +6 -6
  11. package/.claude/agents/qe-quality-gate.md +151 -648
  12. package/.claude/agents/qe-regression-risk-analyzer.md +132 -1150
  13. package/.claude/agents/qe-requirements-validator.md +149 -932
  14. package/.claude/agents/qe-security-scanner.md +157 -797
  15. package/.claude/agents/qe-test-data-architect.md +96 -1365
  16. package/.claude/agents/qe-test-executor.md +8 -8
  17. package/.claude/agents/qe-test-generator.md +145 -1540
  18. package/.claude/agents/qe-visual-tester.md +153 -1257
  19. package/.claude/agents/qx-partner.md +248 -0
  20. package/.claude/agents/subagents/qe-code-reviewer.md +40 -136
  21. package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +40 -480
  22. package/.claude/agents/subagents/qe-data-generator.md +41 -125
  23. package/.claude/agents/subagents/qe-flaky-investigator.md +55 -411
  24. package/.claude/agents/subagents/qe-integration-tester.md +53 -141
  25. package/.claude/agents/subagents/qe-performance-validator.md +54 -130
  26. package/.claude/agents/subagents/qe-security-auditor.md +56 -114
  27. package/.claude/agents/subagents/qe-test-data-architect-sub.md +57 -548
  28. package/.claude/agents/subagents/qe-test-implementer.md +58 -551
  29. package/.claude/agents/subagents/qe-test-refactorer.md +65 -722
  30. package/.claude/agents/subagents/qe-test-writer.md +63 -726
  31. package/.claude/skills/accessibility-testing/SKILL.md +144 -692
  32. package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
  33. package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
  34. package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
  35. package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
  36. package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
  37. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
  38. package/.claude/skills/code-review-quality/SKILL.md +158 -608
  39. package/.claude/skills/compatibility-testing/SKILL.md +148 -38
  40. package/.claude/skills/compliance-testing/SKILL.md +132 -63
  41. package/.claude/skills/consultancy-practices/SKILL.md +114 -446
  42. package/.claude/skills/context-driven-testing/SKILL.md +117 -381
  43. package/.claude/skills/contract-testing/SKILL.md +176 -141
  44. package/.claude/skills/database-testing/SKILL.md +137 -130
  45. package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
  46. package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
  47. package/.claude/skills/localization-testing/SKILL.md +145 -33
  48. package/.claude/skills/mobile-testing/SKILL.md +132 -448
  49. package/.claude/skills/mutation-testing/SKILL.md +147 -41
  50. package/.claude/skills/performance-testing/SKILL.md +200 -546
  51. package/.claude/skills/quality-metrics/SKILL.md +164 -519
  52. package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
  53. package/.claude/skills/regression-testing/SKILL.md +120 -926
  54. package/.claude/skills/risk-based-testing/SKILL.md +157 -660
  55. package/.claude/skills/security-testing/SKILL.md +199 -538
  56. package/.claude/skills/sherlock-review/SKILL.md +163 -699
  57. package/.claude/skills/shift-left-testing/SKILL.md +161 -465
  58. package/.claude/skills/shift-right-testing/SKILL.md +161 -519
  59. package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
  60. package/.claude/skills/skills-manifest.json +683 -0
  61. package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
  62. package/.claude/skills/technical-writing/SKILL.md +103 -154
  63. package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
  64. package/.claude/skills/test-data-management/SKILL.md +126 -910
  65. package/.claude/skills/test-design-techniques/SKILL.md +179 -89
  66. package/.claude/skills/test-environment-management/SKILL.md +136 -91
  67. package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
  68. package/.claude/skills/testability-scoring/README.md +71 -0
  69. package/.claude/skills/testability-scoring/SKILL.md +245 -0
  70. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
  71. package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
  72. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
  73. package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
  74. package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
  75. package/.claude/skills/xp-practices/SKILL.md +151 -587
  76. package/CHANGELOG.md +110 -0
  77. package/README.md +55 -21
  78. package/dist/agents/QXPartnerAgent.d.ts +146 -0
  79. package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
  80. package/dist/agents/QXPartnerAgent.js +1831 -0
  81. package/dist/agents/QXPartnerAgent.js.map +1 -0
  82. package/dist/agents/index.d.ts +1 -0
  83. package/dist/agents/index.d.ts.map +1 -1
  84. package/dist/agents/index.js +82 -2
  85. package/dist/agents/index.js.map +1 -1
  86. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  87. package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
  88. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  89. package/dist/cli/commands/debug/agent.d.ts.map +1 -1
  90. package/dist/cli/commands/debug/agent.js +19 -6
  91. package/dist/cli/commands/debug/agent.js.map +1 -1
  92. package/dist/cli/commands/debug/health-check.js +20 -7
  93. package/dist/cli/commands/debug/health-check.js.map +1 -1
  94. package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
  95. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  96. package/dist/cli/commands/init-claude-md-template.js +18 -3
  97. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  98. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  99. package/dist/cli/commands/workflow/cancel.js +4 -3
  100. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  101. package/dist/cli/commands/workflow/list.d.ts.map +1 -1
  102. package/dist/cli/commands/workflow/list.js +4 -3
  103. package/dist/cli/commands/workflow/list.js.map +1 -1
  104. package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
  105. package/dist/cli/commands/workflow/pause.js +4 -3
  106. package/dist/cli/commands/workflow/pause.js.map +1 -1
  107. package/dist/cli/init/claude-config.d.ts.map +1 -1
  108. package/dist/cli/init/claude-config.js +3 -8
  109. package/dist/cli/init/claude-config.js.map +1 -1
  110. package/dist/cli/init/claude-md.d.ts.map +1 -1
  111. package/dist/cli/init/claude-md.js +44 -2
  112. package/dist/cli/init/claude-md.js.map +1 -1
  113. package/dist/cli/init/database-init.js +1 -1
  114. package/dist/cli/init/index.d.ts.map +1 -1
  115. package/dist/cli/init/index.js +13 -6
  116. package/dist/cli/init/index.js.map +1 -1
  117. package/dist/cli/init/skills.d.ts.map +1 -1
  118. package/dist/cli/init/skills.js +2 -1
  119. package/dist/cli/init/skills.js.map +1 -1
  120. package/dist/core/SwarmCoordinator.d.ts +180 -0
  121. package/dist/core/SwarmCoordinator.d.ts.map +1 -0
  122. package/dist/core/SwarmCoordinator.js +473 -0
  123. package/dist/core/SwarmCoordinator.js.map +1 -0
  124. package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
  125. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
  126. package/dist/core/memory/AgentDBIntegration.js +66 -10
  127. package/dist/core/memory/AgentDBIntegration.js.map +1 -1
  128. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
  129. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
  130. package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
  131. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
  132. package/dist/core/memory/index.d.ts +5 -0
  133. package/dist/core/memory/index.d.ts.map +1 -1
  134. package/dist/core/memory/index.js +23 -1
  135. package/dist/core/memory/index.js.map +1 -1
  136. package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
  137. package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
  138. package/dist/core/metrics/MetricsAggregator.js +482 -0
  139. package/dist/core/metrics/MetricsAggregator.js.map +1 -0
  140. package/dist/core/metrics/index.d.ts +5 -0
  141. package/dist/core/metrics/index.d.ts.map +1 -0
  142. package/dist/core/metrics/index.js +11 -0
  143. package/dist/core/metrics/index.js.map +1 -0
  144. package/dist/core/optimization/SwarmOptimizer.d.ts +190 -0
  145. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
  146. package/dist/core/optimization/SwarmOptimizer.js +648 -0
  147. package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
  148. package/dist/core/optimization/index.d.ts +9 -0
  149. package/dist/core/optimization/index.d.ts.map +1 -0
  150. package/dist/core/optimization/index.js +25 -0
  151. package/dist/core/optimization/index.js.map +1 -0
  152. package/dist/core/optimization/types.d.ts +53 -0
  153. package/dist/core/optimization/types.d.ts.map +1 -0
  154. package/dist/core/optimization/types.js +6 -0
  155. package/dist/core/optimization/types.js.map +1 -0
  156. package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
  157. package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
  158. package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
  159. package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
  160. package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
  161. package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
  162. package/dist/core/orchestration/PriorityQueue.js +122 -0
  163. package/dist/core/orchestration/PriorityQueue.js.map +1 -0
  164. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +189 -0
  165. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
  166. package/dist/core/orchestration/WorkflowOrchestrator.js +845 -0
  167. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
  168. package/dist/core/orchestration/index.d.ts +7 -0
  169. package/dist/core/orchestration/index.d.ts.map +1 -0
  170. package/dist/core/orchestration/index.js +11 -0
  171. package/dist/core/orchestration/index.js.map +1 -0
  172. package/dist/core/orchestration/types.d.ts +96 -0
  173. package/dist/core/orchestration/types.d.ts.map +1 -0
  174. package/dist/core/orchestration/types.js +6 -0
  175. package/dist/core/orchestration/types.js.map +1 -0
  176. package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
  177. package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
  178. package/dist/core/recovery/CircuitBreaker.js +382 -0
  179. package/dist/core/recovery/CircuitBreaker.js.map +1 -0
  180. package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
  181. package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
  182. package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
  183. package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
  184. package/dist/core/recovery/RetryStrategy.d.ts +127 -0
  185. package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
  186. package/dist/core/recovery/RetryStrategy.js +314 -0
  187. package/dist/core/recovery/RetryStrategy.js.map +1 -0
  188. package/dist/core/recovery/index.d.ts +8 -0
  189. package/dist/core/recovery/index.d.ts.map +1 -0
  190. package/dist/core/recovery/index.js +27 -0
  191. package/dist/core/recovery/index.js.map +1 -0
  192. package/dist/core/skills/DependencyResolver.d.ts +99 -0
  193. package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
  194. package/dist/core/skills/DependencyResolver.js +260 -0
  195. package/dist/core/skills/DependencyResolver.js.map +1 -0
  196. package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
  197. package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
  198. package/dist/core/skills/DynamicSkillLoader.js +353 -0
  199. package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
  200. package/dist/core/skills/ManifestGenerator.d.ts +114 -0
  201. package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
  202. package/dist/core/skills/ManifestGenerator.js +449 -0
  203. package/dist/core/skills/ManifestGenerator.js.map +1 -0
  204. package/dist/core/skills/index.d.ts +9 -0
  205. package/dist/core/skills/index.d.ts.map +1 -0
  206. package/dist/core/skills/index.js +24 -0
  207. package/dist/core/skills/index.js.map +1 -0
  208. package/dist/core/skills/types.d.ts +118 -0
  209. package/dist/core/skills/types.d.ts.map +1 -0
  210. package/dist/core/skills/types.js +7 -0
  211. package/dist/core/skills/types.js.map +1 -0
  212. package/dist/core/transport/QUICTransport.d.ts +320 -0
  213. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  214. package/dist/core/transport/QUICTransport.js +711 -0
  215. package/dist/core/transport/QUICTransport.js.map +1 -0
  216. package/dist/core/transport/index.d.ts +40 -0
  217. package/dist/core/transport/index.d.ts.map +1 -0
  218. package/dist/core/transport/index.js +46 -0
  219. package/dist/core/transport/index.js.map +1 -0
  220. package/dist/core/transport/quic-loader.d.ts +123 -0
  221. package/dist/core/transport/quic-loader.d.ts.map +1 -0
  222. package/dist/core/transport/quic-loader.js +293 -0
  223. package/dist/core/transport/quic-loader.js.map +1 -0
  224. package/dist/core/transport/quic.d.ts +154 -0
  225. package/dist/core/transport/quic.d.ts.map +1 -0
  226. package/dist/core/transport/quic.js +214 -0
  227. package/dist/core/transport/quic.js.map +1 -0
  228. package/dist/mcp/server.d.ts +9 -9
  229. package/dist/mcp/server.d.ts.map +1 -1
  230. package/dist/mcp/server.js +1 -2
  231. package/dist/mcp/server.js.map +1 -1
  232. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  233. package/dist/mcp/services/AgentRegistry.js +4 -1
  234. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  235. package/dist/types/index.d.ts +2 -1
  236. package/dist/types/index.d.ts.map +1 -1
  237. package/dist/types/index.js +2 -0
  238. package/dist/types/index.js.map +1 -1
  239. package/dist/types/qx.d.ts +429 -0
  240. package/dist/types/qx.d.ts.map +1 -0
  241. package/dist/types/qx.js +71 -0
  242. package/dist/types/qx.js.map +1 -0
  243. package/dist/visualization/api/RestEndpoints.js +2 -2
  244. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  245. package/dist/visualization/api/WebSocketServer.d.ts +44 -0
  246. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
  247. package/dist/visualization/api/WebSocketServer.js +144 -23
  248. package/dist/visualization/api/WebSocketServer.js.map +1 -1
  249. package/dist/visualization/core/DataTransformer.d.ts +10 -0
  250. package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
  251. package/dist/visualization/core/DataTransformer.js +60 -5
  252. package/dist/visualization/core/DataTransformer.js.map +1 -1
  253. package/dist/visualization/emit-event.d.ts +75 -0
  254. package/dist/visualization/emit-event.d.ts.map +1 -0
  255. package/dist/visualization/emit-event.js +213 -0
  256. package/dist/visualization/emit-event.js.map +1 -0
  257. package/dist/visualization/index.d.ts +1 -0
  258. package/dist/visualization/index.d.ts.map +1 -1
  259. package/dist/visualization/index.js +7 -1
  260. package/dist/visualization/index.js.map +1 -1
  261. package/docs/reference/skills.md +63 -1
  262. package/package.json +16 -58
@@ -0,0 +1,482 @@
1
+ "use strict";
2
+ /**
3
+ * MetricsAggregator - Unified Metrics Collection and Analysis
4
+ *
5
+ * Collects metrics from all swarm components, provides trend analysis,
6
+ * anomaly detection, and performance recommendations.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MetricsAggregator = void 0;
10
+ exports.getMetricsAggregator = getMetricsAggregator;
11
+ exports.resetMetricsAggregator = resetMetricsAggregator;
12
+ const events_1 = require("events");
13
+ const Logger_js_1 = require("../../utils/Logger.js");
14
+ /**
15
+ * Metrics Aggregator Implementation
16
+ */
17
+ class MetricsAggregator extends events_1.EventEmitter {
18
+ constructor(config) {
19
+ super();
20
+ this.metrics = new Map();
21
+ this.definitions = new Map();
22
+ this.anomalies = [];
23
+ this.recommendations = [];
24
+ this.startTime = new Date();
25
+ this.logger = Logger_js_1.Logger.getInstance();
26
+ this.config = {
27
+ maxHistoryPoints: 1000,
28
+ retentionPeriod: 86400000, // 24 hours
29
+ aggregationInterval: 60000, // 1 minute
30
+ enableAnomalyDetection: true,
31
+ anomalySensitivity: 0.7,
32
+ enableTrendAnalysis: true,
33
+ trendWindow: 300000, // 5 minutes
34
+ enableRecommendations: true,
35
+ ...config,
36
+ };
37
+ this.initializeDefaultMetrics();
38
+ }
39
+ /**
40
+ * Start the aggregator
41
+ */
42
+ start() {
43
+ this.aggregationTimer = setInterval(() => {
44
+ this.aggregate();
45
+ }, this.config.aggregationInterval);
46
+ this.emit('started');
47
+ this.logger.info('MetricsAggregator started');
48
+ }
49
+ /**
50
+ * Stop the aggregator
51
+ */
52
+ stop() {
53
+ if (this.aggregationTimer) {
54
+ clearInterval(this.aggregationTimer);
55
+ this.aggregationTimer = undefined;
56
+ }
57
+ this.emit('stopped');
58
+ this.logger.info('MetricsAggregator stopped');
59
+ }
60
+ /**
61
+ * Register a metric definition
62
+ */
63
+ registerMetric(definition) {
64
+ this.definitions.set(definition.name, definition);
65
+ if (!this.metrics.has(definition.name)) {
66
+ this.metrics.set(definition.name, {
67
+ ...definition,
68
+ points: [],
69
+ current: 0,
70
+ min: Infinity,
71
+ max: -Infinity,
72
+ avg: 0,
73
+ sum: 0,
74
+ count: 0,
75
+ });
76
+ }
77
+ }
78
+ /**
79
+ * Record a metric value
80
+ */
81
+ record(name, value, labels) {
82
+ let metric = this.metrics.get(name);
83
+ if (!metric) {
84
+ // Auto-register if not exists
85
+ const definition = {
86
+ name,
87
+ type: 'gauge',
88
+ source: 'swarm',
89
+ description: `Auto-registered metric: ${name}`,
90
+ };
91
+ this.registerMetric(definition);
92
+ metric = this.metrics.get(name);
93
+ }
94
+ const point = {
95
+ timestamp: new Date(),
96
+ value,
97
+ labels,
98
+ };
99
+ metric.points.push(point);
100
+ metric.current = value;
101
+ metric.min = Math.min(metric.min, value);
102
+ metric.max = Math.max(metric.max, value);
103
+ metric.sum += value;
104
+ metric.count++;
105
+ metric.avg = metric.sum / metric.count;
106
+ // Prune old points
107
+ this.pruneMetricHistory(metric);
108
+ // Check for anomalies
109
+ if (this.config.enableAnomalyDetection) {
110
+ this.checkForAnomaly(metric, point);
111
+ }
112
+ this.emit('metric:recorded', { name, value, labels });
113
+ }
114
+ /**
115
+ * Increment a counter metric
116
+ */
117
+ increment(name, delta = 1, labels) {
118
+ const metric = this.metrics.get(name);
119
+ const currentValue = metric?.current || 0;
120
+ this.record(name, currentValue + delta, labels);
121
+ }
122
+ /**
123
+ * Get current metric value
124
+ */
125
+ get(name) {
126
+ return this.metrics.get(name)?.current;
127
+ }
128
+ /**
129
+ * Get metric with full history
130
+ */
131
+ getMetric(name) {
132
+ return this.metrics.get(name);
133
+ }
134
+ /**
135
+ * Get all metrics
136
+ */
137
+ getAllMetrics() {
138
+ return new Map(this.metrics);
139
+ }
140
+ /**
141
+ * Get metrics by source
142
+ */
143
+ getMetricsBySource(source) {
144
+ const filtered = new Map();
145
+ for (const [name, metric] of this.metrics) {
146
+ if (metric.source === source) {
147
+ filtered.set(name, metric);
148
+ }
149
+ }
150
+ return filtered;
151
+ }
152
+ /**
153
+ * Get metrics snapshot
154
+ */
155
+ getSnapshot() {
156
+ const metrics = {};
157
+ const sources = {
158
+ swarm: {},
159
+ optimizer: {},
160
+ orchestrator: {},
161
+ scheduler: {},
162
+ memory: {},
163
+ transport: {},
164
+ recovery: {},
165
+ agent: {},
166
+ };
167
+ let totalDataPoints = 0;
168
+ let oldestPoint = new Date();
169
+ let newestPoint = new Date(0);
170
+ let activeMetrics = 0;
171
+ for (const [name, metric] of this.metrics) {
172
+ metrics[name] = metric;
173
+ sources[metric.source][name] = metric.current;
174
+ totalDataPoints += metric.points.length;
175
+ if (metric.points.length > 0) {
176
+ activeMetrics++;
177
+ const first = metric.points[0].timestamp;
178
+ const last = metric.points[metric.points.length - 1].timestamp;
179
+ if (first < oldestPoint)
180
+ oldestPoint = first;
181
+ if (last > newestPoint)
182
+ newestPoint = last;
183
+ }
184
+ }
185
+ return {
186
+ timestamp: new Date(),
187
+ metrics,
188
+ sources,
189
+ summary: {
190
+ totalMetrics: this.metrics.size,
191
+ activeMetrics,
192
+ totalDataPoints,
193
+ oldestDataPoint: oldestPoint,
194
+ newestDataPoint: newestPoint,
195
+ uptimeSeconds: (Date.now() - this.startTime.getTime()) / 1000,
196
+ },
197
+ };
198
+ }
199
+ /**
200
+ * Analyze trend for a metric
201
+ */
202
+ analyzeTrend(metricName) {
203
+ const metric = this.metrics.get(metricName);
204
+ if (!metric || metric.points.length < 3)
205
+ return null;
206
+ const windowStart = Date.now() - this.config.trendWindow;
207
+ const recentPoints = metric.points.filter(p => p.timestamp.getTime() > windowStart);
208
+ if (recentPoints.length < 3)
209
+ return null;
210
+ // Calculate linear regression
211
+ const n = recentPoints.length;
212
+ let sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0;
213
+ const baseTime = recentPoints[0].timestamp.getTime();
214
+ for (let i = 0; i < n; i++) {
215
+ const x = (recentPoints[i].timestamp.getTime() - baseTime) / 1000; // seconds
216
+ const y = recentPoints[i].value;
217
+ sumX += x;
218
+ sumY += y;
219
+ sumXY += x * y;
220
+ sumX2 += x * x;
221
+ }
222
+ const slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
223
+ const intercept = (sumY - slope * sumX) / n;
224
+ // Calculate R-squared for confidence
225
+ const yMean = sumY / n;
226
+ let ssTotal = 0, ssResidual = 0;
227
+ for (let i = 0; i < n; i++) {
228
+ const x = (recentPoints[i].timestamp.getTime() - baseTime) / 1000;
229
+ const y = recentPoints[i].value;
230
+ const predicted = slope * x + intercept;
231
+ ssTotal += Math.pow(y - yMean, 2);
232
+ ssResidual += Math.pow(y - predicted, 2);
233
+ }
234
+ const rSquared = ssTotal > 0 ? 1 - (ssResidual / ssTotal) : 0;
235
+ // Determine direction
236
+ let direction;
237
+ const threshold = Math.abs(yMean * 0.01); // 1% of mean
238
+ if (Math.abs(slope) < threshold) {
239
+ direction = rSquared < 0.5 ? 'volatile' : 'stable';
240
+ }
241
+ else {
242
+ direction = slope > 0 ? 'increasing' : 'decreasing';
243
+ }
244
+ // Calculate percent change
245
+ const firstValue = recentPoints[0].value;
246
+ const lastValue = recentPoints[n - 1].value;
247
+ const percentChange = firstValue !== 0
248
+ ? ((lastValue - firstValue) / firstValue) * 100
249
+ : 0;
250
+ // Forecast next value
251
+ const futureX = (Date.now() - baseTime) / 1000 + 60; // 1 minute ahead
252
+ const forecast = slope * futureX + intercept;
253
+ // Calculate anomaly score
254
+ const stdDev = this.calculateStdDev(recentPoints.map(p => p.value));
255
+ const anomalyScore = stdDev > 0
256
+ ? Math.min(1, Math.abs(lastValue - yMean) / (3 * stdDev))
257
+ : 0;
258
+ return {
259
+ metricName,
260
+ direction,
261
+ changeRate: slope,
262
+ percentChange,
263
+ confidence: rSquared,
264
+ forecast,
265
+ anomalyScore,
266
+ };
267
+ }
268
+ /**
269
+ * Get detected anomalies
270
+ */
271
+ getAnomalies(limit) {
272
+ const sorted = [...this.anomalies].reverse();
273
+ return limit ? sorted.slice(0, limit) : sorted;
274
+ }
275
+ /**
276
+ * Get recommendations
277
+ */
278
+ getRecommendations(limit) {
279
+ const sorted = [...this.recommendations].reverse();
280
+ return limit ? sorted.slice(0, limit) : sorted;
281
+ }
282
+ /**
283
+ * Generate recommendations based on current metrics
284
+ */
285
+ generateRecommendations() {
286
+ if (!this.config.enableRecommendations)
287
+ return [];
288
+ const newRecommendations = [];
289
+ // Check for high error rates
290
+ const errorRate = this.get('swarm.error_rate');
291
+ if (errorRate !== undefined && errorRate > 0.1) {
292
+ newRecommendations.push({
293
+ timestamp: new Date(),
294
+ category: 'alert',
295
+ priority: errorRate > 0.3 ? 'critical' : 'high',
296
+ title: 'High Error Rate Detected',
297
+ description: `Error rate is ${(errorRate * 100).toFixed(1)}%, exceeding threshold`,
298
+ metrics: ['swarm.error_rate'],
299
+ suggestedAction: 'Review recent errors and consider enabling circuit breakers',
300
+ });
301
+ }
302
+ // Check for queue pressure
303
+ const queueDepth = this.get('scheduler.queue_depth');
304
+ const queueCapacity = this.get('scheduler.queue_capacity') || 1000;
305
+ if (queueDepth !== undefined && queueDepth / queueCapacity > 0.8) {
306
+ newRecommendations.push({
307
+ timestamp: new Date(),
308
+ category: 'scaling',
309
+ priority: 'high',
310
+ title: 'High Queue Pressure',
311
+ description: `Queue is at ${((queueDepth / queueCapacity) * 100).toFixed(1)}% capacity`,
312
+ metrics: ['scheduler.queue_depth', 'scheduler.queue_capacity'],
313
+ suggestedAction: 'Consider scaling up agents or reducing task intake',
314
+ });
315
+ }
316
+ // Check for memory usage
317
+ const memoryUsage = this.get('memory.usage_bytes');
318
+ if (memoryUsage !== undefined && memoryUsage > 1000000000) { // 1GB
319
+ newRecommendations.push({
320
+ timestamp: new Date(),
321
+ category: 'optimization',
322
+ priority: 'medium',
323
+ title: 'High Memory Usage',
324
+ description: `Memory usage is ${(memoryUsage / 1000000000).toFixed(2)}GB`,
325
+ metrics: ['memory.usage_bytes'],
326
+ suggestedAction: 'Consider clearing caches or optimizing memory allocation',
327
+ });
328
+ }
329
+ // Store and emit
330
+ for (const rec of newRecommendations) {
331
+ this.recommendations.push(rec);
332
+ this.emit('recommendation', rec);
333
+ }
334
+ // Keep only recent recommendations
335
+ if (this.recommendations.length > 100) {
336
+ this.recommendations = this.recommendations.slice(-100);
337
+ }
338
+ return newRecommendations;
339
+ }
340
+ /**
341
+ * Initialize default metric definitions
342
+ */
343
+ initializeDefaultMetrics() {
344
+ const defaults = [
345
+ { name: 'swarm.active_agents', type: 'gauge', source: 'swarm', description: 'Number of active agents' },
346
+ { name: 'swarm.total_tasks', type: 'counter', source: 'swarm', description: 'Total tasks processed' },
347
+ { name: 'swarm.completed_tasks', type: 'counter', source: 'swarm', description: 'Completed tasks' },
348
+ { name: 'swarm.failed_tasks', type: 'counter', source: 'swarm', description: 'Failed tasks' },
349
+ { name: 'swarm.error_rate', type: 'gauge', source: 'swarm', description: 'Error rate (0-1)' },
350
+ { name: 'swarm.throughput', type: 'gauge', source: 'swarm', description: 'Tasks per second', unit: 'tps' },
351
+ { name: 'scheduler.queue_depth', type: 'gauge', source: 'scheduler', description: 'Current queue depth' },
352
+ { name: 'scheduler.queue_capacity', type: 'gauge', source: 'scheduler', description: 'Queue capacity' },
353
+ { name: 'scheduler.wait_time_avg', type: 'gauge', source: 'scheduler', description: 'Average wait time', unit: 'ms' },
354
+ { name: 'memory.usage_bytes', type: 'gauge', source: 'memory', description: 'Memory usage', unit: 'bytes' },
355
+ { name: 'memory.backend_health', type: 'gauge', source: 'memory', description: 'Backend health (0-1)' },
356
+ { name: 'recovery.circuit_breakers_open', type: 'gauge', source: 'recovery', description: 'Open circuit breakers' },
357
+ { name: 'recovery.total_recoveries', type: 'counter', source: 'recovery', description: 'Total recovery attempts' },
358
+ { name: 'transport.latency_p95', type: 'gauge', source: 'transport', description: 'P95 latency', unit: 'ms' },
359
+ { name: 'optimizer.recommendations', type: 'counter', source: 'optimizer', description: 'Optimization recommendations' },
360
+ ];
361
+ for (const def of defaults) {
362
+ this.registerMetric(def);
363
+ }
364
+ }
365
+ /**
366
+ * Prune old metric history
367
+ */
368
+ pruneMetricHistory(metric) {
369
+ const cutoff = Date.now() - this.config.retentionPeriod;
370
+ // Remove old points
371
+ metric.points = metric.points.filter(p => p.timestamp.getTime() > cutoff);
372
+ // Limit to max history points
373
+ if (metric.points.length > this.config.maxHistoryPoints) {
374
+ metric.points = metric.points.slice(-this.config.maxHistoryPoints);
375
+ }
376
+ }
377
+ /**
378
+ * Check for anomaly in metric
379
+ */
380
+ checkForAnomaly(metric, point) {
381
+ if (metric.points.length < 10)
382
+ return;
383
+ const values = metric.points.slice(-100).map(p => p.value);
384
+ const mean = values.reduce((a, b) => a + b, 0) / values.length;
385
+ const stdDev = this.calculateStdDev(values);
386
+ // Z-score threshold based on sensitivity
387
+ const threshold = 3 * (1 - this.config.anomalySensitivity + 0.3);
388
+ const zScore = stdDev > 0 ? Math.abs(point.value - mean) / stdDev : 0;
389
+ if (zScore > threshold) {
390
+ const severity = zScore > 4 ? 'critical' : zScore > 3.5 ? 'high' : zScore > 3 ? 'medium' : 'low';
391
+ const anomaly = {
392
+ timestamp: point.timestamp,
393
+ metricName: metric.name,
394
+ value: point.value,
395
+ expectedRange: {
396
+ min: mean - (2 * stdDev),
397
+ max: mean + (2 * stdDev),
398
+ },
399
+ severity,
400
+ description: `Value ${point.value.toFixed(2)} is ${zScore.toFixed(1)} standard deviations from mean`,
401
+ };
402
+ this.anomalies.push(anomaly);
403
+ // Keep only recent anomalies
404
+ if (this.anomalies.length > 1000) {
405
+ this.anomalies = this.anomalies.slice(-1000);
406
+ }
407
+ this.emit('anomaly', anomaly);
408
+ }
409
+ }
410
+ /**
411
+ * Calculate standard deviation
412
+ */
413
+ calculateStdDev(values) {
414
+ if (values.length < 2)
415
+ return 0;
416
+ const mean = values.reduce((a, b) => a + b, 0) / values.length;
417
+ const squaredDiffs = values.map(v => Math.pow(v - mean, 2));
418
+ const avgSquaredDiff = squaredDiffs.reduce((a, b) => a + b, 0) / values.length;
419
+ return Math.sqrt(avgSquaredDiff);
420
+ }
421
+ /**
422
+ * Aggregate metrics (called periodically)
423
+ */
424
+ aggregate() {
425
+ // Prune all metrics
426
+ for (const metric of this.metrics.values()) {
427
+ this.pruneMetricHistory(metric);
428
+ }
429
+ // Generate trend analysis for key metrics
430
+ if (this.config.enableTrendAnalysis) {
431
+ for (const name of ['swarm.error_rate', 'swarm.throughput', 'scheduler.queue_depth']) {
432
+ const trend = this.analyzeTrend(name);
433
+ if (trend) {
434
+ this.emit('trend', trend);
435
+ }
436
+ }
437
+ }
438
+ // Generate recommendations
439
+ if (this.config.enableRecommendations) {
440
+ this.generateRecommendations();
441
+ }
442
+ this.emit('aggregation:complete', {
443
+ timestamp: new Date(),
444
+ metricsCount: this.metrics.size,
445
+ });
446
+ }
447
+ /**
448
+ * Cleanup
449
+ */
450
+ destroy() {
451
+ this.stop();
452
+ this.removeAllListeners();
453
+ this.metrics.clear();
454
+ this.definitions.clear();
455
+ this.anomalies = [];
456
+ this.recommendations = [];
457
+ }
458
+ }
459
+ exports.MetricsAggregator = MetricsAggregator;
460
+ /**
461
+ * Default aggregator instance
462
+ */
463
+ let defaultAggregator = null;
464
+ /**
465
+ * Get default aggregator
466
+ */
467
+ function getMetricsAggregator(config) {
468
+ if (!defaultAggregator) {
469
+ defaultAggregator = new MetricsAggregator(config);
470
+ }
471
+ return defaultAggregator;
472
+ }
473
+ /**
474
+ * Reset default aggregator (for testing)
475
+ */
476
+ function resetMetricsAggregator() {
477
+ if (defaultAggregator) {
478
+ defaultAggregator.destroy();
479
+ defaultAggregator = null;
480
+ }
481
+ }
482
+ //# sourceMappingURL=MetricsAggregator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsAggregator.js","sourceRoot":"","sources":["../../../src/core/metrics/MetricsAggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Metrics Module - Unified Metrics Collection and Analysis
3
+ */
4
+ export { MetricsAggregator, MetricsAggregatorConfig, MetricSource, MetricType, MetricPoint, MetricDefinition, Metric, MetricsSnapshot, MetricsSummary, TrendAnalysis, Anomaly, Recommendation, getMetricsAggregator, resetMetricsAggregator, } from './MetricsAggregator.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/metrics/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,MAAM,EACN,eAAe,EACf,cAAc,EACd,aAAa,EACb,OAAO,EACP,cAAc,EACd,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Metrics Module - Unified Metrics Collection and Analysis
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resetMetricsAggregator = exports.getMetricsAggregator = exports.MetricsAggregator = void 0;
7
+ var MetricsAggregator_js_1 = require("./MetricsAggregator.js");
8
+ Object.defineProperty(exports, "MetricsAggregator", { enumerable: true, get: function () { return MetricsAggregator_js_1.MetricsAggregator; } });
9
+ Object.defineProperty(exports, "getMetricsAggregator", { enumerable: true, get: function () { return MetricsAggregator_js_1.getMetricsAggregator; } });
10
+ Object.defineProperty(exports, "resetMetricsAggregator", { enumerable: true, get: function () { return MetricsAggregator_js_1.resetMetricsAggregator; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/metrics/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+DAegC;AAd9B,yHAAA,iBAAiB,OAAA;AAYjB,4HAAA,oBAAoB,OAAA;AACpB,8HAAA,sBAAsB,OAAA"}