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.
- package/CHANGELOG.md +54 -0
- package/README.md +30 -5
- package/config/.env.otel.example +25 -0
- package/config/OTEL-QUICK-REFERENCE.md +137 -0
- package/config/README-OTEL.md +222 -0
- package/config/alerting-rules.yml +518 -0
- package/config/docker-compose.otel.yml +187 -0
- package/config/grafana/dashboards/agentic-qe-overview.json +286 -0
- package/config/grafana/provisioning/dashboards/dashboards.yml +19 -0
- package/config/grafana/provisioning/datasources/datasources.yml +53 -0
- package/config/otel-collector-config.yaml.example +145 -0
- package/config/prometheus.yml.example +106 -0
- package/dist/alerting/AlertManager.d.ts +120 -0
- package/dist/alerting/AlertManager.d.ts.map +1 -0
- package/dist/alerting/AlertManager.js +345 -0
- package/dist/alerting/AlertManager.js.map +1 -0
- package/dist/alerting/FeedbackRouter.d.ts +98 -0
- package/dist/alerting/FeedbackRouter.d.ts.map +1 -0
- package/dist/alerting/FeedbackRouter.js +331 -0
- package/dist/alerting/FeedbackRouter.js.map +1 -0
- package/dist/alerting/StrategyApplicator.d.ts +120 -0
- package/dist/alerting/StrategyApplicator.d.ts.map +1 -0
- package/dist/alerting/StrategyApplicator.js +299 -0
- package/dist/alerting/StrategyApplicator.js.map +1 -0
- package/dist/alerting/index.d.ts +68 -0
- package/dist/alerting/index.d.ts.map +1 -0
- package/dist/alerting/index.js +112 -0
- package/dist/alerting/index.js.map +1 -0
- package/dist/alerting/types.d.ts +118 -0
- package/dist/alerting/types.d.ts.map +1 -0
- package/dist/alerting/types.js +11 -0
- package/dist/alerting/types.js.map +1 -0
- package/dist/cli/init/claude-config.d.ts.map +1 -1
- package/dist/cli/init/claude-config.js +12 -7
- package/dist/cli/init/claude-config.js.map +1 -1
- package/dist/core/memory/IPatternStore.d.ts +209 -0
- package/dist/core/memory/IPatternStore.d.ts.map +1 -0
- package/dist/core/memory/IPatternStore.js +15 -0
- package/dist/core/memory/IPatternStore.js.map +1 -0
- package/dist/core/memory/MigrationTools.d.ts +192 -0
- package/dist/core/memory/MigrationTools.d.ts.map +1 -0
- package/dist/core/memory/MigrationTools.js +615 -0
- package/dist/core/memory/MigrationTools.js.map +1 -0
- package/dist/core/memory/NeuralEnhancement.d.ts +154 -0
- package/dist/core/memory/NeuralEnhancement.d.ts.map +1 -0
- package/dist/core/memory/NeuralEnhancement.js +598 -0
- package/dist/core/memory/NeuralEnhancement.js.map +1 -0
- package/dist/core/memory/PatternStoreFactory.d.ts +143 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -0
- package/dist/core/memory/PatternStoreFactory.js +370 -0
- package/dist/core/memory/PatternStoreFactory.js.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.js +28 -20
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts +198 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -0
- package/dist/core/memory/RuVectorPatternStore.js +605 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -0
- package/dist/core/memory/SelfHealingMonitor.d.ts +186 -0
- package/dist/core/memory/SelfHealingMonitor.d.ts.map +1 -0
- package/dist/core/memory/SelfHealingMonitor.js +451 -0
- package/dist/core/memory/SelfHealingMonitor.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +62 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +97 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +11 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +36 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/reasoning/RuVectorReasoningAdapter.d.ts +232 -0
- package/dist/reasoning/RuVectorReasoningAdapter.d.ts.map +1 -0
- package/dist/reasoning/RuVectorReasoningAdapter.js +585 -0
- package/dist/reasoning/RuVectorReasoningAdapter.js.map +1 -0
- package/dist/reasoning/index.d.ts +2 -0
- package/dist/reasoning/index.d.ts.map +1 -1
- package/dist/reasoning/index.js +6 -1
- package/dist/reasoning/index.js.map +1 -1
- package/dist/reporting/ResultAggregator.d.ts +107 -0
- package/dist/reporting/ResultAggregator.d.ts.map +1 -0
- package/dist/reporting/ResultAggregator.js +435 -0
- package/dist/reporting/ResultAggregator.js.map +1 -0
- package/dist/reporting/index.d.ts +48 -0
- package/dist/reporting/index.d.ts.map +1 -0
- package/dist/reporting/index.js +154 -0
- package/dist/reporting/index.js.map +1 -0
- package/dist/reporting/reporters/ControlLoopReporter.d.ts +128 -0
- package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/ControlLoopReporter.js +417 -0
- package/dist/reporting/reporters/ControlLoopReporter.js.map +1 -0
- package/dist/reporting/reporters/HumanReadableReporter.d.ts +140 -0
- package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/HumanReadableReporter.js +524 -0
- package/dist/reporting/reporters/HumanReadableReporter.js.map +1 -0
- package/dist/reporting/reporters/JSONReporter.d.ts +193 -0
- package/dist/reporting/reporters/JSONReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/JSONReporter.js +324 -0
- package/dist/reporting/reporters/JSONReporter.js.map +1 -0
- package/dist/reporting/reporters/index.d.ts +14 -0
- package/dist/reporting/reporters/index.d.ts.map +1 -0
- package/dist/reporting/reporters/index.js +19 -0
- package/dist/reporting/reporters/index.js.map +1 -0
- package/dist/reporting/types.d.ts +427 -0
- package/dist/reporting/types.d.ts.map +1 -0
- package/dist/reporting/types.js +12 -0
- package/dist/reporting/types.js.map +1 -0
- package/package.json +9 -1
|
@@ -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"}
|