agentic-qe 2.8.1 → 2.8.2
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 +43 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +201 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +401 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts +135 -0
- package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js +301 -0
- package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js.map +1 -0
- package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts +78 -6
- package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts.map +1 -1
- package/dist/code-intelligence/embeddings/NomicEmbedder.js +162 -21
- package/dist/code-intelligence/embeddings/NomicEmbedder.js.map +1 -1
- package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts +59 -0
- package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/backends/MemoryBackend.js +173 -0
- package/dist/code-intelligence/embeddings/backends/MemoryBackend.js.map +1 -0
- package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts +50 -0
- package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/backends/RedisBackend.js +279 -0
- package/dist/code-intelligence/embeddings/backends/RedisBackend.js.map +1 -0
- package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts +64 -0
- package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js +314 -0
- package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js.map +1 -0
- package/dist/code-intelligence/embeddings/backends/index.d.ts +16 -0
- package/dist/code-intelligence/embeddings/backends/index.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/backends/index.js +28 -0
- package/dist/code-intelligence/embeddings/backends/index.js.map +1 -0
- package/dist/code-intelligence/embeddings/backends/types.d.ts +177 -0
- package/dist/code-intelligence/embeddings/backends/types.d.ts.map +1 -0
- package/dist/code-intelligence/embeddings/backends/types.js +30 -0
- package/dist/code-intelligence/embeddings/backends/types.js.map +1 -0
- package/dist/code-intelligence/embeddings/index.d.ts +7 -0
- package/dist/code-intelligence/embeddings/index.d.ts.map +1 -1
- package/dist/code-intelligence/embeddings/index.js +16 -1
- package/dist/code-intelligence/embeddings/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/infrastructure/index.d.ts +15 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +44 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/network/AgentRateLimiter.d.ts +59 -0
- package/dist/infrastructure/network/AgentRateLimiter.d.ts.map +1 -0
- package/dist/infrastructure/network/AgentRateLimiter.js +186 -0
- package/dist/infrastructure/network/AgentRateLimiter.js.map +1 -0
- package/dist/infrastructure/network/AuditLogger.d.ts +102 -0
- package/dist/infrastructure/network/AuditLogger.d.ts.map +1 -0
- package/dist/infrastructure/network/AuditLogger.js +284 -0
- package/dist/infrastructure/network/AuditLogger.js.map +1 -0
- package/dist/infrastructure/network/DomainWhitelist.d.ts +111 -0
- package/dist/infrastructure/network/DomainWhitelist.d.ts.map +1 -0
- package/dist/infrastructure/network/DomainWhitelist.js +216 -0
- package/dist/infrastructure/network/DomainWhitelist.js.map +1 -0
- package/dist/infrastructure/network/NetworkPolicyManager.d.ts +97 -0
- package/dist/infrastructure/network/NetworkPolicyManager.d.ts.map +1 -0
- package/dist/infrastructure/network/NetworkPolicyManager.js +309 -0
- package/dist/infrastructure/network/NetworkPolicyManager.js.map +1 -0
- package/dist/infrastructure/network/index.d.ts +19 -0
- package/dist/infrastructure/network/index.d.ts.map +1 -0
- package/dist/infrastructure/network/index.js +46 -0
- package/dist/infrastructure/network/index.js.map +1 -0
- package/dist/infrastructure/network/policies/default-policies.d.ts +78 -0
- package/dist/infrastructure/network/policies/default-policies.d.ts.map +1 -0
- package/dist/infrastructure/network/policies/default-policies.js +312 -0
- package/dist/infrastructure/network/policies/default-policies.js.map +1 -0
- package/dist/infrastructure/network/types.d.ts +214 -0
- package/dist/infrastructure/network/types.d.ts.map +1 -0
- package/dist/infrastructure/network/types.js +25 -0
- package/dist/infrastructure/network/types.js.map +1 -0
- package/dist/infrastructure/sandbox/ResourceMonitor.d.ts +124 -0
- package/dist/infrastructure/sandbox/ResourceMonitor.d.ts.map +1 -0
- package/dist/infrastructure/sandbox/ResourceMonitor.js +305 -0
- package/dist/infrastructure/sandbox/ResourceMonitor.js.map +1 -0
- package/dist/infrastructure/sandbox/SandboxManager.d.ts +122 -0
- package/dist/infrastructure/sandbox/SandboxManager.d.ts.map +1 -0
- package/dist/infrastructure/sandbox/SandboxManager.js +527 -0
- package/dist/infrastructure/sandbox/SandboxManager.js.map +1 -0
- package/dist/infrastructure/sandbox/index.d.ts +18 -0
- package/dist/infrastructure/sandbox/index.d.ts.map +1 -0
- package/dist/infrastructure/sandbox/index.js +38 -0
- package/dist/infrastructure/sandbox/index.js.map +1 -0
- package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts +53 -0
- package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts.map +1 -0
- package/dist/infrastructure/sandbox/profiles/agent-profiles.js +433 -0
- package/dist/infrastructure/sandbox/profiles/agent-profiles.js.map +1 -0
- package/dist/infrastructure/sandbox/types.d.ts +227 -0
- package/dist/infrastructure/sandbox/types.d.ts.map +1 -0
- package/dist/infrastructure/sandbox/types.js +63 -0
- package/dist/infrastructure/sandbox/types.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -1
- package/dist/persistence/SupabasePersistenceProvider.js +8 -4
- package/dist/persistence/SupabasePersistenceProvider.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceMonitor.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/sandbox/ResourceMonitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAgB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IAEnB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IAEtB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAIhC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,UAAU,EAAE,kBAAkB,CAAC;IAE/B,sCAAsC;IACtC,mBAAmB,EAAE,OAAO,CAAC;IAE7B,uDAAuD;IACvD,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,qBAKpC,CAAC;AAcF;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAMvE;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3E;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgBlE;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIzD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAaxD;;OAEG;IACH,EAAE,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAItC;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAOvC;;OAEG;YACW,eAAe;IAQ7B;;OAEG;YACW,wBAAwB;IAoBtC;;OAEG;YACW,qBAAqB;IAWnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyCxB;;OAEG;YACW,eAAe;IAmE7B;;OAEG;YACW,SAAS;IAUvB;;OAEG;IACH,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;KACpB;CAOF"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Resource Monitor for Docker Containers
|
|
4
|
+
*
|
|
5
|
+
* Monitors CPU, memory, disk, and network usage for sandboxed agent containers.
|
|
6
|
+
* Provides real-time stats and threshold-based alerts.
|
|
7
|
+
*
|
|
8
|
+
* @module infrastructure/sandbox/ResourceMonitor
|
|
9
|
+
* @see Issue #146 - Security Hardening: Docker Sandboxing
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ResourceMonitor = exports.DEFAULT_MONITOR_CONFIG = exports.DEFAULT_THRESHOLDS = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* Default resource thresholds for alerts
|
|
15
|
+
*/
|
|
16
|
+
exports.DEFAULT_THRESHOLDS = {
|
|
17
|
+
cpuPercent: 90,
|
|
18
|
+
memoryPercent: 85,
|
|
19
|
+
diskPercent: 80,
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Default monitor configuration
|
|
23
|
+
*/
|
|
24
|
+
exports.DEFAULT_MONITOR_CONFIG = {
|
|
25
|
+
intervalMs: 5000,
|
|
26
|
+
thresholds: exports.DEFAULT_THRESHOLDS,
|
|
27
|
+
enableOomPrevention: true,
|
|
28
|
+
oomPreventionThreshold: 95,
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* ResourceMonitor class for tracking container resource usage
|
|
32
|
+
*/
|
|
33
|
+
class ResourceMonitor {
|
|
34
|
+
constructor(docker, config = {}) {
|
|
35
|
+
this.monitorInterval = null;
|
|
36
|
+
this.eventHandlers = [];
|
|
37
|
+
this.isRunning = false;
|
|
38
|
+
this.docker = docker;
|
|
39
|
+
this.config = { ...exports.DEFAULT_MONITOR_CONFIG, ...config };
|
|
40
|
+
this.containers = new Map();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Start monitoring a container
|
|
44
|
+
*/
|
|
45
|
+
addContainer(containerId, agentId, agentType) {
|
|
46
|
+
this.containers.set(containerId, {
|
|
47
|
+
containerId,
|
|
48
|
+
agentId,
|
|
49
|
+
agentType,
|
|
50
|
+
consecutiveHighMemory: 0,
|
|
51
|
+
consecutiveHighCpu: 0,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Stop monitoring a container
|
|
56
|
+
*/
|
|
57
|
+
removeContainer(containerId) {
|
|
58
|
+
this.containers.delete(containerId);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Start the monitoring loop
|
|
62
|
+
*/
|
|
63
|
+
start() {
|
|
64
|
+
if (this.isRunning)
|
|
65
|
+
return;
|
|
66
|
+
this.isRunning = true;
|
|
67
|
+
this.monitorInterval = setInterval(async () => {
|
|
68
|
+
await this.collectAllStats();
|
|
69
|
+
}, this.config.intervalMs);
|
|
70
|
+
// Collect initial stats immediately
|
|
71
|
+
this.collectAllStats().catch(console.error);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Stop the monitoring loop
|
|
75
|
+
*/
|
|
76
|
+
stop() {
|
|
77
|
+
if (this.monitorInterval) {
|
|
78
|
+
clearInterval(this.monitorInterval);
|
|
79
|
+
this.monitorInterval = null;
|
|
80
|
+
}
|
|
81
|
+
this.isRunning = false;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get stats for a specific container
|
|
85
|
+
*/
|
|
86
|
+
async getStats(containerId) {
|
|
87
|
+
const monitored = this.containers.get(containerId);
|
|
88
|
+
if (!monitored)
|
|
89
|
+
return null;
|
|
90
|
+
try {
|
|
91
|
+
const stats = await this.collectContainerStats(containerId);
|
|
92
|
+
if (stats) {
|
|
93
|
+
monitored.lastStats = stats;
|
|
94
|
+
}
|
|
95
|
+
return stats;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.error(`Failed to get stats for ${containerId}:`, error);
|
|
99
|
+
return monitored.lastStats || null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get cached stats for a container (no API call)
|
|
104
|
+
*/
|
|
105
|
+
getCachedStats(containerId) {
|
|
106
|
+
return this.containers.get(containerId)?.lastStats || null;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get stats for all monitored containers
|
|
110
|
+
*/
|
|
111
|
+
async getAllStats() {
|
|
112
|
+
const result = new Map();
|
|
113
|
+
for (const [containerId, monitored] of this.containers) {
|
|
114
|
+
const stats = await this.getStats(containerId);
|
|
115
|
+
if (stats) {
|
|
116
|
+
result.set(containerId, stats);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Add event handler
|
|
123
|
+
*/
|
|
124
|
+
on(handler) {
|
|
125
|
+
this.eventHandlers.push(handler);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Remove event handler
|
|
129
|
+
*/
|
|
130
|
+
off(handler) {
|
|
131
|
+
const index = this.eventHandlers.indexOf(handler);
|
|
132
|
+
if (index !== -1) {
|
|
133
|
+
this.eventHandlers.splice(index, 1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Collect stats for all monitored containers
|
|
138
|
+
*/
|
|
139
|
+
async collectAllStats() {
|
|
140
|
+
const promises = Array.from(this.containers.keys()).map((containerId) => this.collectAndCheckContainer(containerId));
|
|
141
|
+
await Promise.allSettled(promises);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Collect stats and check thresholds for a container
|
|
145
|
+
*/
|
|
146
|
+
async collectAndCheckContainer(containerId) {
|
|
147
|
+
const monitored = this.containers.get(containerId);
|
|
148
|
+
if (!monitored)
|
|
149
|
+
return;
|
|
150
|
+
try {
|
|
151
|
+
const stats = await this.collectContainerStats(containerId);
|
|
152
|
+
if (!stats)
|
|
153
|
+
return;
|
|
154
|
+
monitored.lastStats = stats;
|
|
155
|
+
// Check thresholds
|
|
156
|
+
await this.checkThresholds(monitored, stats);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
// Container might have been removed
|
|
160
|
+
if (error.message?.includes('no such container')) {
|
|
161
|
+
this.containers.delete(containerId);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Collect resource stats for a container
|
|
167
|
+
*/
|
|
168
|
+
async collectContainerStats(containerId) {
|
|
169
|
+
try {
|
|
170
|
+
const container = this.docker.getContainer(containerId);
|
|
171
|
+
const stats = await container.stats({ stream: false });
|
|
172
|
+
return this.parseDockerStats(stats);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Parse Docker stats response into ResourceStats
|
|
180
|
+
*/
|
|
181
|
+
parseDockerStats(stats) {
|
|
182
|
+
// Calculate CPU percentage
|
|
183
|
+
const cpuDelta = stats.cpu_stats.cpu_usage.total_usage - stats.precpu_stats.cpu_usage.total_usage;
|
|
184
|
+
const systemDelta = stats.cpu_stats.system_cpu_usage - stats.precpu_stats.system_cpu_usage;
|
|
185
|
+
const cpuCount = stats.cpu_stats.online_cpus || 1;
|
|
186
|
+
const cpuPercent = systemDelta > 0 ? (cpuDelta / systemDelta) * cpuCount * 100 : 0;
|
|
187
|
+
// Memory stats
|
|
188
|
+
const memoryUsage = stats.memory_stats.usage || 0;
|
|
189
|
+
const memoryLimit = stats.memory_stats.limit || 1;
|
|
190
|
+
const memoryUsageMB = memoryUsage / (1024 * 1024);
|
|
191
|
+
const memoryLimitMB = memoryLimit / (1024 * 1024);
|
|
192
|
+
const memoryPercent = (memoryUsage / memoryLimit) * 100;
|
|
193
|
+
// Network stats
|
|
194
|
+
let networkRxBytes = 0;
|
|
195
|
+
let networkTxBytes = 0;
|
|
196
|
+
if (stats.networks) {
|
|
197
|
+
for (const network of Object.values(stats.networks)) {
|
|
198
|
+
networkRxBytes += network.rx_bytes || 0;
|
|
199
|
+
networkTxBytes += network.tx_bytes || 0;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// PIDs
|
|
203
|
+
const pidsCount = stats.pids_stats?.current || 0;
|
|
204
|
+
return {
|
|
205
|
+
cpuPercent: Math.round(cpuPercent * 100) / 100,
|
|
206
|
+
memoryUsageMB: Math.round(memoryUsageMB * 100) / 100,
|
|
207
|
+
memoryLimitMB: Math.round(memoryLimitMB * 100) / 100,
|
|
208
|
+
memoryPercent: Math.round(memoryPercent * 100) / 100,
|
|
209
|
+
diskUsageMB: 0, // Disk stats require additional API call
|
|
210
|
+
networkRxBytes,
|
|
211
|
+
networkTxBytes,
|
|
212
|
+
pidsCount,
|
|
213
|
+
timestamp: new Date(),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Check resource thresholds and emit events
|
|
218
|
+
*/
|
|
219
|
+
async checkThresholds(monitored, stats) {
|
|
220
|
+
const { thresholds } = this.config;
|
|
221
|
+
// Check CPU threshold
|
|
222
|
+
if (stats.cpuPercent > thresholds.cpuPercent) {
|
|
223
|
+
monitored.consecutiveHighCpu++;
|
|
224
|
+
if (monitored.consecutiveHighCpu >= 3) {
|
|
225
|
+
await this.emitEvent({
|
|
226
|
+
type: 'resource_limit_exceeded',
|
|
227
|
+
containerId: monitored.containerId,
|
|
228
|
+
agentId: monitored.agentId,
|
|
229
|
+
agentType: monitored.agentType,
|
|
230
|
+
timestamp: new Date(),
|
|
231
|
+
details: {
|
|
232
|
+
resource: 'cpu',
|
|
233
|
+
current: stats.cpuPercent,
|
|
234
|
+
threshold: thresholds.cpuPercent,
|
|
235
|
+
},
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
monitored.consecutiveHighCpu = 0;
|
|
241
|
+
}
|
|
242
|
+
// Check memory threshold
|
|
243
|
+
if (stats.memoryPercent > thresholds.memoryPercent) {
|
|
244
|
+
monitored.consecutiveHighMemory++;
|
|
245
|
+
// OOM prevention
|
|
246
|
+
if (this.config.enableOomPrevention &&
|
|
247
|
+
stats.memoryPercent > this.config.oomPreventionThreshold) {
|
|
248
|
+
await this.emitEvent({
|
|
249
|
+
type: 'oom_killed',
|
|
250
|
+
containerId: monitored.containerId,
|
|
251
|
+
agentId: monitored.agentId,
|
|
252
|
+
agentType: monitored.agentType,
|
|
253
|
+
timestamp: new Date(),
|
|
254
|
+
details: {
|
|
255
|
+
memoryPercent: stats.memoryPercent,
|
|
256
|
+
threshold: this.config.oomPreventionThreshold,
|
|
257
|
+
action: 'container_restart_recommended',
|
|
258
|
+
},
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
else if (monitored.consecutiveHighMemory >= 3) {
|
|
262
|
+
await this.emitEvent({
|
|
263
|
+
type: 'resource_limit_exceeded',
|
|
264
|
+
containerId: monitored.containerId,
|
|
265
|
+
agentId: monitored.agentId,
|
|
266
|
+
agentType: monitored.agentType,
|
|
267
|
+
timestamp: new Date(),
|
|
268
|
+
details: {
|
|
269
|
+
resource: 'memory',
|
|
270
|
+
current: stats.memoryPercent,
|
|
271
|
+
threshold: thresholds.memoryPercent,
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
monitored.consecutiveHighMemory = 0;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Emit event to all handlers
|
|
282
|
+
*/
|
|
283
|
+
async emitEvent(event) {
|
|
284
|
+
for (const handler of this.eventHandlers) {
|
|
285
|
+
try {
|
|
286
|
+
await handler(event);
|
|
287
|
+
}
|
|
288
|
+
catch (error) {
|
|
289
|
+
console.error('Error in sandbox event handler:', error);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Get monitoring status
|
|
295
|
+
*/
|
|
296
|
+
getStatus() {
|
|
297
|
+
return {
|
|
298
|
+
running: this.isRunning,
|
|
299
|
+
containerCount: this.containers.size,
|
|
300
|
+
intervalMs: this.config.intervalMs,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
exports.ResourceMonitor = ResourceMonitor;
|
|
305
|
+
//# sourceMappingURL=ResourceMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceMonitor.js","sourceRoot":"","sources":["../../../src/infrastructure/sandbox/ResourceMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sandbox Manager for Docker-Based Agent Isolation
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of sandboxed agent containers with resource limits
|
|
5
|
+
* enforced by cgroups. Provides secure, isolated execution environments
|
|
6
|
+
* for QE agents.
|
|
7
|
+
*
|
|
8
|
+
* @module infrastructure/sandbox/SandboxManager
|
|
9
|
+
* @see Issue #146 - Security Hardening: Docker Sandboxing
|
|
10
|
+
*/
|
|
11
|
+
import type { SandboxConfig, SandboxManagerConfig, ContainerInfo, ResourceStats, SandboxCreateResult, SandboxDestroyResult, HealthCheckResult, SandboxEventHandler } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* SandboxManager manages Docker containers for secure agent execution
|
|
14
|
+
*/
|
|
15
|
+
export declare class SandboxManager {
|
|
16
|
+
private docker;
|
|
17
|
+
private config;
|
|
18
|
+
private containers;
|
|
19
|
+
private resourceMonitor;
|
|
20
|
+
private eventHandlers;
|
|
21
|
+
private isInitialized;
|
|
22
|
+
private networkId;
|
|
23
|
+
constructor(config?: Partial<SandboxManagerConfig>);
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the sandbox manager
|
|
26
|
+
* Creates network if needed and validates Docker connection
|
|
27
|
+
*/
|
|
28
|
+
initialize(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Shutdown the sandbox manager
|
|
31
|
+
* Optionally cleans up all containers
|
|
32
|
+
*/
|
|
33
|
+
shutdown(): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Create a sandboxed container for an agent
|
|
36
|
+
*/
|
|
37
|
+
createSandbox(agentId: string, agentType: string, customConfig?: Partial<SandboxConfig>): Promise<SandboxCreateResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Destroy a sandboxed container
|
|
40
|
+
*/
|
|
41
|
+
destroySandbox(containerId: string, force?: boolean): Promise<SandboxDestroyResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Destroy all sandboxed containers
|
|
44
|
+
*/
|
|
45
|
+
destroyAll(): Promise<SandboxDestroyResult[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Get resource usage for a container
|
|
48
|
+
*/
|
|
49
|
+
getResourceUsage(containerId: string): Promise<ResourceStats | null>;
|
|
50
|
+
/**
|
|
51
|
+
* List all sandboxed containers
|
|
52
|
+
*/
|
|
53
|
+
listSandboxes(): ContainerInfo[];
|
|
54
|
+
/**
|
|
55
|
+
* Get container info by ID
|
|
56
|
+
*/
|
|
57
|
+
getContainer(containerId: string): ContainerInfo | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Get container by agent ID
|
|
60
|
+
*/
|
|
61
|
+
getContainerByAgentId(agentId: string): ContainerInfo | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Check container health
|
|
64
|
+
*/
|
|
65
|
+
healthCheck(containerId: string): Promise<HealthCheckResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Execute a command in a container
|
|
68
|
+
*/
|
|
69
|
+
exec(containerId: string, command: string[]): Promise<{
|
|
70
|
+
exitCode: number;
|
|
71
|
+
output: string;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Get container logs
|
|
75
|
+
*/
|
|
76
|
+
getLogs(containerId: string, options?: {
|
|
77
|
+
tail?: number;
|
|
78
|
+
since?: number;
|
|
79
|
+
}): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Add event handler
|
|
82
|
+
*/
|
|
83
|
+
on(handler: SandboxEventHandler): void;
|
|
84
|
+
/**
|
|
85
|
+
* Remove event handler
|
|
86
|
+
*/
|
|
87
|
+
off(handler: SandboxEventHandler): void;
|
|
88
|
+
/**
|
|
89
|
+
* Check if Docker is available
|
|
90
|
+
*/
|
|
91
|
+
isDockerAvailable(): Promise<boolean>;
|
|
92
|
+
/**
|
|
93
|
+
* Get manager status
|
|
94
|
+
*/
|
|
95
|
+
getStatus(): {
|
|
96
|
+
initialized: boolean;
|
|
97
|
+
dockerAvailable: boolean;
|
|
98
|
+
containerCount: number;
|
|
99
|
+
networkId: string | null;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Build Docker container create options
|
|
103
|
+
*/
|
|
104
|
+
private buildContainerOptions;
|
|
105
|
+
/**
|
|
106
|
+
* Ensure sandbox network exists
|
|
107
|
+
*/
|
|
108
|
+
private ensureNetwork;
|
|
109
|
+
/**
|
|
110
|
+
* Parse memory string to bytes
|
|
111
|
+
*/
|
|
112
|
+
private parseMemory;
|
|
113
|
+
/**
|
|
114
|
+
* Emit event to all handlers
|
|
115
|
+
*/
|
|
116
|
+
private emitEvent;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a new SandboxManager instance
|
|
120
|
+
*/
|
|
121
|
+
export declare function createSandboxManager(config?: Partial<SandboxManagerConfig>): SandboxManager;
|
|
122
|
+
//# sourceMappingURL=SandboxManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SandboxManager.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/sandbox/SandboxManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EAEjB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAoBpB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAuB;gBAE5B,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAsBtD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBjC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACpC,OAAO,CAAC,mBAAmB,CAAC;IAwE/B;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwDhG;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAWnD;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAI1E;;OAEG;IACH,aAAa,IAAI,aAAa,EAAE;IAIhC;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5D;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IASjE;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqClE;;OAEG;IACG,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAmChD;;OAEG;IACG,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9C,OAAO,CAAC,MAAM,CAAC;IAalB;;OAEG;IACH,EAAE,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAItC;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAOvC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAS3C;;OAEG;IACH,SAAS,IAAI;QACX,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;IAaD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsG7B;;OAEG;YACW,aAAa;IA8B3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;YACW,SAAS;CASxB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAE3F"}
|