beddel 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +297 -0
- package/dist/agents/agentRegistry.d.ts +68 -0
- package/dist/agents/agentRegistry.d.ts.map +1 -0
- package/dist/agents/agentRegistry.js +222 -0
- package/dist/agents/agentRegistry.js.map +1 -0
- package/dist/agents/formatter-agent.d.ts +10 -0
- package/dist/agents/formatter-agent.d.ts.map +1 -0
- package/dist/agents/formatter-agent.js +49 -0
- package/dist/agents/formatter-agent.js.map +1 -0
- package/dist/agents/genkit-agent.d.ts +12 -0
- package/dist/agents/genkit-agent.d.ts.map +1 -0
- package/dist/agents/genkit-agent.js +119 -0
- package/dist/agents/genkit-agent.js.map +1 -0
- package/dist/agents/i18n-messages.d.ts +17 -0
- package/dist/agents/i18n-messages.d.ts.map +1 -0
- package/dist/agents/i18n-messages.js +92 -0
- package/dist/agents/i18n-messages.js.map +1 -0
- package/dist/agents/index.d.ts +10 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +26 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/pipeline.d.ts +15 -0
- package/dist/agents/pipeline.d.ts.map +1 -0
- package/dist/agents/pipeline.js +45 -0
- package/dist/agents/pipeline.js.map +1 -0
- package/dist/agents/schema-factory.d.ts +40 -0
- package/dist/agents/schema-factory.d.ts.map +1 -0
- package/dist/agents/schema-factory.js +121 -0
- package/dist/agents/schema-factory.js.map +1 -0
- package/dist/agents/translation-validators.d.ts +26 -0
- package/dist/agents/translation-validators.d.ts.map +1 -0
- package/dist/agents/translation-validators.js +77 -0
- package/dist/agents/translation-validators.js.map +1 -0
- package/dist/agents/translator-agents.d.ts +184 -0
- package/dist/agents/translator-agents.d.ts.map +1 -0
- package/dist/agents/translator-agents.js +613 -0
- package/dist/agents/translator-agents.js.map +1 -0
- package/dist/agents/types/translation.types.d.ts +100 -0
- package/dist/agents/types/translation.types.d.ts.map +1 -0
- package/dist/agents/types/translation.types.js +3 -0
- package/dist/agents/types/translation.types.js.map +1 -0
- package/dist/agents/validator-agent.d.ts +42 -0
- package/dist/agents/validator-agent.d.ts.map +1 -0
- package/dist/agents/validator-agent.js +122 -0
- package/dist/agents/validator-agent.js.map +1 -0
- package/dist/audit/auditTrail.d.ts +55 -0
- package/dist/audit/auditTrail.d.ts.map +1 -0
- package/dist/audit/auditTrail.js +93 -0
- package/dist/audit/auditTrail.js.map +1 -0
- package/dist/compliance/gdprEngine.d.ts +44 -0
- package/dist/compliance/gdprEngine.d.ts.map +1 -0
- package/dist/compliance/gdprEngine.js +178 -0
- package/dist/compliance/gdprEngine.js.map +1 -0
- package/dist/compliance/lgpdEngine.d.ts +51 -0
- package/dist/compliance/lgpdEngine.d.ts.map +1 -0
- package/dist/compliance/lgpdEngine.js +221 -0
- package/dist/compliance/lgpdEngine.js.map +1 -0
- package/dist/config.d.ts +78 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +77 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +17 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +40 -0
- package/dist/errors.js.map +1 -0
- package/dist/firebase/tenantManager.d.ts +84 -0
- package/dist/firebase/tenantManager.d.ts.map +1 -0
- package/dist/firebase/tenantManager.js +378 -0
- package/dist/firebase/tenantManager.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +118 -0
- package/dist/index.js.map +1 -0
- package/dist/integration/secure-yaml-runtime.d.ts +68 -0
- package/dist/integration/secure-yaml-runtime.d.ts.map +1 -0
- package/dist/integration/secure-yaml-runtime.js +245 -0
- package/dist/integration/secure-yaml-runtime.js.map +1 -0
- package/dist/parser/secure-yaml-parser.d.ts +62 -0
- package/dist/parser/secure-yaml-parser.d.ts.map +1 -0
- package/dist/parser/secure-yaml-parser.js +234 -0
- package/dist/parser/secure-yaml-parser.js.map +1 -0
- package/dist/performance/autoscaling.d.ts +100 -0
- package/dist/performance/autoscaling.d.ts.map +1 -0
- package/dist/performance/autoscaling.js +339 -0
- package/dist/performance/autoscaling.js.map +1 -0
- package/dist/performance/benchmark.d.ts +104 -0
- package/dist/performance/benchmark.d.ts.map +1 -0
- package/dist/performance/benchmark.js +514 -0
- package/dist/performance/benchmark.js.map +1 -0
- package/dist/performance/index.d.ts +14 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +35 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/performance/monitor.d.ts +126 -0
- package/dist/performance/monitor.d.ts.map +1 -0
- package/dist/performance/monitor.js +324 -0
- package/dist/performance/monitor.js.map +1 -0
- package/dist/performance/streaming.d.ts +82 -0
- package/dist/performance/streaming.d.ts.map +1 -0
- package/dist/performance/streaming.js +287 -0
- package/dist/performance/streaming.js.map +1 -0
- package/dist/runtime/audit.d.ts +240 -0
- package/dist/runtime/audit.d.ts.map +1 -0
- package/dist/runtime/audit.js +641 -0
- package/dist/runtime/audit.js.map +1 -0
- package/dist/runtime/declarativeAgentRuntime.d.ts +123 -0
- package/dist/runtime/declarativeAgentRuntime.d.ts.map +1 -0
- package/dist/runtime/declarativeAgentRuntime.js +576 -0
- package/dist/runtime/declarativeAgentRuntime.js.map +1 -0
- package/dist/runtime/isolatedRuntime.d.ts +119 -0
- package/dist/runtime/isolatedRuntime.d.ts.map +1 -0
- package/dist/runtime/isolatedRuntime.js +425 -0
- package/dist/runtime/isolatedRuntime.js.map +1 -0
- package/dist/runtime/schemaCompiler.d.ts +35 -0
- package/dist/runtime/schemaCompiler.d.ts.map +1 -0
- package/dist/runtime/schemaCompiler.js +151 -0
- package/dist/runtime/schemaCompiler.js.map +1 -0
- package/dist/runtime/simpleRuntime.d.ts +57 -0
- package/dist/runtime/simpleRuntime.d.ts.map +1 -0
- package/dist/runtime/simpleRuntime.js +187 -0
- package/dist/runtime/simpleRuntime.js.map +1 -0
- package/dist/security/dashboard.d.ts +89 -0
- package/dist/security/dashboard.d.ts.map +1 -0
- package/dist/security/dashboard.js +300 -0
- package/dist/security/dashboard.js.map +1 -0
- package/dist/security/hardening.d.ts +130 -0
- package/dist/security/hardening.d.ts.map +1 -0
- package/dist/security/hardening.js +414 -0
- package/dist/security/hardening.js.map +1 -0
- package/dist/security/index.d.ts +128 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +353 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/monitor.d.ts +88 -0
- package/dist/security/monitor.d.ts.map +1 -0
- package/dist/security/monitor.js +356 -0
- package/dist/security/monitor.js.map +1 -0
- package/dist/security/scanner.d.ts +104 -0
- package/dist/security/scanner.d.ts.map +1 -0
- package/dist/security/scanner.js +298 -0
- package/dist/security/scanner.js.map +1 -0
- package/dist/security/score.d.ts +150 -0
- package/dist/security/score.d.ts.map +1 -0
- package/dist/security/score.js +983 -0
- package/dist/security/score.js.map +1 -0
- package/dist/security/test-security.d.ts +22 -0
- package/dist/security/test-security.d.ts.map +1 -0
- package/dist/security/test-security.js +154 -0
- package/dist/security/test-security.js.map +1 -0
- package/dist/security/threatDetector.d.ts +39 -0
- package/dist/security/threatDetector.d.ts.map +1 -0
- package/dist/security/threatDetector.js +354 -0
- package/dist/security/threatDetector.js.map +1 -0
- package/dist/security/validation.d.ts +69 -0
- package/dist/security/validation.d.ts.map +1 -0
- package/dist/security/validation.js +286 -0
- package/dist/security/validation.js.map +1 -0
- package/dist/server/api/clientsRoute.d.ts +9 -0
- package/dist/server/api/clientsRoute.d.ts.map +1 -0
- package/dist/server/api/clientsRoute.js +71 -0
- package/dist/server/api/clientsRoute.js.map +1 -0
- package/dist/server/api/endpointsRoute.d.ts +8 -0
- package/dist/server/api/endpointsRoute.d.ts.map +1 -0
- package/dist/server/api/endpointsRoute.js +76 -0
- package/dist/server/api/endpointsRoute.js.map +1 -0
- package/dist/server/api/graphql.d.ts +9 -0
- package/dist/server/api/graphql.d.ts.map +1 -0
- package/dist/server/api/graphql.js +180 -0
- package/dist/server/api/graphql.js.map +1 -0
- package/dist/server/errors.d.ts +19 -0
- package/dist/server/errors.d.ts.map +1 -0
- package/dist/server/errors.js +42 -0
- package/dist/server/errors.js.map +1 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +24 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/kvStore.d.ts +27 -0
- package/dist/server/kvStore.d.ts.map +1 -0
- package/dist/server/kvStore.js +128 -0
- package/dist/server/kvStore.js.map +1 -0
- package/dist/server/runtimeSecurity.d.ts +28 -0
- package/dist/server/runtimeSecurity.d.ts.map +1 -0
- package/dist/server/runtimeSecurity.js +85 -0
- package/dist/server/runtimeSecurity.js.map +1 -0
- package/dist/server/types.d.ts +53 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +8 -0
- package/dist/server/types.js.map +1 -0
- package/dist/types/executionContext.d.ts +16 -0
- package/dist/types/executionContext.d.ts.map +1 -0
- package/dist/types/executionContext.js +3 -0
- package/dist/types/executionContext.js.map +1 -0
- package/package.json +77 -0
- package/src/agents/agentRegistry.ts +272 -0
- package/src/agents/image-agent.yaml +86 -0
- package/src/agents/joker-agent.yaml +47 -0
- package/src/agents/translator-agent.yaml +80 -0
- package/src/audit/auditTrail.ts +134 -0
- package/src/compliance/gdprEngine.ts +209 -0
- package/src/compliance/lgpdEngine.ts +268 -0
- package/src/config.ts +179 -0
- package/src/errors.ts +35 -0
- package/src/firebase/tenantManager.ts +443 -0
- package/src/index.ts +125 -0
- package/src/integration/secure-yaml-runtime.ts +341 -0
- package/src/parser/secure-yaml-parser.ts +273 -0
- package/src/performance/autoscaling.ts +495 -0
- package/src/performance/benchmark.ts +644 -0
- package/src/performance/index.ts +34 -0
- package/src/performance/monitor.ts +469 -0
- package/src/performance/streaming.ts +317 -0
- package/src/runtime/audit.ts +907 -0
- package/src/runtime/declarativeAgentRuntime.ts +836 -0
- package/src/runtime/isolatedRuntime.ts +572 -0
- package/src/runtime/schemaCompiler.ts +228 -0
- package/src/runtime/simpleRuntime.ts +201 -0
- package/src/security/dashboard.ts +462 -0
- package/src/security/hardening.ts +560 -0
- package/src/security/index.ts +439 -0
- package/src/security/monitor.ts +490 -0
- package/src/security/scanner.ts +368 -0
- package/src/security/score.ts +1138 -0
- package/src/security/threatDetector.ts +481 -0
- package/src/security/validation.ts +365 -0
- package/src/server/api/clientsRoute.ts +92 -0
- package/src/server/api/endpointsRoute.ts +97 -0
- package/src/server/api/graphql.ts +249 -0
- package/src/server/errors.ts +38 -0
- package/src/server/index.ts +6 -0
- package/src/server/kvStore.ts +152 -0
- package/src/server/runtimeSecurity.ts +102 -0
- package/src/server/types.ts +60 -0
- package/src/types/executionContext.ts +16 -0
- package/tools/seed.ts +365 -0
- package/tools/test-endpoints.ts +174 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoscaleSystem = exports.AutoscaleSystem = void 0;
|
|
4
|
+
exports.initializeAutoscaling = initializeAutoscaling;
|
|
5
|
+
exports.getAutoscalingConfig = getAutoscalingConfig;
|
|
6
|
+
/**
|
|
7
|
+
* Autoscaling System - Dynamic Pool Management
|
|
8
|
+
* Automatically adjusts isolate pool size based on performance metrics
|
|
9
|
+
*/
|
|
10
|
+
const monitor_1 = require("./monitor");
|
|
11
|
+
class AutoscaleSystem {
|
|
12
|
+
constructor(runtimeManager, config) {
|
|
13
|
+
this.runtimeManager = runtimeManager;
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.isRunning = false;
|
|
16
|
+
this.currentDecision = null;
|
|
17
|
+
this.scalingHistory = [];
|
|
18
|
+
this.lastScaleTime = 0;
|
|
19
|
+
this.defaultConfig = {
|
|
20
|
+
enabled: true,
|
|
21
|
+
minPoolSize: 5,
|
|
22
|
+
maxPoolSize: 100,
|
|
23
|
+
scaleUpThreshold: 55, // 55ms - slightly above target
|
|
24
|
+
scaleDownThreshold: 30, // 30ms - comfortable below target
|
|
25
|
+
scaleInterval: 30000, // 30 seconds
|
|
26
|
+
scaleUpFactor: 1.25, // Increase by 25%
|
|
27
|
+
scaleDownFactor: 0.8, // Decrease by 20%
|
|
28
|
+
metricsWindow: 60000, // 1 minute window
|
|
29
|
+
safetyMargin: 1.2, // 20% safety margin
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Start autoscaling monitoring
|
|
34
|
+
*/
|
|
35
|
+
start() {
|
|
36
|
+
if (this.isRunning)
|
|
37
|
+
return;
|
|
38
|
+
this.isRunning = true;
|
|
39
|
+
this.lastScaleTime = Date.now();
|
|
40
|
+
// Start monitoring loop
|
|
41
|
+
this.monitoringLoop();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Stop autoscaling monitoring
|
|
45
|
+
*/
|
|
46
|
+
stop() {
|
|
47
|
+
this.isRunning = false;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Main monitoring loop
|
|
51
|
+
*/
|
|
52
|
+
monitoringLoop() {
|
|
53
|
+
if (!this.isRunning)
|
|
54
|
+
return;
|
|
55
|
+
this.evaluateScalingDecision()
|
|
56
|
+
.then((decision) => {
|
|
57
|
+
if (decision.action !== "maintain") {
|
|
58
|
+
this.executeScalingDecision(decision);
|
|
59
|
+
}
|
|
60
|
+
this.currentDecision = decision;
|
|
61
|
+
this.scalingHistory.push(decision);
|
|
62
|
+
// Keep only last 100 decisions
|
|
63
|
+
if (this.scalingHistory.length > 100) {
|
|
64
|
+
this.scalingHistory.shift();
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
.catch((error) => {
|
|
68
|
+
console.error("Autoscaling evaluation error:", error);
|
|
69
|
+
});
|
|
70
|
+
// Schedule next evaluation
|
|
71
|
+
setTimeout(() => this.monitoringLoop(), this.config.scaleInterval);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Evaluate scaling decision based on current metrics
|
|
75
|
+
*/
|
|
76
|
+
async evaluateScalingDecision() {
|
|
77
|
+
const currentPoolStats = this.runtimeManager.getPoolStats();
|
|
78
|
+
const performanceSnapshot = monitor_1.performanceMonitor.getSnapshot();
|
|
79
|
+
const recentMetricsWindow = monitor_1.performanceMonitor.getStats("executionTime", this.config.metricsWindow);
|
|
80
|
+
// Calculate current average metrics
|
|
81
|
+
const avgExecutionTime = recentMetricsWindow.average;
|
|
82
|
+
const successRate = performanceSnapshot.averages["successRate"] || 99.9;
|
|
83
|
+
const avgMemoryUsage = performanceSnapshot.averages["memoryUsage"] || 2.0;
|
|
84
|
+
// Calculate current pool utilization
|
|
85
|
+
const totalIsolates = currentPoolStats.totalIsolates;
|
|
86
|
+
const activeExecutions = currentPoolStats.activeExecutions;
|
|
87
|
+
const poolUtilization = activeExecutions / totalIsolates || 0;
|
|
88
|
+
const currentSize = totalIsolates;
|
|
89
|
+
let targetSize = currentSize;
|
|
90
|
+
let action = "maintain";
|
|
91
|
+
let reason = "Performance within acceptable ranges";
|
|
92
|
+
const now = Date.now();
|
|
93
|
+
// Prevent frequent scaling (rate limiting)
|
|
94
|
+
if (now - this.lastScaleTime < this.config.scaleInterval / 2) {
|
|
95
|
+
return {
|
|
96
|
+
action: "maintain",
|
|
97
|
+
currentSize,
|
|
98
|
+
targetSize: currentSize,
|
|
99
|
+
reason: "Rate limiting in effect",
|
|
100
|
+
timestamp: new Date(now),
|
|
101
|
+
metrics: {
|
|
102
|
+
avgExecutionTime,
|
|
103
|
+
avgMemoryUsage,
|
|
104
|
+
successRate,
|
|
105
|
+
poolUtilization,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// High memory usage detection
|
|
110
|
+
if (avgMemoryUsage > 5.0) {
|
|
111
|
+
// >5MB average usage
|
|
112
|
+
action = "scale_up";
|
|
113
|
+
targetSize = Math.min(this.config.maxPoolSize, Math.max(currentSize * this.config.safetyMargin, currentSize + 2));
|
|
114
|
+
reason = `High memory usage detected (${avgMemoryUsage.toFixed(1)}MB avg)`;
|
|
115
|
+
}
|
|
116
|
+
// Long execution time detection
|
|
117
|
+
else if (avgExecutionTime >
|
|
118
|
+
this.config.scaleUpThreshold * this.config.safetyMargin) {
|
|
119
|
+
action = "scale_up";
|
|
120
|
+
targetSize = Math.min(this.config.maxPoolSize, Math.ceil(currentSize * this.config.scaleUpFactor));
|
|
121
|
+
reason = `Execution time exceed threshold (${avgExecutionTime.toFixed(1)}ms > ${this.config.scaleUpThreshold}ms)`;
|
|
122
|
+
}
|
|
123
|
+
// High pool utilization detection
|
|
124
|
+
else if (poolUtilization > 0.8) {
|
|
125
|
+
action = "scale_up";
|
|
126
|
+
targetSize = Math.min(this.config.maxPoolSize, Math.ceil(currentSize * this.config.scaleUpFactor));
|
|
127
|
+
reason = `High pool utilization (${(poolUtilization * 100).toFixed(1)}%)`;
|
|
128
|
+
}
|
|
129
|
+
// Low pool utilization and fast execution
|
|
130
|
+
else if (avgExecutionTime < this.config.scaleDownThreshold &&
|
|
131
|
+
poolUtilization < 0.3 &&
|
|
132
|
+
currentSize > this.config.minPoolSize * 2) {
|
|
133
|
+
action = "scale_down";
|
|
134
|
+
targetSize = Math.max(this.config.minPoolSize, Math.ceil(currentSize * this.config.scaleDownFactor));
|
|
135
|
+
reason = `Low utilization and fast execution (${avgExecutionTime.toFixed(1)}ms < ${this.config.scaleDownThreshold}ms)`;
|
|
136
|
+
}
|
|
137
|
+
// Ensure targetSize is within bounds
|
|
138
|
+
targetSize = Math.max(this.config.minPoolSize, targetSize);
|
|
139
|
+
targetSize = Math.min(this.config.maxPoolSize, targetSize);
|
|
140
|
+
// If action is to scale but targetSize equals currentSize, maintain current size
|
|
141
|
+
if (action !== "maintain" && targetSize === currentSize) {
|
|
142
|
+
action = "maintain";
|
|
143
|
+
reason = "Target size equals current size";
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
action,
|
|
147
|
+
currentSize,
|
|
148
|
+
targetSize,
|
|
149
|
+
reason,
|
|
150
|
+
timestamp: new Date(now),
|
|
151
|
+
metrics: {
|
|
152
|
+
avgExecutionTime,
|
|
153
|
+
avgMemoryUsage,
|
|
154
|
+
successRate,
|
|
155
|
+
poolUtilization,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Execute scaling decision
|
|
161
|
+
*/
|
|
162
|
+
executeScalingDecision(decision) {
|
|
163
|
+
if (!this.config.enabled)
|
|
164
|
+
return;
|
|
165
|
+
const currentTime = Date.now();
|
|
166
|
+
const timeSinceLastScale = currentTime - this.lastScaleTime;
|
|
167
|
+
// Additional safety check for scaling frequency
|
|
168
|
+
if (timeSinceLastScale < this.config.scaleInterval / 3) {
|
|
169
|
+
return; // Too soon to scale again
|
|
170
|
+
}
|
|
171
|
+
console.log(`[AUTOSCALE] ${decision.action.toUpperCase()}: Current: ${decision.currentSize} -> Target: ${decision.targetSize}`);
|
|
172
|
+
console.log(`[AUTOSCALE] Reason: ${decision.reason}`);
|
|
173
|
+
console.log(`[AUTOSCALE] Metrics: Execution=${decision.metrics.avgExecutionTime.toFixed(1)}ms, Memory=${decision.metrics.avgMemoryUsage.toFixed(1)}MB, Utilization=${decision.metrics.poolUtilization.toFixed(1)}`);
|
|
174
|
+
if (decision.action === "scale_up") {
|
|
175
|
+
this.scaleUp(decision.targetSize);
|
|
176
|
+
}
|
|
177
|
+
else if (decision.action === "scale_down") {
|
|
178
|
+
this.scaleDown(decision.targetSize);
|
|
179
|
+
}
|
|
180
|
+
this.lastScaleTime = currentTime;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Scale up pool size
|
|
184
|
+
*/
|
|
185
|
+
scaleUp(targetSize) {
|
|
186
|
+
const currentStats = this.runtimeManager.getPoolStats();
|
|
187
|
+
const currentSize = currentStats.totalIsolates;
|
|
188
|
+
// Validate scaling decisions
|
|
189
|
+
if (targetSize < currentSize || targetSize > this.config.maxPoolSize) {
|
|
190
|
+
console.warn(`[AUTOSCALE] Invalid scale-up target: ${targetSize} (current: ${currentSize}, max: ${this.config.maxPoolSize})`);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
// Pool scaling is handled by the runtime manager
|
|
194
|
+
console.log(`[AUTOSCALE] Scaling up from ${currentSize} to ${targetSize}`);
|
|
195
|
+
// The actual pool scaling would be implemented in the IsolatedRuntimeManager
|
|
196
|
+
// For now, we log the intention
|
|
197
|
+
console.log(`[AUTOSCALE EVENT] scale_up from: ${currentSize}, to: ${targetSize}`);
|
|
198
|
+
// Pool scaling logic would go here
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Scale down pool size
|
|
202
|
+
*/
|
|
203
|
+
scaleDown(targetSize) {
|
|
204
|
+
const currentStats = this.runtimeManager.getPoolStats();
|
|
205
|
+
const currentSize = currentStats.totalIsolates;
|
|
206
|
+
// Validate scaling decisions
|
|
207
|
+
if (targetSize > currentSize || targetSize < this.config.minPoolSize) {
|
|
208
|
+
console.warn(`[AUTOSCALE] Invalid scale-down target: ${targetSize} (current: ${currentSize}, min: ${this.config.minPoolSize})`);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
console.log(`[AUTOSCALE] Scaling down from ${currentSize} to ${targetSize}`);
|
|
212
|
+
console.log(`[AUTOSCALE] scale_down from: ${currentSize}, to: ${targetSize}`);
|
|
213
|
+
// Pool scaling logic would go here
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get current autoscaling status
|
|
217
|
+
*/
|
|
218
|
+
getStatus() {
|
|
219
|
+
return {
|
|
220
|
+
isRunning: this.isRunning,
|
|
221
|
+
currentDecision: this.currentDecision,
|
|
222
|
+
lastScaleTime: new Date(this.lastScaleTime),
|
|
223
|
+
scalingHistory: [...this.scalingHistory],
|
|
224
|
+
config: { ...this.config },
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Update autoscaling configuration
|
|
229
|
+
*/
|
|
230
|
+
updateConfig(newConfig) {
|
|
231
|
+
this.config = { ...this.config, ...newConfig };
|
|
232
|
+
console.log("[AUTOSCALE] Configuration updated");
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get scaling recommendations
|
|
236
|
+
*/
|
|
237
|
+
getRecommendations() {
|
|
238
|
+
const snapshot = monitor_1.performanceMonitor.getSnapshot();
|
|
239
|
+
const alerts = monitor_1.performanceMonitor.getAlerts(); // Use proper method
|
|
240
|
+
const currentStats = this.getCurrentStats();
|
|
241
|
+
const recommendations = [];
|
|
242
|
+
// High execution time recommendation
|
|
243
|
+
if (currentStats.avgExecutionTime > this.config.scaleUpThreshold) {
|
|
244
|
+
recommendations.push(`Execution time (${currentStats.avgExecutionTime.toFixed(1)}ms) exceeds scale-up threshold (${this.config.scaleUpThreshold}ms). Consider scaling up.`);
|
|
245
|
+
}
|
|
246
|
+
// Memory usage recommendation
|
|
247
|
+
if (currentStats.avgMemoryUsage > 3.0) {
|
|
248
|
+
recommendations.push(`High memory usage detected (${currentStats.avgMemoryUsage.toFixed(1)}MB). Review memory patterns and consider scaling adjustments.`);
|
|
249
|
+
}
|
|
250
|
+
// Critical violation recommendation
|
|
251
|
+
if (alerts.criticals.length > 5) {
|
|
252
|
+
recommendations.push(`Multiple critical violations detected (${alerts.criticals.length}). Immediate attention recommended.`);
|
|
253
|
+
}
|
|
254
|
+
return recommendations;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get current performance stats for scaling decisions
|
|
258
|
+
*/
|
|
259
|
+
getCurrentStats() {
|
|
260
|
+
const snapshot = monitor_1.performanceMonitor.getSnapshot();
|
|
261
|
+
return {
|
|
262
|
+
avgExecutionTime: snapshot.averages["executionTime"] || 50,
|
|
263
|
+
avgMemoryUsage: snapshot.averages["memoryUsage"] || 2,
|
|
264
|
+
successRate: snapshot.averages["successRate"] || 99.9,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Predict optimal pool size based on current metrics
|
|
269
|
+
*/
|
|
270
|
+
predictOptimalPoolSize() {
|
|
271
|
+
const currentStats = this.runtimeManager.getPoolStats();
|
|
272
|
+
const currentSize = currentStats.totalIsolates;
|
|
273
|
+
const snapshot = monitor_1.performanceMonitor.getSnapshot();
|
|
274
|
+
const avgExecutionTime = snapshot.averages["executionTime"] || 50;
|
|
275
|
+
const poolUtilization = currentStats.activeExecutions / currentSize || 0;
|
|
276
|
+
let recommended = currentSize;
|
|
277
|
+
let confidence = "medium";
|
|
278
|
+
const factors = [];
|
|
279
|
+
// Performance-based recommendation
|
|
280
|
+
if (avgExecutionTime > this.config.scaleUpThreshold * 2) {
|
|
281
|
+
recommended = Math.ceil(currentSize * 1.5);
|
|
282
|
+
confidence = "high";
|
|
283
|
+
factors.push(`High execution time (${avgExecutionTime.toFixed(1)}ms)`);
|
|
284
|
+
}
|
|
285
|
+
else if (avgExecutionTime < this.config.scaleDownThreshold / 2) {
|
|
286
|
+
recommended = Math.max(this.config.minPoolSize, Math.floor(currentSize * 0.7));
|
|
287
|
+
factors.push(`Low execution time (${avgExecutionTime.toFixed(1)}ms)`);
|
|
288
|
+
}
|
|
289
|
+
// Utilization-based recommendation
|
|
290
|
+
if (poolUtilization > 0.9) {
|
|
291
|
+
recommended = Math.ceil(recommended * 1.2);
|
|
292
|
+
confidence = "high";
|
|
293
|
+
factors.push(`High pool utilization (${(poolUtilization * 100).toFixed(1)}%)`);
|
|
294
|
+
}
|
|
295
|
+
else if (poolUtilization < 0.2) {
|
|
296
|
+
recommended = Math.floor(recommended * 0.8);
|
|
297
|
+
factors.push(`Low pool utilization (${(poolUtilization * 100).toFixed(1)}%)`);
|
|
298
|
+
}
|
|
299
|
+
// Ensure bounds
|
|
300
|
+
recommended = Math.max(this.config.minPoolSize, recommended);
|
|
301
|
+
recommended = Math.min(this.config.maxPoolSize, recommended);
|
|
302
|
+
return {
|
|
303
|
+
recommended,
|
|
304
|
+
current: currentSize,
|
|
305
|
+
confidence,
|
|
306
|
+
factors,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
exports.AutoscaleSystem = AutoscaleSystem;
|
|
311
|
+
// Global autoscaling instance
|
|
312
|
+
exports.autoscaleSystem = null;
|
|
313
|
+
function initializeAutoscaling(runtimeManager, config) {
|
|
314
|
+
const baseConfig = {
|
|
315
|
+
enabled: true,
|
|
316
|
+
minPoolSize: 5,
|
|
317
|
+
maxPoolSize: 100,
|
|
318
|
+
scaleUpThreshold: 55,
|
|
319
|
+
scaleDownThreshold: 30,
|
|
320
|
+
scaleInterval: 30000,
|
|
321
|
+
scaleUpFactor: 1.25,
|
|
322
|
+
scaleDownFactor: 0.8,
|
|
323
|
+
metricsWindow: 60000,
|
|
324
|
+
safetyMargin: 1.2,
|
|
325
|
+
};
|
|
326
|
+
// Merge with default config
|
|
327
|
+
const mergedConfig = {
|
|
328
|
+
...baseConfig,
|
|
329
|
+
...config,
|
|
330
|
+
};
|
|
331
|
+
exports.autoscaleSystem = new AutoscaleSystem(runtimeManager, mergedConfig);
|
|
332
|
+
return exports.autoscaleSystem;
|
|
333
|
+
}
|
|
334
|
+
// Make config accessible
|
|
335
|
+
function getAutoscalingConfig() {
|
|
336
|
+
return exports.autoscaleSystem ? exports.autoscaleSystem.getStatus().config : null;
|
|
337
|
+
}
|
|
338
|
+
exports.default = AutoscaleSystem;
|
|
339
|
+
//# sourceMappingURL=autoscaling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoscaling.js","sourceRoot":"","sources":["../../src/performance/autoscaling.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { PerformanceMonitor } from "./monitor";
|
|
2
|
+
export interface BenchmarkResult {
|
|
3
|
+
name: string;
|
|
4
|
+
executionTime: number;
|
|
5
|
+
memoryUsed: number;
|
|
6
|
+
successCount: number;
|
|
7
|
+
failureCount: number;
|
|
8
|
+
securityScore: number;
|
|
9
|
+
timestamp: Date;
|
|
10
|
+
}
|
|
11
|
+
export interface BenchmarkSuite {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
testCases: TestCase[];
|
|
15
|
+
}
|
|
16
|
+
export interface TestCase {
|
|
17
|
+
name: string;
|
|
18
|
+
code: string;
|
|
19
|
+
expectedResult?: any;
|
|
20
|
+
context?: Record<string, any>;
|
|
21
|
+
securityProfile?: string;
|
|
22
|
+
timeout?: number;
|
|
23
|
+
memoryLimit?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class BenchmarkSystem {
|
|
26
|
+
private performanceMonitor;
|
|
27
|
+
private readonly sampleSize;
|
|
28
|
+
private baselineResults;
|
|
29
|
+
private isolateResults;
|
|
30
|
+
private currentSuite?;
|
|
31
|
+
constructor(performanceMonitor: PerformanceMonitor, sampleSize?: number);
|
|
32
|
+
/**
|
|
33
|
+
* Create standard benchmark test cases
|
|
34
|
+
*/
|
|
35
|
+
private createStandardTestSuite;
|
|
36
|
+
/**
|
|
37
|
+
* Create security-focused test cases
|
|
38
|
+
*/
|
|
39
|
+
private createSecurityTestSuite;
|
|
40
|
+
/**
|
|
41
|
+
* Create memory-intensive test cases
|
|
42
|
+
*/
|
|
43
|
+
private createMemoryIntensiveSuite;
|
|
44
|
+
/**
|
|
45
|
+
* Create performance targets test suite
|
|
46
|
+
*/
|
|
47
|
+
private createTargetedSuite;
|
|
48
|
+
/**
|
|
49
|
+
* Run comprehensive benchmark suite
|
|
50
|
+
*/
|
|
51
|
+
runComprehensiveBenchmark(): Promise<{
|
|
52
|
+
baseline: BenchmarkResult[];
|
|
53
|
+
isolated: BenchmarkResult[];
|
|
54
|
+
comparison: {
|
|
55
|
+
executionTimeRatio: number;
|
|
56
|
+
memoryRatio: number;
|
|
57
|
+
successRateRatio: number;
|
|
58
|
+
summary: string;
|
|
59
|
+
};
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Run baseline execution (standard runtime)
|
|
63
|
+
*/
|
|
64
|
+
private runSuiteBaseline;
|
|
65
|
+
/**
|
|
66
|
+
* Run single baseline test case
|
|
67
|
+
*/
|
|
68
|
+
private runTestCaseBaseline;
|
|
69
|
+
/**
|
|
70
|
+
* Execute baseline code safely
|
|
71
|
+
*/
|
|
72
|
+
private executeBaselineCode;
|
|
73
|
+
/**
|
|
74
|
+
* Run isolated execution benchmark
|
|
75
|
+
*/
|
|
76
|
+
private runSuiteIsolated;
|
|
77
|
+
/**
|
|
78
|
+
* Run single isolated test case
|
|
79
|
+
*/
|
|
80
|
+
private runTestCaseIsolated;
|
|
81
|
+
/**
|
|
82
|
+
* Generate comparison analysis
|
|
83
|
+
*/
|
|
84
|
+
private generateComparison;
|
|
85
|
+
/**
|
|
86
|
+
* Generate performance report
|
|
87
|
+
*/
|
|
88
|
+
generateReport(baseline: BenchmarkResult[], isolated: BenchmarkResult[]): string;
|
|
89
|
+
/**
|
|
90
|
+
* Quick performance check against targets
|
|
91
|
+
*/
|
|
92
|
+
quickHealthCheck(): {
|
|
93
|
+
isHealthy: boolean;
|
|
94
|
+
issues: string[];
|
|
95
|
+
metrics: {
|
|
96
|
+
avgExecutionTime: number;
|
|
97
|
+
avgMemoryUsage: number;
|
|
98
|
+
successRate: number;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export declare let benchmarkSystem: BenchmarkSystem | null;
|
|
103
|
+
export declare function initializeBenchmarks(performanceMonitor: PerformanceMonitor): BenchmarkSystem;
|
|
104
|
+
//# sourceMappingURL=benchmark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/performance/benchmark.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;IAMxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN7B,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAG5B,kBAAkB,EAAE,kBAAkB,EAC7B,UAAU,SAAM;IAGnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2D/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2D/B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA2DlC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqE3B;;OAEG;IACU,yBAAyB,IAAI,OAAO,CAAC;QAChD,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,UAAU,EAAE;YACV,kBAAkB,EAAE,MAAM,CAAC;YAC3B,WAAW,EAAE,MAAM,CAAC;YACpB,gBAAgB,EAAE,MAAM,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IAoCF;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;YACW,mBAAmB;IA8CjC;;OAEG;YACW,mBAAmB;IAMjC;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;YACW,mBAAmB;IAiEjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiE1B;;OAEG;IACI,cAAc,CACnB,QAAQ,EAAE,eAAe,EAAE,EAC3B,QAAQ,EAAE,eAAe,EAAE,GAC1B,MAAM;IA4BT;;OAEG;IACI,gBAAgB,IAAI;QACzB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE;YACP,gBAAgB,EAAE,MAAM,CAAC;YACzB,cAAc,EAAE,MAAM,CAAC;YACvB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH;CAaF;AAGD,eAAO,IAAI,eAAe,EAAE,eAAe,GAAG,IAAW,CAAC;AAE1D,wBAAgB,oBAAoB,CAClC,kBAAkB,EAAE,kBAAkB,GACrC,eAAe,CAGjB"}
|