agentic-qe 2.3.2 → 2.3.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 +140 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +10 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +113 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +53 -27
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +20 -5
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.js +44 -6
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/cli/commands/dream/index.d.ts +50 -0
- package/dist/cli/commands/dream/index.d.ts.map +1 -0
- package/dist/cli/commands/dream/index.js +282 -0
- package/dist/cli/commands/dream/index.js.map +1 -0
- package/dist/cli/commands/learn/index.d.ts +31 -5
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +183 -50
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/transfer/index.d.ts +55 -0
- package/dist/cli/commands/transfer/index.d.ts.map +1 -0
- package/dist/cli/commands/transfer/index.js +317 -0
- package/dist/cli/commands/transfer/index.js.map +1 -0
- package/dist/cli/index.js +156 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/database-init.js +5 -0
- package/dist/cli/init/database-init.js.map +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +12 -4
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/learning-init.d.ts +39 -0
- package/dist/cli/init/learning-init.d.ts.map +1 -0
- package/dist/cli/init/learning-init.js +239 -0
- package/dist/cli/init/learning-init.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/learning/PerformanceTracker.d.ts +9 -0
- package/dist/learning/PerformanceTracker.d.ts.map +1 -1
- package/dist/learning/PerformanceTracker.js +26 -2
- package/dist/learning/PerformanceTracker.js.map +1 -1
- package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
- package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
- package/dist/learning/baselines/BaselineCollector.js +398 -0
- package/dist/learning/baselines/BaselineCollector.js.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.js +801 -0
- package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
- package/dist/learning/baselines/index.d.ts +10 -0
- package/dist/learning/baselines/index.d.ts.map +1 -0
- package/dist/learning/baselines/index.js +15 -0
- package/dist/learning/baselines/index.js.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.js +195 -0
- package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
- package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
- package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceCapture.js +432 -0
- package/dist/learning/capture/ExperienceCapture.js.map +1 -0
- package/dist/learning/capture/index.d.ts +12 -0
- package/dist/learning/capture/index.d.ts.map +1 -0
- package/dist/learning/capture/index.js +17 -0
- package/dist/learning/capture/index.js.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.js +230 -0
- package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
- package/dist/learning/dashboard/index.d.ts +7 -0
- package/dist/learning/dashboard/index.d.ts.map +1 -0
- package/dist/learning/dashboard/index.js +23 -0
- package/dist/learning/dashboard/index.js.map +1 -0
- package/dist/learning/dream/ConceptGraph.d.ts +160 -0
- package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
- package/dist/learning/dream/ConceptGraph.js +445 -0
- package/dist/learning/dream/ConceptGraph.js.map +1 -0
- package/dist/learning/dream/DreamEngine.d.ts +150 -0
- package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
- package/dist/learning/dream/DreamEngine.js +551 -0
- package/dist/learning/dream/DreamEngine.js.map +1 -0
- package/dist/learning/dream/InsightGenerator.d.ts +152 -0
- package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
- package/dist/learning/dream/InsightGenerator.js +463 -0
- package/dist/learning/dream/InsightGenerator.js.map +1 -0
- package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
- package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
- package/dist/learning/dream/SpreadingActivation.js +320 -0
- package/dist/learning/dream/SpreadingActivation.js.map +1 -0
- package/dist/learning/dream/index.d.ts +14 -0
- package/dist/learning/dream/index.d.ts.map +1 -0
- package/dist/learning/dream/index.js +22 -0
- package/dist/learning/dream/index.js.map +1 -0
- package/dist/learning/metrics/AlertManager.d.ts +107 -0
- package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
- package/dist/learning/metrics/AlertManager.js +246 -0
- package/dist/learning/metrics/AlertManager.js.map +1 -0
- package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
- package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
- package/dist/learning/metrics/LearningMetrics.js +754 -0
- package/dist/learning/metrics/LearningMetrics.js.map +1 -0
- package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
- package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsCollector.js +240 -0
- package/dist/learning/metrics/MetricsCollector.js.map +1 -0
- package/dist/learning/metrics/MetricsStore.d.ts +149 -0
- package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsStore.js +502 -0
- package/dist/learning/metrics/MetricsStore.js.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.js +210 -0
- package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
- package/dist/learning/metrics/index.d.ts +13 -0
- package/dist/learning/metrics/index.d.ts.map +1 -0
- package/dist/learning/metrics/index.js +39 -0
- package/dist/learning/metrics/index.js.map +1 -0
- package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
- package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
- package/dist/learning/scheduler/IdleDetector.js +281 -0
- package/dist/learning/scheduler/IdleDetector.js.map +1 -0
- package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
- package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepCycle.js +506 -0
- package/dist/learning/scheduler/SleepCycle.js.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts +131 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.js +299 -0
- package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
- package/dist/learning/scheduler/index.d.ts +16 -0
- package/dist/learning/scheduler/index.d.ts.map +1 -0
- package/dist/learning/scheduler/index.js +23 -0
- package/dist/learning/scheduler/index.js.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.js +479 -0
- package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
- package/dist/learning/synthesis/index.d.ts +10 -0
- package/dist/learning/synthesis/index.d.ts.map +1 -0
- package/dist/learning/synthesis/index.js +14 -0
- package/dist/learning/synthesis/index.js.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.js +319 -0
- package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
- package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
- package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
- package/dist/learning/transfer/TransferProtocol.js +611 -0
- package/dist/learning/transfer/TransferProtocol.js.map +1 -0
- package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
- package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
- package/dist/learning/transfer/TransferPrototype.js +433 -0
- package/dist/learning/transfer/TransferPrototype.js.map +1 -0
- package/dist/learning/transfer/TransferValidator.d.ts +140 -0
- package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
- package/dist/learning/transfer/TransferValidator.js +413 -0
- package/dist/learning/transfer/TransferValidator.js.map +1 -0
- package/dist/learning/transfer/index.d.ts +14 -0
- package/dist/learning/transfer/index.d.ts.map +1 -0
- package/dist/learning/transfer/index.js +22 -0
- package/dist/learning/transfer/index.js.map +1 -0
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
- package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
- package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/package.json +7 -2
- package/scripts/README.md +352 -0
- package/scripts/hooks/capture-task-learning.js +191 -0
- package/scripts/hooks/emit-task-complete.sh +35 -0
- package/scripts/hooks/emit-task-spawn.sh +27 -0
- package/.claude/agents/failing-agent.json +0 -9
- package/.claude/agents/test-agent.json +0 -9
- package/dist/App.d.ts +0 -5
- package/dist/App.d.ts.map +0 -1
- package/dist/App.js +0 -15
- package/dist/App.js.map +0 -1
- package/dist/cli/init/utils.d.ts +0 -183
- package/dist/cli/init/utils.d.ts.map +0 -1
- package/dist/cli/init/utils.js +0 -354
- package/dist/cli/init/utils.js.map +0 -1
- package/dist/components/Dashboard/Dashboard.d.ts +0 -4
- package/dist/components/Dashboard/Dashboard.d.ts.map +0 -1
- package/dist/components/Dashboard/Dashboard.js +0 -148
- package/dist/components/Dashboard/Dashboard.js.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.d.ts +0 -4
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +0 -1
- package/dist/components/Dashboard/DashboardHeader.js +0 -138
- package/dist/components/Dashboard/DashboardHeader.js.map +0 -1
- package/dist/contexts/DashboardContext.d.ts +0 -41
- package/dist/contexts/DashboardContext.d.ts.map +0 -1
- package/dist/contexts/DashboardContext.js +0 -187
- package/dist/contexts/DashboardContext.js.map +0 -1
- package/dist/core/transport/QUICTransport.d.ts +0 -320
- package/dist/core/transport/QUICTransport.d.ts.map +0 -1
- package/dist/core/transport/QUICTransport.js +0 -711
- package/dist/core/transport/QUICTransport.js.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.d.ts +0 -84
- package/dist/learning/LearningPersistenceAdapter.d.ts.map +0 -1
- package/dist/learning/LearningPersistenceAdapter.js +0 -202
- package/dist/learning/LearningPersistenceAdapter.js.map +0 -1
- package/dist/learning/algorithms/QLearning.d.ts +0 -68
- package/dist/learning/algorithms/QLearning.d.ts.map +0 -1
- package/dist/learning/algorithms/QLearning.js +0 -116
- package/dist/learning/algorithms/QLearning.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js +0 -267
- package/dist/mcp/handlers/advanced/requirements-generate-bdd.js.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts +0 -7
- package/dist/mcp/handlers/advanced/requirements-validate.d.ts.map +0 -1
- package/dist/mcp/handlers/advanced/requirements-validate.js +0 -175
- package/dist/mcp/handlers/advanced/requirements-validate.js.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts +0 -15
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js +0 -43
- package/dist/mcp/handlers/analysis/performance-benchmark-run-handler.js.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts +0 -58
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +0 -1
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +0 -188
- package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +0 -1
- package/dist/mcp/handlers/optimize-tests.d.ts +0 -219
- package/dist/mcp/handlers/optimize-tests.d.ts.map +0 -1
- package/dist/mcp/handlers/optimize-tests.js +0 -533
- package/dist/mcp/handlers/optimize-tests.js.map +0 -1
- package/dist/mcp/handlers/predict-defects.d.ts +0 -194
- package/dist/mcp/handlers/predict-defects.d.ts.map +0 -1
- package/dist/mcp/handlers/predict-defects.js +0 -722
- package/dist/mcp/handlers/predict-defects.js.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts +0 -199
- package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js +0 -471
- package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts +0 -104
- package/dist/mcp/handlers/quality/quality-decision-make.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-decision-make.js +0 -408
- package/dist/mcp/handlers/quality/quality-decision-make.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts +0 -160
- package/dist/mcp/handlers/quality/quality-gate-execute.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-gate-execute.js +0 -412
- package/dist/mcp/handlers/quality/quality-gate-execute.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts +0 -163
- package/dist/mcp/handlers/quality/quality-policy-check.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-policy-check.js +0 -455
- package/dist/mcp/handlers/quality/quality-policy-check.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts +0 -123
- package/dist/mcp/handlers/quality/quality-risk-assess.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-risk-assess.js +0 -522
- package/dist/mcp/handlers/quality/quality-risk-assess.js.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts +0 -117
- package/dist/mcp/handlers/quality/quality-validate-metrics.d.ts.map +0 -1
- package/dist/mcp/handlers/quality/quality-validate-metrics.js +0 -288
- package/dist/mcp/handlers/quality/quality-validate-metrics.js.map +0 -1
- package/dist/mcp/handlers/quality-analyze.d.ts +0 -279
- package/dist/mcp/handlers/quality-analyze.d.ts.map +0 -1
- package/dist/mcp/handlers/quality-analyze.js +0 -720
- package/dist/mcp/handlers/quality-analyze.js.map +0 -1
- package/dist/mcp/handlers/security/check-authz.d.ts +0 -152
- package/dist/mcp/handlers/security/check-authz.d.ts.map +0 -1
- package/dist/mcp/handlers/security/check-authz.js +0 -434
- package/dist/mcp/handlers/security/check-authz.js.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.d.ts +0 -148
- package/dist/mcp/handlers/security/scan-dependencies.d.ts.map +0 -1
- package/dist/mcp/handlers/security/scan-dependencies.js +0 -354
- package/dist/mcp/handlers/security/scan-dependencies.js.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.d.ts +0 -128
- package/dist/mcp/handlers/security/validate-auth.d.ts.map +0 -1
- package/dist/mcp/handlers/security/validate-auth.js +0 -294
- package/dist/mcp/handlers/security/validate-auth.js.map +0 -1
- package/dist/mcp/handlers/test-generate.d.ts +0 -107
- package/dist/mcp/handlers/test-generate.d.ts.map +0 -1
- package/dist/mcp/handlers/test-generate.js +0 -454
- package/dist/mcp/handlers/test-generate.js.map +0 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TrendAnalyzer - Phase 3 Trend Analysis
|
|
4
|
+
*
|
|
5
|
+
* Analyzes metric trends over time and provides forecasting.
|
|
6
|
+
* Detects improving, stable, or declining trends.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TrendAnalyzer = exports.TrendPeriod = exports.TrendDirection = void 0;
|
|
10
|
+
const Logger_1 = require("../../utils/Logger");
|
|
11
|
+
/**
|
|
12
|
+
* Trend direction
|
|
13
|
+
*/
|
|
14
|
+
var TrendDirection;
|
|
15
|
+
(function (TrendDirection) {
|
|
16
|
+
TrendDirection["IMPROVING"] = "improving";
|
|
17
|
+
TrendDirection["STABLE"] = "stable";
|
|
18
|
+
TrendDirection["DECLINING"] = "declining";
|
|
19
|
+
})(TrendDirection || (exports.TrendDirection = TrendDirection = {}));
|
|
20
|
+
/**
|
|
21
|
+
* Time period for trend analysis
|
|
22
|
+
*/
|
|
23
|
+
var TrendPeriod;
|
|
24
|
+
(function (TrendPeriod) {
|
|
25
|
+
TrendPeriod["DAILY"] = "daily";
|
|
26
|
+
TrendPeriod["WEEKLY"] = "weekly";
|
|
27
|
+
TrendPeriod["MONTHLY"] = "monthly";
|
|
28
|
+
})(TrendPeriod || (exports.TrendPeriod = TrendPeriod = {}));
|
|
29
|
+
/**
|
|
30
|
+
* TrendAnalyzer - Analyzes metric trends
|
|
31
|
+
*/
|
|
32
|
+
class TrendAnalyzer {
|
|
33
|
+
constructor(metricsCollector) {
|
|
34
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
35
|
+
this.metricsCollector = metricsCollector;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Analyze trend for a specific metric
|
|
39
|
+
*/
|
|
40
|
+
async analyzeTrend(metricName, days = 30) {
|
|
41
|
+
const history = await this.metricsCollector.getMetricHistory(metricName, days);
|
|
42
|
+
if (history.length < 2) {
|
|
43
|
+
return {
|
|
44
|
+
metric: metricName,
|
|
45
|
+
direction: TrendDirection.STABLE,
|
|
46
|
+
changePercentage: 0,
|
|
47
|
+
forecast: 0,
|
|
48
|
+
confidence: 0,
|
|
49
|
+
dataPoints: history.length
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Calculate trend using linear regression
|
|
53
|
+
const { slope, intercept } = this.linearRegression(history);
|
|
54
|
+
// Determine direction
|
|
55
|
+
const direction = this.determineTrendDirection(slope, history);
|
|
56
|
+
// Calculate change percentage
|
|
57
|
+
const firstValue = history[0].value;
|
|
58
|
+
const lastValue = history[history.length - 1].value;
|
|
59
|
+
const changePercentage = firstValue !== 0
|
|
60
|
+
? ((lastValue - firstValue) / firstValue) * 100
|
|
61
|
+
: 0;
|
|
62
|
+
// Forecast next value
|
|
63
|
+
const forecast = slope * history.length + intercept;
|
|
64
|
+
// Calculate confidence based on R²
|
|
65
|
+
const confidence = this.calculateConfidence(history, slope, intercept);
|
|
66
|
+
return {
|
|
67
|
+
metric: metricName,
|
|
68
|
+
direction,
|
|
69
|
+
changePercentage,
|
|
70
|
+
forecast,
|
|
71
|
+
confidence,
|
|
72
|
+
dataPoints: history.length
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Analyze all key metrics
|
|
77
|
+
*/
|
|
78
|
+
async analyzeAllTrends(period = TrendPeriod.WEEKLY) {
|
|
79
|
+
const days = this.periodToDays(period);
|
|
80
|
+
const metricNames = [
|
|
81
|
+
'patternsDiscovered',
|
|
82
|
+
'discoveryRate',
|
|
83
|
+
'avgAccuracy',
|
|
84
|
+
'avgActionability',
|
|
85
|
+
'transferSuccessRate',
|
|
86
|
+
'avgTimeReduction',
|
|
87
|
+
'avgCoverageImprovement',
|
|
88
|
+
'cycleCompletionRate',
|
|
89
|
+
'errorRate'
|
|
90
|
+
];
|
|
91
|
+
const trends = await Promise.all(metricNames.map(name => this.analyzeTrend(name, days)));
|
|
92
|
+
return trends;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get trend summary for all categories
|
|
96
|
+
*/
|
|
97
|
+
async getTrendSummary(metrics) {
|
|
98
|
+
// Analyze trends for each category
|
|
99
|
+
const discoveryTrend = await this.analyzeTrend('discoveryRate', 30);
|
|
100
|
+
const qualityTrend = await this.analyzeTrend('avgAccuracy', 30);
|
|
101
|
+
const transferTrend = await this.analyzeTrend('transferSuccessRate', 30);
|
|
102
|
+
const impactTrend = await this.analyzeTrend('avgTimeReduction', 30);
|
|
103
|
+
const systemTrend = await this.analyzeTrend('cycleCompletionRate', 30);
|
|
104
|
+
return {
|
|
105
|
+
discovery: discoveryTrend.direction,
|
|
106
|
+
quality: qualityTrend.direction,
|
|
107
|
+
transfer: transferTrend.direction,
|
|
108
|
+
impact: impactTrend.direction,
|
|
109
|
+
system: systemTrend.direction
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Linear regression for trend analysis
|
|
114
|
+
*/
|
|
115
|
+
linearRegression(history) {
|
|
116
|
+
const n = history.length;
|
|
117
|
+
const x = Array.from({ length: n }, (_, i) => i);
|
|
118
|
+
const y = history.map(h => h.value);
|
|
119
|
+
const sumX = x.reduce((a, b) => a + b, 0);
|
|
120
|
+
const sumY = y.reduce((a, b) => a + b, 0);
|
|
121
|
+
const sumXY = x.reduce((sum, xi, i) => sum + xi * y[i], 0);
|
|
122
|
+
const sumX2 = x.reduce((sum, xi) => sum + xi * xi, 0);
|
|
123
|
+
const slope = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
|
|
124
|
+
const intercept = (sumY - slope * sumX) / n;
|
|
125
|
+
return { slope, intercept };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Determine trend direction from slope
|
|
129
|
+
*/
|
|
130
|
+
determineTrendDirection(slope, history) {
|
|
131
|
+
const avgValue = history.reduce((sum, h) => sum + h.value, 0) / history.length;
|
|
132
|
+
const threshold = Math.abs(avgValue) * 0.05; // 5% threshold
|
|
133
|
+
if (Math.abs(slope) < threshold) {
|
|
134
|
+
return TrendDirection.STABLE;
|
|
135
|
+
}
|
|
136
|
+
return slope > 0 ? TrendDirection.IMPROVING : TrendDirection.DECLINING;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Calculate confidence using R² (coefficient of determination)
|
|
140
|
+
*/
|
|
141
|
+
calculateConfidence(history, slope, intercept) {
|
|
142
|
+
const n = history.length;
|
|
143
|
+
const y = history.map(h => h.value);
|
|
144
|
+
const yMean = y.reduce((a, b) => a + b, 0) / n;
|
|
145
|
+
// Calculate R²
|
|
146
|
+
let ssRes = 0; // Sum of squares of residuals
|
|
147
|
+
let ssTot = 0; // Total sum of squares
|
|
148
|
+
y.forEach((yi, i) => {
|
|
149
|
+
const yPred = slope * i + intercept;
|
|
150
|
+
ssRes += Math.pow(yi - yPred, 2);
|
|
151
|
+
ssTot += Math.pow(yi - yMean, 2);
|
|
152
|
+
});
|
|
153
|
+
const rSquared = ssTot !== 0 ? 1 - (ssRes / ssTot) : 0;
|
|
154
|
+
// Adjust for sample size
|
|
155
|
+
const adjustedConfidence = rSquared * Math.min(n / 30, 1);
|
|
156
|
+
return Math.max(0, Math.min(1, adjustedConfidence));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Convert period to days
|
|
160
|
+
*/
|
|
161
|
+
periodToDays(period) {
|
|
162
|
+
switch (period) {
|
|
163
|
+
case TrendPeriod.DAILY:
|
|
164
|
+
return 1;
|
|
165
|
+
case TrendPeriod.WEEKLY:
|
|
166
|
+
return 7;
|
|
167
|
+
case TrendPeriod.MONTHLY:
|
|
168
|
+
return 30;
|
|
169
|
+
default:
|
|
170
|
+
return 7;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get visual indicator for trend
|
|
175
|
+
*/
|
|
176
|
+
static getTrendIndicator(direction) {
|
|
177
|
+
switch (direction) {
|
|
178
|
+
case TrendDirection.IMPROVING:
|
|
179
|
+
return '↑';
|
|
180
|
+
case TrendDirection.STABLE:
|
|
181
|
+
return '→';
|
|
182
|
+
case TrendDirection.DECLINING:
|
|
183
|
+
return '↓';
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Generate sparkline from metric history
|
|
188
|
+
*/
|
|
189
|
+
static generateSparkline(values, width = 10) {
|
|
190
|
+
if (values.length === 0)
|
|
191
|
+
return '';
|
|
192
|
+
const min = Math.min(...values);
|
|
193
|
+
const max = Math.max(...values);
|
|
194
|
+
const range = max - min;
|
|
195
|
+
if (range === 0)
|
|
196
|
+
return '▂'.repeat(width);
|
|
197
|
+
const bars = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
|
|
198
|
+
const step = Math.ceil(values.length / width);
|
|
199
|
+
let sparkline = '';
|
|
200
|
+
for (let i = 0; i < values.length; i += step) {
|
|
201
|
+
const value = values[i];
|
|
202
|
+
const normalized = (value - min) / range;
|
|
203
|
+
const barIndex = Math.min(Math.floor(normalized * bars.length), bars.length - 1);
|
|
204
|
+
sparkline += bars[barIndex];
|
|
205
|
+
}
|
|
206
|
+
return sparkline;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.TrendAnalyzer = TrendAnalyzer;
|
|
210
|
+
//# sourceMappingURL=TrendAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrendAnalyzer.js","sourceRoot":"","sources":["../../../src/learning/metrics/TrendAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learning Metrics - Phase 3
|
|
3
|
+
*
|
|
4
|
+
* Exports all metrics-related components for learning system monitoring.
|
|
5
|
+
*/
|
|
6
|
+
export * from './MetricsCollector';
|
|
7
|
+
export * from './TrendAnalyzer';
|
|
8
|
+
export * from './AlertManager';
|
|
9
|
+
export { LearningMetricsData, MetricsSummary, DiscoveryBreakdown, QualityBreakdown, TransferBreakdown, ImpactBreakdown, SystemHealthBreakdown, MetricsConfig, LearningMetrics as LearningMetricsCollector, } from './LearningMetrics';
|
|
10
|
+
export { MetricsSnapshot, MetricsQuery, MetricsAggregation, MetricsStoreConfig, MetricsStore, } from './MetricsStore';
|
|
11
|
+
export { default as LearningMetricsDefault } from './LearningMetrics';
|
|
12
|
+
export { default as MetricsStoreDefault } from './MetricsStore';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/learning/metrics/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,eAAe,IAAI,wBAAwB,GAC5C,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Learning Metrics - Phase 3
|
|
4
|
+
*
|
|
5
|
+
* Exports all metrics-related components for learning system monitoring.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.MetricsStoreDefault = exports.LearningMetricsDefault = exports.MetricsStore = exports.LearningMetricsCollector = void 0;
|
|
26
|
+
// Original Phase 3 implementation (SwarmMemoryManager-based)
|
|
27
|
+
__exportStar(require("./MetricsCollector"), exports);
|
|
28
|
+
__exportStar(require("./TrendAnalyzer"), exports);
|
|
29
|
+
__exportStar(require("./AlertManager"), exports);
|
|
30
|
+
// Enhanced Phase 3 implementation (BetterSqlite3-based, aligns with DreamEngine/TransferProtocol)
|
|
31
|
+
var LearningMetrics_1 = require("./LearningMetrics");
|
|
32
|
+
Object.defineProperty(exports, "LearningMetricsCollector", { enumerable: true, get: function () { return LearningMetrics_1.LearningMetrics; } });
|
|
33
|
+
var MetricsStore_1 = require("./MetricsStore");
|
|
34
|
+
Object.defineProperty(exports, "MetricsStore", { enumerable: true, get: function () { return MetricsStore_1.MetricsStore; } });
|
|
35
|
+
var LearningMetrics_2 = require("./LearningMetrics");
|
|
36
|
+
Object.defineProperty(exports, "LearningMetricsDefault", { enumerable: true, get: function () { return __importDefault(LearningMetrics_2).default; } });
|
|
37
|
+
var MetricsStore_2 = require("./MetricsStore");
|
|
38
|
+
Object.defineProperty(exports, "MetricsStoreDefault", { enumerable: true, get: function () { return __importDefault(MetricsStore_2).default; } });
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/learning/metrics/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;AAEH,6DAA6D;AAC7D,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAE/B,kGAAkG;AAClG,qDAU2B;AADzB,2HAAA,eAAe,OAA4B;AAG7C,+CAMwB;AADtB,4GAAA,YAAY,OAAA;AAGd,qDAAsE;AAA7D,0IAAA,OAAO,OAA0B;AAC1C,+CAAgE;AAAvD,oIAAA,OAAO,OAAuB"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IdleDetector - Detects system idle state for triggering learning cycles
|
|
3
|
+
*
|
|
4
|
+
* Monitors CPU, memory, and task queue to determine when the system is idle
|
|
5
|
+
* and learning activities can safely run without impacting user operations.
|
|
6
|
+
*
|
|
7
|
+
* Works in DevPod/Codespaces container environments.
|
|
8
|
+
*
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
* @module src/learning/scheduler/IdleDetector
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from 'events';
|
|
13
|
+
export interface IdleDetectorConfig {
|
|
14
|
+
/** CPU usage threshold below which system is considered idle (0-100). Default: 20 */
|
|
15
|
+
cpuThreshold: number;
|
|
16
|
+
/** Memory usage threshold below which system is considered idle (0-100). Default: 70 */
|
|
17
|
+
memoryThreshold: number;
|
|
18
|
+
/** Whether task queue must be empty. Default: true */
|
|
19
|
+
taskQueueEmpty: boolean;
|
|
20
|
+
/** Minimum continuous idle duration before triggering (ms). Default: 60000 (1 min) */
|
|
21
|
+
minIdleDuration: number;
|
|
22
|
+
/** How often to check idle state (ms). Default: 10000 (10 sec) */
|
|
23
|
+
checkInterval: number;
|
|
24
|
+
/** Enable debug logging. Default: false */
|
|
25
|
+
debug: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface IdleState {
|
|
28
|
+
/** Whether system is currently idle */
|
|
29
|
+
isIdle: boolean;
|
|
30
|
+
/** Timestamp when idle state started, null if not idle */
|
|
31
|
+
idleSince: Date | null;
|
|
32
|
+
/** Current CPU usage percentage (0-100) */
|
|
33
|
+
cpuUsage: number;
|
|
34
|
+
/** Current memory usage percentage (0-100) */
|
|
35
|
+
memoryUsage: number;
|
|
36
|
+
/** Number of active tasks in queue */
|
|
37
|
+
activeTaskCount: number;
|
|
38
|
+
/** How long system has been idle (ms), 0 if not idle */
|
|
39
|
+
idleDuration: number;
|
|
40
|
+
/** Last check timestamp */
|
|
41
|
+
lastCheck: Date;
|
|
42
|
+
}
|
|
43
|
+
export interface IdleDetectorEvents {
|
|
44
|
+
/** Emitted when system becomes idle (after minIdleDuration) */
|
|
45
|
+
'idle:detected': (state: IdleState) => void;
|
|
46
|
+
/** Emitted when system exits idle state */
|
|
47
|
+
'idle:ended': (state: IdleState) => void;
|
|
48
|
+
/** Emitted on each check with current state */
|
|
49
|
+
'state:update': (state: IdleState) => void;
|
|
50
|
+
/** Emitted on error */
|
|
51
|
+
'error': (error: Error) => void;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* IdleDetector monitors system resources to detect idle periods
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const detector = new IdleDetector({ cpuThreshold: 20, minIdleDuration: 60000 });
|
|
59
|
+
* detector.on('idle:detected', (state) => {
|
|
60
|
+
* console.log('System is idle, starting learning cycle...');
|
|
61
|
+
* });
|
|
62
|
+
* await detector.start();
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class IdleDetector extends EventEmitter {
|
|
66
|
+
private config;
|
|
67
|
+
private logger;
|
|
68
|
+
private checkTimer;
|
|
69
|
+
private previousCpuTimes;
|
|
70
|
+
private idleSince;
|
|
71
|
+
private isRunning;
|
|
72
|
+
private taskQueue;
|
|
73
|
+
private hasEmittedIdleDetected;
|
|
74
|
+
constructor(config?: Partial<IdleDetectorConfig>);
|
|
75
|
+
/**
|
|
76
|
+
* Start monitoring for idle state
|
|
77
|
+
*/
|
|
78
|
+
start(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Stop monitoring
|
|
81
|
+
*/
|
|
82
|
+
stop(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Get current idle state
|
|
85
|
+
*/
|
|
86
|
+
getState(): IdleState;
|
|
87
|
+
/**
|
|
88
|
+
* Register a task as active (prevents idle detection)
|
|
89
|
+
*/
|
|
90
|
+
registerTask(taskId: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Unregister a task (allows idle detection if queue empty)
|
|
93
|
+
*/
|
|
94
|
+
unregisterTask(taskId: string): void;
|
|
95
|
+
/**
|
|
96
|
+
* Clear all registered tasks
|
|
97
|
+
*/
|
|
98
|
+
clearTasks(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Check and update idle state
|
|
101
|
+
*/
|
|
102
|
+
private checkIdleState;
|
|
103
|
+
/**
|
|
104
|
+
* Check if system is currently idle based on thresholds
|
|
105
|
+
*/
|
|
106
|
+
private isSystemIdle;
|
|
107
|
+
/**
|
|
108
|
+
* Get current CPU usage percentage
|
|
109
|
+
* Uses delta between two readings for accuracy
|
|
110
|
+
*/
|
|
111
|
+
private getCpuUsage;
|
|
112
|
+
/**
|
|
113
|
+
* Get current memory usage percentage
|
|
114
|
+
*/
|
|
115
|
+
private getMemoryUsage;
|
|
116
|
+
/**
|
|
117
|
+
* Get configuration
|
|
118
|
+
*/
|
|
119
|
+
getConfig(): IdleDetectorConfig;
|
|
120
|
+
/**
|
|
121
|
+
* Update configuration (requires restart to take effect for interval)
|
|
122
|
+
*/
|
|
123
|
+
updateConfig(config: Partial<IdleDetectorConfig>): void;
|
|
124
|
+
}
|
|
125
|
+
export default IdleDetector;
|
|
126
|
+
//# sourceMappingURL=IdleDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdleDetector.d.ts","sourceRoot":"","sources":["../../../src/learning/scheduler/IdleDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,cAAc,EAAE,OAAO,CAAC;IACxB,sFAAsF;IACtF,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,2CAA2C;IAC3C,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,+CAA+C;IAC/C,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,uBAAuB;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,sBAAsB,CAAkB;gBAEpC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAchD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,QAAQ,IAAI,SAAS;IAYrB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOlC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOpC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;YACW,cAAc;IAuD5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAsCnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,SAAS,IAAI,kBAAkB;IAI/B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;CAGxD;AAED,eAAe,YAAY,CAAC"}
|