agentic-qe 1.9.3 → 2.0.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 (271) 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 +235 -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/skills-manifest.json +632 -0
  32. package/.claude/skills/testability-scoring/README.md +71 -0
  33. package/.claude/skills/testability-scoring/SKILL.md +611 -0
  34. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
  35. package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
  36. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
  37. package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
  38. package/CHANGELOG.md +116 -0
  39. package/README.md +59 -7
  40. package/config/.env.otel.example +25 -0
  41. package/config/OTEL-QUICK-REFERENCE.md +137 -0
  42. package/config/README-OTEL.md +222 -0
  43. package/config/alerting-rules.yml +518 -0
  44. package/config/docker-compose.otel.yml +187 -0
  45. package/config/grafana/dashboards/agentic-qe-overview.json +286 -0
  46. package/config/grafana/provisioning/dashboards/dashboards.yml +19 -0
  47. package/config/grafana/provisioning/datasources/datasources.yml +53 -0
  48. package/config/otel-collector-config.yaml.example +145 -0
  49. package/config/prometheus.yml.example +106 -0
  50. package/dist/agents/QXPartnerAgent.d.ts +139 -0
  51. package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
  52. package/dist/agents/QXPartnerAgent.js +769 -0
  53. package/dist/agents/QXPartnerAgent.js.map +1 -0
  54. package/dist/agents/index.d.ts +1 -0
  55. package/dist/agents/index.d.ts.map +1 -1
  56. package/dist/agents/index.js +82 -2
  57. package/dist/agents/index.js.map +1 -1
  58. package/dist/alerting/AlertManager.d.ts +120 -0
  59. package/dist/alerting/AlertManager.d.ts.map +1 -0
  60. package/dist/alerting/AlertManager.js +345 -0
  61. package/dist/alerting/AlertManager.js.map +1 -0
  62. package/dist/alerting/FeedbackRouter.d.ts +98 -0
  63. package/dist/alerting/FeedbackRouter.d.ts.map +1 -0
  64. package/dist/alerting/FeedbackRouter.js +331 -0
  65. package/dist/alerting/FeedbackRouter.js.map +1 -0
  66. package/dist/alerting/StrategyApplicator.d.ts +120 -0
  67. package/dist/alerting/StrategyApplicator.d.ts.map +1 -0
  68. package/dist/alerting/StrategyApplicator.js +299 -0
  69. package/dist/alerting/StrategyApplicator.js.map +1 -0
  70. package/dist/alerting/index.d.ts +68 -0
  71. package/dist/alerting/index.d.ts.map +1 -0
  72. package/dist/alerting/index.js +112 -0
  73. package/dist/alerting/index.js.map +1 -0
  74. package/dist/alerting/types.d.ts +118 -0
  75. package/dist/alerting/types.d.ts.map +1 -0
  76. package/dist/alerting/types.js +11 -0
  77. package/dist/alerting/types.js.map +1 -0
  78. package/dist/cli/commands/debug/agent.d.ts.map +1 -1
  79. package/dist/cli/commands/debug/agent.js +19 -6
  80. package/dist/cli/commands/debug/agent.js.map +1 -1
  81. package/dist/cli/commands/debug/health-check.js +20 -7
  82. package/dist/cli/commands/debug/health-check.js.map +1 -1
  83. package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
  84. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  85. package/dist/cli/commands/init-claude-md-template.js +4 -3
  86. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  87. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  88. package/dist/cli/commands/workflow/cancel.js +4 -3
  89. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  90. package/dist/cli/commands/workflow/list.d.ts.map +1 -1
  91. package/dist/cli/commands/workflow/list.js +4 -3
  92. package/dist/cli/commands/workflow/list.js.map +1 -1
  93. package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
  94. package/dist/cli/commands/workflow/pause.js +4 -3
  95. package/dist/cli/commands/workflow/pause.js.map +1 -1
  96. package/dist/cli/init/claude-config.d.ts.map +1 -1
  97. package/dist/cli/init/claude-config.js +13 -13
  98. package/dist/cli/init/claude-config.js.map +1 -1
  99. package/dist/cli/init/claude-md.d.ts.map +1 -1
  100. package/dist/cli/init/claude-md.js +44 -2
  101. package/dist/cli/init/claude-md.js.map +1 -1
  102. package/dist/cli/init/database-init.js +1 -1
  103. package/dist/cli/init/index.d.ts.map +1 -1
  104. package/dist/cli/init/index.js +13 -6
  105. package/dist/cli/init/index.js.map +1 -1
  106. package/dist/cli/init/skills.d.ts.map +1 -1
  107. package/dist/cli/init/skills.js +2 -1
  108. package/dist/cli/init/skills.js.map +1 -1
  109. package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
  110. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
  111. package/dist/core/memory/AgentDBIntegration.js +66 -10
  112. package/dist/core/memory/AgentDBIntegration.js.map +1 -1
  113. package/dist/core/memory/IPatternStore.d.ts +209 -0
  114. package/dist/core/memory/IPatternStore.d.ts.map +1 -0
  115. package/dist/core/memory/IPatternStore.js +15 -0
  116. package/dist/core/memory/IPatternStore.js.map +1 -0
  117. package/dist/core/memory/MigrationTools.d.ts +192 -0
  118. package/dist/core/memory/MigrationTools.d.ts.map +1 -0
  119. package/dist/core/memory/MigrationTools.js +615 -0
  120. package/dist/core/memory/MigrationTools.js.map +1 -0
  121. package/dist/core/memory/NeuralEnhancement.d.ts +154 -0
  122. package/dist/core/memory/NeuralEnhancement.d.ts.map +1 -0
  123. package/dist/core/memory/NeuralEnhancement.js +598 -0
  124. package/dist/core/memory/NeuralEnhancement.js.map +1 -0
  125. package/dist/core/memory/PatternStoreFactory.d.ts +143 -0
  126. package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -0
  127. package/dist/core/memory/PatternStoreFactory.js +370 -0
  128. package/dist/core/memory/PatternStoreFactory.js.map +1 -0
  129. package/dist/core/memory/RealAgentDBAdapter.d.ts +1 -0
  130. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  131. package/dist/core/memory/RealAgentDBAdapter.js +28 -20
  132. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  133. package/dist/core/memory/RuVectorPatternStore.d.ts +198 -0
  134. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -0
  135. package/dist/core/memory/RuVectorPatternStore.js +605 -0
  136. package/dist/core/memory/RuVectorPatternStore.js.map +1 -0
  137. package/dist/core/memory/SelfHealingMonitor.d.ts +186 -0
  138. package/dist/core/memory/SelfHealingMonitor.d.ts.map +1 -0
  139. package/dist/core/memory/SelfHealingMonitor.js +451 -0
  140. package/dist/core/memory/SelfHealingMonitor.js.map +1 -0
  141. package/dist/core/memory/SwarmMemoryManager.d.ts +62 -0
  142. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  143. package/dist/core/memory/SwarmMemoryManager.js +97 -0
  144. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  145. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
  146. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
  147. package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
  148. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
  149. package/dist/core/memory/index.d.ts +16 -0
  150. package/dist/core/memory/index.d.ts.map +1 -1
  151. package/dist/core/memory/index.js +58 -1
  152. package/dist/core/memory/index.js.map +1 -1
  153. package/dist/core/optimization/SwarmOptimizer.d.ts +185 -0
  154. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
  155. package/dist/core/optimization/SwarmOptimizer.js +631 -0
  156. package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
  157. package/dist/core/optimization/index.d.ts +9 -0
  158. package/dist/core/optimization/index.d.ts.map +1 -0
  159. package/dist/core/optimization/index.js +25 -0
  160. package/dist/core/optimization/index.js.map +1 -0
  161. package/dist/core/optimization/types.d.ts +53 -0
  162. package/dist/core/optimization/types.d.ts.map +1 -0
  163. package/dist/core/optimization/types.js +6 -0
  164. package/dist/core/optimization/types.js.map +1 -0
  165. package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
  166. package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
  167. package/dist/core/orchestration/PriorityQueue.js +122 -0
  168. package/dist/core/orchestration/PriorityQueue.js.map +1 -0
  169. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +176 -0
  170. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
  171. package/dist/core/orchestration/WorkflowOrchestrator.js +813 -0
  172. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
  173. package/dist/core/orchestration/index.d.ts +7 -0
  174. package/dist/core/orchestration/index.d.ts.map +1 -0
  175. package/dist/core/orchestration/index.js +11 -0
  176. package/dist/core/orchestration/index.js.map +1 -0
  177. package/dist/core/orchestration/types.d.ts +96 -0
  178. package/dist/core/orchestration/types.d.ts.map +1 -0
  179. package/dist/core/orchestration/types.js +6 -0
  180. package/dist/core/orchestration/types.js.map +1 -0
  181. package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
  182. package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
  183. package/dist/core/skills/DynamicSkillLoader.js +353 -0
  184. package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
  185. package/dist/core/skills/types.d.ts +118 -0
  186. package/dist/core/skills/types.d.ts.map +1 -0
  187. package/dist/core/skills/types.js +7 -0
  188. package/dist/core/skills/types.js.map +1 -0
  189. package/dist/core/transport/QUICTransport.d.ts +320 -0
  190. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  191. package/dist/core/transport/QUICTransport.js +711 -0
  192. package/dist/core/transport/QUICTransport.js.map +1 -0
  193. package/dist/core/transport/index.d.ts +40 -0
  194. package/dist/core/transport/index.d.ts.map +1 -0
  195. package/dist/core/transport/index.js +46 -0
  196. package/dist/core/transport/index.js.map +1 -0
  197. package/dist/core/transport/quic-loader.d.ts +123 -0
  198. package/dist/core/transport/quic-loader.d.ts.map +1 -0
  199. package/dist/core/transport/quic-loader.js +293 -0
  200. package/dist/core/transport/quic-loader.js.map +1 -0
  201. package/dist/core/transport/quic.d.ts +154 -0
  202. package/dist/core/transport/quic.d.ts.map +1 -0
  203. package/dist/core/transport/quic.js +214 -0
  204. package/dist/core/transport/quic.js.map +1 -0
  205. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  206. package/dist/mcp/services/AgentRegistry.js +4 -1
  207. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  208. package/dist/reasoning/RuVectorReasoningAdapter.d.ts +232 -0
  209. package/dist/reasoning/RuVectorReasoningAdapter.d.ts.map +1 -0
  210. package/dist/reasoning/RuVectorReasoningAdapter.js +585 -0
  211. package/dist/reasoning/RuVectorReasoningAdapter.js.map +1 -0
  212. package/dist/reasoning/index.d.ts +2 -0
  213. package/dist/reasoning/index.d.ts.map +1 -1
  214. package/dist/reasoning/index.js +6 -1
  215. package/dist/reasoning/index.js.map +1 -1
  216. package/dist/reporting/ResultAggregator.d.ts +107 -0
  217. package/dist/reporting/ResultAggregator.d.ts.map +1 -0
  218. package/dist/reporting/ResultAggregator.js +435 -0
  219. package/dist/reporting/ResultAggregator.js.map +1 -0
  220. package/dist/reporting/index.d.ts +48 -0
  221. package/dist/reporting/index.d.ts.map +1 -0
  222. package/dist/reporting/index.js +154 -0
  223. package/dist/reporting/index.js.map +1 -0
  224. package/dist/reporting/reporters/ControlLoopReporter.d.ts +128 -0
  225. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +1 -0
  226. package/dist/reporting/reporters/ControlLoopReporter.js +417 -0
  227. package/dist/reporting/reporters/ControlLoopReporter.js.map +1 -0
  228. package/dist/reporting/reporters/HumanReadableReporter.d.ts +140 -0
  229. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +1 -0
  230. package/dist/reporting/reporters/HumanReadableReporter.js +524 -0
  231. package/dist/reporting/reporters/HumanReadableReporter.js.map +1 -0
  232. package/dist/reporting/reporters/JSONReporter.d.ts +193 -0
  233. package/dist/reporting/reporters/JSONReporter.d.ts.map +1 -0
  234. package/dist/reporting/reporters/JSONReporter.js +324 -0
  235. package/dist/reporting/reporters/JSONReporter.js.map +1 -0
  236. package/dist/reporting/reporters/index.d.ts +14 -0
  237. package/dist/reporting/reporters/index.d.ts.map +1 -0
  238. package/dist/reporting/reporters/index.js +19 -0
  239. package/dist/reporting/reporters/index.js.map +1 -0
  240. package/dist/reporting/types.d.ts +427 -0
  241. package/dist/reporting/types.d.ts.map +1 -0
  242. package/dist/reporting/types.js +12 -0
  243. package/dist/reporting/types.js.map +1 -0
  244. package/dist/types/index.d.ts +2 -1
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/qx.d.ts +397 -0
  249. package/dist/types/qx.d.ts.map +1 -0
  250. package/dist/types/qx.js +71 -0
  251. package/dist/types/qx.js.map +1 -0
  252. package/dist/visualization/api/RestEndpoints.js +1 -1
  253. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  254. package/dist/visualization/api/WebSocketServer.d.ts +44 -0
  255. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
  256. package/dist/visualization/api/WebSocketServer.js +144 -23
  257. package/dist/visualization/api/WebSocketServer.js.map +1 -1
  258. package/dist/visualization/core/DataTransformer.d.ts +10 -0
  259. package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
  260. package/dist/visualization/core/DataTransformer.js +60 -5
  261. package/dist/visualization/core/DataTransformer.js.map +1 -1
  262. package/dist/visualization/emit-event.d.ts +75 -0
  263. package/dist/visualization/emit-event.d.ts.map +1 -0
  264. package/dist/visualization/emit-event.js +213 -0
  265. package/dist/visualization/emit-event.js.map +1 -0
  266. package/dist/visualization/index.d.ts +1 -0
  267. package/dist/visualization/index.d.ts.map +1 -1
  268. package/dist/visualization/index.js +7 -1
  269. package/dist/visualization/index.js.map +1 -1
  270. package/docs/reference/skills.md +63 -1
  271. package/package.json +12 -4
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ /**
3
+ * FeedbackRouter - Routes Alerts to Appropriate Actions
4
+ *
5
+ * Takes fired alerts and routes them to the appropriate feedback actions
6
+ * based on alert type, severity, and configured strategies.
7
+ *
8
+ * @module alerting/FeedbackRouter
9
+ * @version 1.0.0
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.FeedbackRouter = void 0;
46
+ const events_1 = require("events");
47
+ const crypto = __importStar(require("crypto"));
48
+ const DEFAULT_CONFIG = {
49
+ confidenceThreshold: 0.7,
50
+ autoEscalate: true,
51
+ escalationDelay: 300000, // 5 minutes
52
+ maxRetries: 3
53
+ };
54
+ /**
55
+ * FeedbackRouter routes alerts to feedback actions and strategies.
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const router = new FeedbackRouter();
60
+ * router.on('feedback:generated', (event) => strategyApplicator.apply(event));
61
+ * router.route(alert);
62
+ * ```
63
+ */
64
+ class FeedbackRouter extends events_1.EventEmitter {
65
+ constructor(config = {}) {
66
+ super();
67
+ this.strategies = new Map();
68
+ this.feedbackHistory = [];
69
+ this.pendingEscalations = new Map();
70
+ this.config = { ...DEFAULT_CONFIG, ...config };
71
+ this.initializeDefaultStrategies();
72
+ }
73
+ /**
74
+ * Initialize default feedback strategies
75
+ */
76
+ initializeDefaultStrategies() {
77
+ const defaultStrategies = [
78
+ {
79
+ id: 'increase_test_isolation',
80
+ name: 'Increase Test Isolation',
81
+ description: 'Isolate failing tests and increase parallelization safety',
82
+ actions: [
83
+ { type: 'config_change', target: 'jest.config', parameters: { maxWorkers: 1 } },
84
+ { type: 'notify', target: 'qe-test-executor', parameters: { action: 'isolate_failures' } }
85
+ ],
86
+ priority: 1,
87
+ applicableAlerts: ['HighTestFailureRate', 'FlakyTestsIncreasing']
88
+ },
89
+ {
90
+ id: 'generate_additional_tests',
91
+ name: 'Generate Additional Tests',
92
+ description: 'Trigger test generation for uncovered code paths',
93
+ actions: [
94
+ { type: 'notify', target: 'qe-test-generator', parameters: { focus: 'uncovered_paths' } },
95
+ { type: 'notify', target: 'qe-coverage-analyzer', parameters: { action: 'analyze_gaps' } }
96
+ ],
97
+ priority: 2,
98
+ applicableAlerts: ['CriticalCoverageDrop', 'WarningCoverageDrop', 'BranchCoverageLow']
99
+ },
100
+ {
101
+ id: 'stabilize_flaky_tests',
102
+ name: 'Stabilize Flaky Tests',
103
+ description: 'Analyze and fix flaky test patterns',
104
+ actions: [
105
+ { type: 'notify', target: 'qe-flaky-detector', parameters: { action: 'deep_analysis' } },
106
+ { type: 'config_change', target: 'test.retry', parameters: { retries: 2 } }
107
+ ],
108
+ priority: 1,
109
+ applicableAlerts: ['FlakyTestsIncreasing', 'CriticalFlakyTestCount']
110
+ },
111
+ {
112
+ id: 'security_remediation',
113
+ name: 'Security Remediation',
114
+ description: 'Trigger security scan and remediation workflow',
115
+ actions: [
116
+ { type: 'notify', target: 'qe-security-scanner', parameters: { action: 'full_scan' } },
117
+ { type: 'notify', target: 'qe-security-auditor', parameters: { action: 'audit' } }
118
+ ],
119
+ priority: 0, // Highest priority
120
+ applicableAlerts: ['SecurityVulnerabilityDetected', 'CriticalSecurityVulnerability']
121
+ },
122
+ {
123
+ id: 'performance_optimization',
124
+ name: 'Performance Optimization',
125
+ description: 'Analyze and optimize performance bottlenecks',
126
+ actions: [
127
+ { type: 'notify', target: 'qe-performance-tester', parameters: { action: 'profile' } },
128
+ { type: 'config_change', target: 'test.timeout', parameters: { timeout: 60000 } }
129
+ ],
130
+ priority: 2,
131
+ applicableAlerts: ['SlowTestExecution', 'PerformanceDegradation', 'HighMemoryUsage']
132
+ }
133
+ ];
134
+ for (const strategy of defaultStrategies) {
135
+ this.strategies.set(strategy.id, strategy);
136
+ }
137
+ }
138
+ /**
139
+ * Register a custom strategy
140
+ */
141
+ registerStrategy(strategy) {
142
+ this.strategies.set(strategy.id, strategy);
143
+ this.emit('strategy:registered', strategy);
144
+ }
145
+ /**
146
+ * Route an alert to appropriate feedback action
147
+ */
148
+ route(alert) {
149
+ const feedbackAction = this.determineFeedbackAction(alert);
150
+ const suggestions = this.generateSuggestions(alert);
151
+ const strategy = this.selectStrategy(alert);
152
+ if (!strategy && suggestions.length === 0) {
153
+ this.emit('feedback:no_action', { alert, reason: 'No applicable strategy' });
154
+ return null;
155
+ }
156
+ const feedbackEvent = {
157
+ id: crypto.randomUUID(),
158
+ alertId: alert.id,
159
+ type: feedbackAction,
160
+ severity: alert.severity,
161
+ targetAgent: alert.labels.agent_scope || this.inferTargetAgent(alert),
162
+ strategy: strategy?.id || 'default',
163
+ suggestions: suggestions.map(s => s.action),
164
+ confidence: this.calculateConfidence(suggestions),
165
+ timestamp: new Date(),
166
+ metadata: {
167
+ alertName: alert.name,
168
+ alertValue: alert.value,
169
+ strategyName: strategy?.name,
170
+ actions: strategy?.actions || []
171
+ }
172
+ };
173
+ this.feedbackHistory.push(feedbackEvent);
174
+ this.emit('feedback:generated', feedbackEvent);
175
+ // Handle escalation for critical alerts
176
+ if (this.shouldEscalate(alert, feedbackEvent)) {
177
+ this.scheduleEscalation(alert, feedbackEvent);
178
+ }
179
+ return feedbackEvent;
180
+ }
181
+ /**
182
+ * Determine feedback action based on alert labels
183
+ */
184
+ determineFeedbackAction(alert) {
185
+ const labelAction = alert.labels.feedback_action;
186
+ if (labelAction)
187
+ return labelAction;
188
+ // Default based on severity
189
+ switch (alert.severity) {
190
+ case 'critical': return 'auto_remediate';
191
+ case 'error': return 'adjust_strategy';
192
+ case 'warning': return 'adjust_strategy';
193
+ default: return 'adjust_strategy';
194
+ }
195
+ }
196
+ /**
197
+ * Generate suggestions based on alert type
198
+ */
199
+ generateSuggestions(alert) {
200
+ const suggestions = [];
201
+ const alertType = alert.labels.alert_type;
202
+ switch (alertType) {
203
+ case 'test_failure':
204
+ suggestions.push({ action: 'isolate_failing_tests', confidence: 0.9, reason: 'Prevent cascade failures' }, { action: 'increase_test_timeout', confidence: 0.6, reason: 'May be timing issue' }, { action: 'analyze_test_dependencies', confidence: 0.7, reason: 'Check for shared state' });
205
+ break;
206
+ case 'coverage_drop':
207
+ suggestions.push({ action: 'generate_additional_tests', confidence: 0.95, reason: 'Direct coverage improvement' }, { action: 'analyze_uncovered_paths', confidence: 0.85, reason: 'Identify critical gaps' }, { action: 'review_recent_changes', confidence: 0.7, reason: 'Find removed coverage' });
208
+ break;
209
+ case 'flaky_tests':
210
+ suggestions.push({ action: 'quarantine_flaky_tests', confidence: 0.8, reason: 'Prevent false failures' }, { action: 'add_retry_logic', confidence: 0.7, reason: 'Temporary stabilization' }, { action: 'analyze_race_conditions', confidence: 0.85, reason: 'Root cause analysis' });
211
+ break;
212
+ case 'security':
213
+ suggestions.push({ action: 'block_deployment', confidence: 0.99, reason: 'Security critical' }, { action: 'run_full_security_scan', confidence: 0.95, reason: 'Comprehensive check' }, { action: 'notify_security_team', confidence: 0.9, reason: 'Human review needed' });
214
+ break;
215
+ case 'performance':
216
+ suggestions.push({ action: 'profile_slow_tests', confidence: 0.85, reason: 'Identify bottlenecks' }, { action: 'optimize_test_data', confidence: 0.7, reason: 'Reduce setup overhead' }, { action: 'parallelize_execution', confidence: 0.75, reason: 'Speed improvement' });
217
+ break;
218
+ default:
219
+ suggestions.push({ action: 'notify_team', confidence: 0.5, reason: 'Unknown alert type' });
220
+ }
221
+ // Sort by confidence
222
+ return suggestions.sort((a, b) => b.confidence - a.confidence);
223
+ }
224
+ /**
225
+ * Select best strategy for alert
226
+ */
227
+ selectStrategy(alert) {
228
+ const annotationStrategy = alert.annotations.feedback_strategy;
229
+ // First try annotation-specified strategy
230
+ if (annotationStrategy && this.strategies.has(annotationStrategy)) {
231
+ return this.strategies.get(annotationStrategy);
232
+ }
233
+ // Find applicable strategies
234
+ const applicable = [];
235
+ for (const strategy of Array.from(this.strategies.values())) {
236
+ if (strategy.applicableAlerts.includes(alert.name)) {
237
+ applicable.push(strategy);
238
+ }
239
+ }
240
+ if (applicable.length === 0)
241
+ return null;
242
+ // Sort by priority (lower = higher priority)
243
+ applicable.sort((a, b) => a.priority - b.priority);
244
+ return applicable[0];
245
+ }
246
+ /**
247
+ * Infer target agent from alert
248
+ */
249
+ inferTargetAgent(alert) {
250
+ const alertType = alert.labels.alert_type;
251
+ const agentMapping = {
252
+ 'test_failure': 'qe-test-executor',
253
+ 'coverage_drop': 'qe-coverage-analyzer',
254
+ 'flaky_tests': 'qe-flaky-detector',
255
+ 'security': 'qe-security-scanner',
256
+ 'performance': 'qe-performance-tester'
257
+ };
258
+ return agentMapping[alertType] || 'qe-quality-analyzer';
259
+ }
260
+ /**
261
+ * Calculate overall confidence from suggestions
262
+ */
263
+ calculateConfidence(suggestions) {
264
+ if (suggestions.length === 0)
265
+ return 0;
266
+ const topSuggestions = suggestions.slice(0, 3);
267
+ const sum = topSuggestions.reduce((acc, s) => acc + s.confidence, 0);
268
+ return sum / topSuggestions.length;
269
+ }
270
+ /**
271
+ * Check if escalation is needed
272
+ */
273
+ shouldEscalate(alert, feedback) {
274
+ if (!this.config.autoEscalate)
275
+ return false;
276
+ if (alert.severity !== 'critical' && alert.severity !== 'error')
277
+ return false;
278
+ if (feedback.confidence >= this.config.confidenceThreshold)
279
+ return false;
280
+ return true;
281
+ }
282
+ /**
283
+ * Schedule escalation for unresolved critical alerts
284
+ */
285
+ scheduleEscalation(alert, feedback) {
286
+ const timer = setTimeout(() => {
287
+ // Check if alert is still active
288
+ this.emit('feedback:escalate', {
289
+ alert,
290
+ feedback,
291
+ reason: 'Low confidence automatic action, escalating to human review'
292
+ });
293
+ this.pendingEscalations.delete(alert.id);
294
+ }, this.config.escalationDelay);
295
+ this.pendingEscalations.set(alert.id, timer);
296
+ }
297
+ /**
298
+ * Cancel pending escalation (e.g., when alert resolves)
299
+ */
300
+ cancelEscalation(alertId) {
301
+ const timer = this.pendingEscalations.get(alertId);
302
+ if (timer) {
303
+ clearTimeout(timer);
304
+ this.pendingEscalations.delete(alertId);
305
+ }
306
+ }
307
+ /**
308
+ * Get feedback history
309
+ */
310
+ getFeedbackHistory(limit = 100) {
311
+ return this.feedbackHistory.slice(-limit);
312
+ }
313
+ /**
314
+ * Get all registered strategies
315
+ */
316
+ getStrategies() {
317
+ return Array.from(this.strategies.values());
318
+ }
319
+ /**
320
+ * Cleanup resources
321
+ */
322
+ destroy() {
323
+ for (const timer of Array.from(this.pendingEscalations.values())) {
324
+ clearTimeout(timer);
325
+ }
326
+ this.pendingEscalations.clear();
327
+ this.removeAllListeners();
328
+ }
329
+ }
330
+ exports.FeedbackRouter = FeedbackRouter;
331
+ //# sourceMappingURL=FeedbackRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackRouter.js","sourceRoot":"","sources":["../../src/alerting/FeedbackRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * StrategyApplicator - Applies Feedback Strategies to Agents
3
+ *
4
+ * Takes feedback events and applies the recommended strategies
5
+ * by updating agent memory, triggering retraining, or executing commands.
6
+ *
7
+ * @module alerting/StrategyApplicator
8
+ * @version 1.0.0
9
+ */
10
+ import { EventEmitter } from 'events';
11
+ import { FeedbackEvent, Strategy, StrategyAction } from './types';
12
+ /**
13
+ * Result of applying a strategy
14
+ */
15
+ export interface ApplicationResult {
16
+ feedbackId: string;
17
+ strategyId: string;
18
+ success: boolean;
19
+ actionsExecuted: number;
20
+ actionsFailed: number;
21
+ results: ActionResult[];
22
+ duration: number;
23
+ timestamp: Date;
24
+ }
25
+ export interface ActionResult {
26
+ action: StrategyAction;
27
+ success: boolean;
28
+ error?: string;
29
+ output?: unknown;
30
+ }
31
+ /**
32
+ * Memory interface for agent memory updates
33
+ */
34
+ export interface MemoryInterface {
35
+ store(namespace: string, key: string, value: unknown): Promise<void>;
36
+ retrieve(namespace: string, key: string): Promise<unknown>;
37
+ }
38
+ /**
39
+ * Agent interface for notifications
40
+ */
41
+ export interface AgentInterface {
42
+ notify(agentId: string, event: {
43
+ type: string;
44
+ data: unknown;
45
+ }): Promise<void>;
46
+ }
47
+ /**
48
+ * StrategyApplicator applies feedback strategies to agents and systems.
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const applicator = new StrategyApplicator(memoryStore, agentBus);
53
+ * const result = await applicator.apply(feedbackEvent, strategy);
54
+ * ```
55
+ */
56
+ export declare class StrategyApplicator extends EventEmitter {
57
+ private memory?;
58
+ private agents?;
59
+ private applicationHistory;
60
+ private successfulStrategies;
61
+ private failedStrategies;
62
+ constructor(memory?: MemoryInterface, agents?: AgentInterface);
63
+ /**
64
+ * Apply a feedback event's strategy
65
+ */
66
+ apply(feedback: FeedbackEvent, strategy?: Strategy): Promise<ApplicationResult>;
67
+ /**
68
+ * Execute a single strategy action
69
+ */
70
+ private executeAction;
71
+ /**
72
+ * Execute config change action
73
+ */
74
+ private executeConfigChange;
75
+ /**
76
+ * Execute agent retrain action
77
+ */
78
+ private executeAgentRetrain;
79
+ /**
80
+ * Execute threshold adjustment action
81
+ */
82
+ private executeThresholdAdjust;
83
+ /**
84
+ * Execute notify action
85
+ */
86
+ private executeNotify;
87
+ /**
88
+ * Execute command action
89
+ */
90
+ private executeCommand;
91
+ /**
92
+ * Get default actions for feedback type
93
+ */
94
+ private getDefaultActions;
95
+ /**
96
+ * Update success/failure statistics
97
+ */
98
+ private updateStats;
99
+ /**
100
+ * Get strategy effectiveness statistics
101
+ */
102
+ getStrategyStats(): Map<string, {
103
+ success: number;
104
+ failed: number;
105
+ rate: number;
106
+ }>;
107
+ /**
108
+ * Get application history
109
+ */
110
+ getApplicationHistory(limit?: number): ApplicationResult[];
111
+ /**
112
+ * Set memory interface
113
+ */
114
+ setMemoryInterface(memory: MemoryInterface): void;
115
+ /**
116
+ * Set agent interface
117
+ */
118
+ setAgentInterface(agents: AgentInterface): void;
119
+ }
120
+ //# sourceMappingURL=StrategyApplicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrategyApplicator.d.ts","sourceRoot":"","sources":["../../src/alerting/StrategyApplicator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,aAAa,EACb,QAAQ,EACR,cAAc,EAEf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChF;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,MAAM,CAAC,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAC,CAAiB;IAChC,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,gBAAgB,CAAkC;gBAE9C,MAAM,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,cAAc;IAM7D;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmCrF;;OAEG;YACW,aAAa;IAkC3B;;OAEG;YACW,mBAAmB;IAwBjC;;OAEG;YACW,mBAAmB;IAiCjC;;OAEG;YACW,sBAAsB;IA0BpC;;OAEG;YACW,aAAa;IAqC3B;;OAEG;YACW,cAAc;IAiB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAsBlF;;OAEG;IACH,qBAAqB,CAAC,KAAK,SAAM,GAAG,iBAAiB,EAAE;IAIvD;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIjD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;CAGhD"}