agentic-qe 2.8.0 → 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 +148 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +329 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +657 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/cli/commands/supabase/index.d.ts +20 -0
- package/dist/cli/commands/supabase/index.d.ts.map +1 -0
- package/dist/cli/commands/supabase/index.js +632 -0
- package/dist/cli/commands/supabase/index.js.map +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.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/handlers/NewDomainToolsHandler.d.ts +8 -8
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -1
- package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -1
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
- package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
- package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/index.js +9 -0
- package/dist/mcp/handlers/ruvector/index.js.map +1 -0
- 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 +100 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.js +882 -0
- package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
- package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
- package/dist/nervous-system/index.d.ts +25 -0
- package/dist/nervous-system/index.d.ts.map +1 -0
- package/dist/nervous-system/index.js +80 -0
- package/dist/nervous-system/index.js.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.js +696 -0
- package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
- package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
- package/dist/nervous-system/integration/index.d.ts +22 -0
- package/dist/nervous-system/integration/index.d.ts.map +1 -0
- package/dist/nervous-system/integration/index.js +44 -0
- package/dist/nervous-system/integration/index.js.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
- package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/index.d.ts +22 -0
- package/dist/nervous-system/persistence/index.d.ts.map +1 -0
- package/dist/nervous-system/persistence/index.js +45 -0
- package/dist/nervous-system/persistence/index.js.map +1 -0
- package/dist/nervous-system/wasm-loader.d.ts +52 -0
- package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
- package/dist/nervous-system/wasm-loader.js +188 -0
- package/dist/nervous-system/wasm-loader.js.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.js +1086 -0
- package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
- package/dist/persistence/IPersistenceProvider.d.ts +657 -0
- package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/IPersistenceProvider.js +11 -0
- package/dist/persistence/IPersistenceProvider.js.map +1 -0
- package/dist/persistence/SupabaseConfig.d.ts +176 -0
- package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
- package/dist/persistence/SupabaseConfig.js +277 -0
- package/dist/persistence/SupabaseConfig.js.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.js +959 -0
- package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/index.d.ts +11 -0
- package/dist/persistence/adapters/index.d.ts.map +1 -0
- package/dist/persistence/adapters/index.js +20 -0
- package/dist/persistence/adapters/index.js.map +1 -0
- package/dist/persistence/index.d.ts +14 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +36 -1
- package/dist/persistence/index.js.map +1 -1
- package/package.json +7 -1
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Resource Profiles for Docker Sandboxing
|
|
4
|
+
*
|
|
5
|
+
* Defines resource limits and network policies for each QE agent type.
|
|
6
|
+
* Profiles are designed for security (minimal access) and stability (OOM prevention).
|
|
7
|
+
*
|
|
8
|
+
* @module infrastructure/sandbox/profiles/agent-profiles
|
|
9
|
+
* @see Issue #146 - Security Hardening: Docker Sandboxing
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AGENT_PROFILES = void 0;
|
|
13
|
+
exports.getAgentProfile = getAgentProfile;
|
|
14
|
+
exports.getAgentSandboxConfig = getAgentSandboxConfig;
|
|
15
|
+
exports.listAgentProfiles = listAgentProfiles;
|
|
16
|
+
exports.validateConfigAgainstProfile = validateConfigAgainstProfile;
|
|
17
|
+
/**
|
|
18
|
+
* Resource profiles for all QE agents
|
|
19
|
+
*
|
|
20
|
+
* Each profile is tuned for the specific agent's requirements:
|
|
21
|
+
* - CPU: Based on computational needs
|
|
22
|
+
* - Memory: Based on data processing requirements
|
|
23
|
+
* - Network: Minimal domains required for operation
|
|
24
|
+
*/
|
|
25
|
+
exports.AGENT_PROFILES = {
|
|
26
|
+
// ============================================
|
|
27
|
+
// Core QE Agents
|
|
28
|
+
// ============================================
|
|
29
|
+
'qe-test-generator': {
|
|
30
|
+
description: 'AI-powered test generation with multi-framework support',
|
|
31
|
+
riskLevel: 'medium',
|
|
32
|
+
requiresNetwork: true,
|
|
33
|
+
config: {
|
|
34
|
+
cpuLimit: 2,
|
|
35
|
+
memoryLimit: '2g',
|
|
36
|
+
memorySwapLimit: '2g',
|
|
37
|
+
diskLimit: '512m',
|
|
38
|
+
networkMode: 'whitelisted',
|
|
39
|
+
allowedDomains: [
|
|
40
|
+
'api.anthropic.com',
|
|
41
|
+
'registry.npmjs.org',
|
|
42
|
+
'api.github.com',
|
|
43
|
+
],
|
|
44
|
+
readOnlyRootFs: true,
|
|
45
|
+
user: 'node',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
'qe-coverage-analyzer': {
|
|
49
|
+
description: 'O(log n) coverage gap detection with sublinear algorithms',
|
|
50
|
+
riskLevel: 'low',
|
|
51
|
+
requiresNetwork: true,
|
|
52
|
+
config: {
|
|
53
|
+
cpuLimit: 1,
|
|
54
|
+
memoryLimit: '1g',
|
|
55
|
+
memorySwapLimit: '1g',
|
|
56
|
+
diskLimit: '256m',
|
|
57
|
+
networkMode: 'whitelisted',
|
|
58
|
+
allowedDomains: ['api.anthropic.com'],
|
|
59
|
+
readOnlyRootFs: true,
|
|
60
|
+
user: 'node',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
'qe-security-scanner': {
|
|
64
|
+
description: 'Multi-layer security analysis (SAST, DAST, dependencies)',
|
|
65
|
+
riskLevel: 'high',
|
|
66
|
+
requiresNetwork: true,
|
|
67
|
+
config: {
|
|
68
|
+
cpuLimit: 2,
|
|
69
|
+
memoryLimit: '4g',
|
|
70
|
+
memorySwapLimit: '4g',
|
|
71
|
+
diskLimit: '1g',
|
|
72
|
+
networkMode: 'whitelisted',
|
|
73
|
+
allowedDomains: [
|
|
74
|
+
'api.anthropic.com',
|
|
75
|
+
'nvd.nist.gov',
|
|
76
|
+
'cve.mitre.org',
|
|
77
|
+
'osv.dev',
|
|
78
|
+
'api.github.com',
|
|
79
|
+
],
|
|
80
|
+
readOnlyRootFs: true,
|
|
81
|
+
user: 'node',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
'qe-performance-tester': {
|
|
85
|
+
description: 'Load testing and performance profiling',
|
|
86
|
+
riskLevel: 'medium',
|
|
87
|
+
requiresNetwork: true,
|
|
88
|
+
config: {
|
|
89
|
+
cpuLimit: 4,
|
|
90
|
+
memoryLimit: '4g',
|
|
91
|
+
memorySwapLimit: '4g',
|
|
92
|
+
diskLimit: '1g',
|
|
93
|
+
networkMode: 'whitelisted',
|
|
94
|
+
allowedDomains: ['api.anthropic.com'],
|
|
95
|
+
readOnlyRootFs: true,
|
|
96
|
+
user: 'node',
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
'qe-flaky-test-hunter': {
|
|
100
|
+
description: 'Detects, analyzes, and stabilizes flaky tests',
|
|
101
|
+
riskLevel: 'low',
|
|
102
|
+
requiresNetwork: true,
|
|
103
|
+
config: {
|
|
104
|
+
cpuLimit: 2,
|
|
105
|
+
memoryLimit: '2g',
|
|
106
|
+
memorySwapLimit: '2g',
|
|
107
|
+
diskLimit: '512m',
|
|
108
|
+
networkMode: 'whitelisted',
|
|
109
|
+
allowedDomains: ['api.anthropic.com'],
|
|
110
|
+
readOnlyRootFs: true,
|
|
111
|
+
user: 'node',
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
'qe-api-contract-validator': {
|
|
115
|
+
description: 'Validates API contracts and detects breaking changes',
|
|
116
|
+
riskLevel: 'low',
|
|
117
|
+
requiresNetwork: true,
|
|
118
|
+
config: {
|
|
119
|
+
cpuLimit: 1,
|
|
120
|
+
memoryLimit: '1g',
|
|
121
|
+
memorySwapLimit: '1g',
|
|
122
|
+
diskLimit: '256m',
|
|
123
|
+
networkMode: 'whitelisted',
|
|
124
|
+
allowedDomains: ['api.anthropic.com'],
|
|
125
|
+
readOnlyRootFs: true,
|
|
126
|
+
user: 'node',
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
'qe-visual-tester': {
|
|
130
|
+
description: 'Visual regression testing with AI-powered comparison',
|
|
131
|
+
riskLevel: 'medium',
|
|
132
|
+
requiresNetwork: true,
|
|
133
|
+
config: {
|
|
134
|
+
cpuLimit: 2,
|
|
135
|
+
memoryLimit: '4g',
|
|
136
|
+
memorySwapLimit: '4g',
|
|
137
|
+
diskLimit: '2g',
|
|
138
|
+
networkMode: 'whitelisted',
|
|
139
|
+
allowedDomains: ['api.anthropic.com'],
|
|
140
|
+
readOnlyRootFs: true,
|
|
141
|
+
user: 'node',
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
'qe-code-intelligence': {
|
|
145
|
+
description: 'Knowledge graph-based code understanding',
|
|
146
|
+
riskLevel: 'low',
|
|
147
|
+
requiresNetwork: true,
|
|
148
|
+
config: {
|
|
149
|
+
cpuLimit: 2,
|
|
150
|
+
memoryLimit: '2g',
|
|
151
|
+
memorySwapLimit: '2g',
|
|
152
|
+
diskLimit: '1g',
|
|
153
|
+
networkMode: 'whitelisted',
|
|
154
|
+
allowedDomains: ['api.anthropic.com', 'localhost'],
|
|
155
|
+
readOnlyRootFs: true,
|
|
156
|
+
user: 'node',
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
'qe-quality-analyzer': {
|
|
160
|
+
description: 'Comprehensive quality metrics analysis',
|
|
161
|
+
riskLevel: 'low',
|
|
162
|
+
requiresNetwork: true,
|
|
163
|
+
config: {
|
|
164
|
+
cpuLimit: 1,
|
|
165
|
+
memoryLimit: '1g',
|
|
166
|
+
memorySwapLimit: '1g',
|
|
167
|
+
diskLimit: '256m',
|
|
168
|
+
networkMode: 'whitelisted',
|
|
169
|
+
allowedDomains: ['api.anthropic.com'],
|
|
170
|
+
readOnlyRootFs: true,
|
|
171
|
+
user: 'node',
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
'qe-a11y-ally': {
|
|
175
|
+
description: 'Accessibility testing and WCAG compliance',
|
|
176
|
+
riskLevel: 'low',
|
|
177
|
+
requiresNetwork: true,
|
|
178
|
+
config: {
|
|
179
|
+
cpuLimit: 1,
|
|
180
|
+
memoryLimit: '1g',
|
|
181
|
+
memorySwapLimit: '1g',
|
|
182
|
+
diskLimit: '256m',
|
|
183
|
+
networkMode: 'whitelisted',
|
|
184
|
+
allowedDomains: ['api.anthropic.com'],
|
|
185
|
+
readOnlyRootFs: true,
|
|
186
|
+
user: 'node',
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
'qe-chaos-engineer': {
|
|
190
|
+
description: 'Resilience testing with controlled fault injection',
|
|
191
|
+
riskLevel: 'high',
|
|
192
|
+
requiresNetwork: true,
|
|
193
|
+
config: {
|
|
194
|
+
cpuLimit: 2,
|
|
195
|
+
memoryLimit: '2g',
|
|
196
|
+
memorySwapLimit: '2g',
|
|
197
|
+
diskLimit: '512m',
|
|
198
|
+
networkMode: 'whitelisted',
|
|
199
|
+
allowedDomains: ['api.anthropic.com'],
|
|
200
|
+
readOnlyRootFs: true,
|
|
201
|
+
user: 'node',
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
'qe-deployment-readiness': {
|
|
205
|
+
description: 'Deployment risk assessment and quality gates',
|
|
206
|
+
riskLevel: 'low',
|
|
207
|
+
requiresNetwork: true,
|
|
208
|
+
config: {
|
|
209
|
+
cpuLimit: 1,
|
|
210
|
+
memoryLimit: '1g',
|
|
211
|
+
memorySwapLimit: '1g',
|
|
212
|
+
diskLimit: '256m',
|
|
213
|
+
networkMode: 'whitelisted',
|
|
214
|
+
allowedDomains: ['api.anthropic.com'],
|
|
215
|
+
readOnlyRootFs: true,
|
|
216
|
+
user: 'node',
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
'qe-production-intelligence': {
|
|
220
|
+
description: 'Converts production data into test scenarios',
|
|
221
|
+
riskLevel: 'medium',
|
|
222
|
+
requiresNetwork: true,
|
|
223
|
+
config: {
|
|
224
|
+
cpuLimit: 2,
|
|
225
|
+
memoryLimit: '2g',
|
|
226
|
+
memorySwapLimit: '2g',
|
|
227
|
+
diskLimit: '512m',
|
|
228
|
+
networkMode: 'whitelisted',
|
|
229
|
+
allowedDomains: ['api.anthropic.com'],
|
|
230
|
+
readOnlyRootFs: true,
|
|
231
|
+
user: 'node',
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
'qx-partner': {
|
|
235
|
+
description: 'Quality Experience analysis combining QA and UX perspectives',
|
|
236
|
+
riskLevel: 'low',
|
|
237
|
+
requiresNetwork: true,
|
|
238
|
+
config: {
|
|
239
|
+
cpuLimit: 1,
|
|
240
|
+
memoryLimit: '1g',
|
|
241
|
+
memorySwapLimit: '1g',
|
|
242
|
+
diskLimit: '256m',
|
|
243
|
+
networkMode: 'whitelisted',
|
|
244
|
+
allowedDomains: ['api.anthropic.com'],
|
|
245
|
+
readOnlyRootFs: true,
|
|
246
|
+
user: 'node',
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
// ============================================
|
|
250
|
+
// TDD Subagents
|
|
251
|
+
// ============================================
|
|
252
|
+
'qe-test-writer': {
|
|
253
|
+
description: 'TDD RED phase - writes failing tests',
|
|
254
|
+
riskLevel: 'low',
|
|
255
|
+
requiresNetwork: true,
|
|
256
|
+
config: {
|
|
257
|
+
cpuLimit: 1,
|
|
258
|
+
memoryLimit: '1g',
|
|
259
|
+
memorySwapLimit: '1g',
|
|
260
|
+
diskLimit: '256m',
|
|
261
|
+
networkMode: 'whitelisted',
|
|
262
|
+
allowedDomains: ['api.anthropic.com'],
|
|
263
|
+
readOnlyRootFs: true,
|
|
264
|
+
user: 'node',
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
'qe-test-implementer': {
|
|
268
|
+
description: 'TDD GREEN phase - implements minimal code',
|
|
269
|
+
riskLevel: 'low',
|
|
270
|
+
requiresNetwork: true,
|
|
271
|
+
config: {
|
|
272
|
+
cpuLimit: 1,
|
|
273
|
+
memoryLimit: '1g',
|
|
274
|
+
memorySwapLimit: '1g',
|
|
275
|
+
diskLimit: '256m',
|
|
276
|
+
networkMode: 'whitelisted',
|
|
277
|
+
allowedDomains: ['api.anthropic.com'],
|
|
278
|
+
readOnlyRootFs: true,
|
|
279
|
+
user: 'node',
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
'qe-test-refactorer': {
|
|
283
|
+
description: 'TDD REFACTOR phase - improves code quality',
|
|
284
|
+
riskLevel: 'low',
|
|
285
|
+
requiresNetwork: true,
|
|
286
|
+
config: {
|
|
287
|
+
cpuLimit: 1,
|
|
288
|
+
memoryLimit: '1g',
|
|
289
|
+
memorySwapLimit: '1g',
|
|
290
|
+
diskLimit: '256m',
|
|
291
|
+
networkMode: 'whitelisted',
|
|
292
|
+
allowedDomains: ['api.anthropic.com'],
|
|
293
|
+
readOnlyRootFs: true,
|
|
294
|
+
user: 'node',
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
'qe-code-reviewer': {
|
|
298
|
+
description: 'Enforces quality standards, linting, and security',
|
|
299
|
+
riskLevel: 'low',
|
|
300
|
+
requiresNetwork: true,
|
|
301
|
+
config: {
|
|
302
|
+
cpuLimit: 1,
|
|
303
|
+
memoryLimit: '1g',
|
|
304
|
+
memorySwapLimit: '1g',
|
|
305
|
+
diskLimit: '256m',
|
|
306
|
+
networkMode: 'whitelisted',
|
|
307
|
+
allowedDomains: ['api.anthropic.com'],
|
|
308
|
+
readOnlyRootFs: true,
|
|
309
|
+
user: 'node',
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
'qe-integration-tester': {
|
|
313
|
+
description: 'Validates component interactions',
|
|
314
|
+
riskLevel: 'medium',
|
|
315
|
+
requiresNetwork: true,
|
|
316
|
+
config: {
|
|
317
|
+
cpuLimit: 2,
|
|
318
|
+
memoryLimit: '2g',
|
|
319
|
+
memorySwapLimit: '2g',
|
|
320
|
+
diskLimit: '512m',
|
|
321
|
+
networkMode: 'whitelisted',
|
|
322
|
+
allowedDomains: ['api.anthropic.com'],
|
|
323
|
+
readOnlyRootFs: true,
|
|
324
|
+
user: 'node',
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
// ============================================
|
|
328
|
+
// n8n Workflow Testing Agents
|
|
329
|
+
// ============================================
|
|
330
|
+
'n8n-workflow-executor': {
|
|
331
|
+
description: 'Execute and validate n8n workflows',
|
|
332
|
+
riskLevel: 'medium',
|
|
333
|
+
requiresNetwork: true,
|
|
334
|
+
config: {
|
|
335
|
+
cpuLimit: 2,
|
|
336
|
+
memoryLimit: '2g',
|
|
337
|
+
memorySwapLimit: '2g',
|
|
338
|
+
diskLimit: '512m',
|
|
339
|
+
networkMode: 'whitelisted',
|
|
340
|
+
allowedDomains: ['api.anthropic.com', 'localhost'],
|
|
341
|
+
readOnlyRootFs: true,
|
|
342
|
+
user: 'node',
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
'n8n-security-auditor': {
|
|
346
|
+
description: 'Security vulnerability scanning for n8n workflows',
|
|
347
|
+
riskLevel: 'high',
|
|
348
|
+
requiresNetwork: true,
|
|
349
|
+
config: {
|
|
350
|
+
cpuLimit: 2,
|
|
351
|
+
memoryLimit: '2g',
|
|
352
|
+
memorySwapLimit: '2g',
|
|
353
|
+
diskLimit: '512m',
|
|
354
|
+
networkMode: 'whitelisted',
|
|
355
|
+
allowedDomains: ['api.anthropic.com'],
|
|
356
|
+
readOnlyRootFs: true,
|
|
357
|
+
user: 'node',
|
|
358
|
+
},
|
|
359
|
+
},
|
|
360
|
+
'n8n-chaos-tester': {
|
|
361
|
+
description: 'Chaos engineering for n8n workflows',
|
|
362
|
+
riskLevel: 'high',
|
|
363
|
+
requiresNetwork: true,
|
|
364
|
+
config: {
|
|
365
|
+
cpuLimit: 2,
|
|
366
|
+
memoryLimit: '2g',
|
|
367
|
+
memorySwapLimit: '2g',
|
|
368
|
+
diskLimit: '512m',
|
|
369
|
+
networkMode: 'whitelisted',
|
|
370
|
+
allowedDomains: ['api.anthropic.com'],
|
|
371
|
+
readOnlyRootFs: true,
|
|
372
|
+
user: 'node',
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
// ============================================
|
|
376
|
+
// Default Profile
|
|
377
|
+
// ============================================
|
|
378
|
+
default: {
|
|
379
|
+
description: 'Default profile for unknown agent types',
|
|
380
|
+
riskLevel: 'low',
|
|
381
|
+
requiresNetwork: true,
|
|
382
|
+
config: {
|
|
383
|
+
cpuLimit: 1,
|
|
384
|
+
memoryLimit: '512m',
|
|
385
|
+
memorySwapLimit: '512m',
|
|
386
|
+
diskLimit: '128m',
|
|
387
|
+
networkMode: 'isolated',
|
|
388
|
+
readOnlyRootFs: true,
|
|
389
|
+
user: 'node',
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
};
|
|
393
|
+
/**
|
|
394
|
+
* Get profile for an agent type
|
|
395
|
+
* Falls back to default if not found
|
|
396
|
+
*/
|
|
397
|
+
function getAgentProfile(agentType) {
|
|
398
|
+
return exports.AGENT_PROFILES[agentType] || exports.AGENT_PROFILES['default'];
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Get sandbox config for an agent type
|
|
402
|
+
*/
|
|
403
|
+
function getAgentSandboxConfig(agentType) {
|
|
404
|
+
return getAgentProfile(agentType).config;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* List all available agent profiles
|
|
408
|
+
*/
|
|
409
|
+
function listAgentProfiles() {
|
|
410
|
+
return Object.keys(exports.AGENT_PROFILES).filter((k) => k !== 'default');
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Validate that a custom config doesn't exceed profile limits
|
|
414
|
+
*/
|
|
415
|
+
function validateConfigAgainstProfile(agentType, config) {
|
|
416
|
+
const profile = getAgentProfile(agentType);
|
|
417
|
+
const violations = [];
|
|
418
|
+
if (config.cpuLimit && config.cpuLimit > profile.config.cpuLimit) {
|
|
419
|
+
violations.push(`CPU limit ${config.cpuLimit} exceeds profile maximum ${profile.config.cpuLimit}`);
|
|
420
|
+
}
|
|
421
|
+
// Note: Memory comparison would need parsing - simplified here
|
|
422
|
+
if (config.networkMode === 'host' && profile.config.networkMode !== 'host') {
|
|
423
|
+
violations.push('Host network mode not allowed for this agent type');
|
|
424
|
+
}
|
|
425
|
+
if (config.readOnlyRootFs === false && profile.config.readOnlyRootFs) {
|
|
426
|
+
violations.push('Read-only root filesystem is required for this agent type');
|
|
427
|
+
}
|
|
428
|
+
return {
|
|
429
|
+
valid: violations.length === 0,
|
|
430
|
+
violations,
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
//# sourceMappingURL=agent-profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-profiles.js","sourceRoot":"","sources":["../../../../src/infrastructure/sandbox/profiles/agent-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for Docker-Based Agent Sandboxing
|
|
3
|
+
*
|
|
4
|
+
* Provides type definitions for secure container-based agent execution
|
|
5
|
+
* with resource limits enforced by cgroups.
|
|
6
|
+
*
|
|
7
|
+
* @module infrastructure/sandbox/types
|
|
8
|
+
* @see Issue #146 - Security Hardening: Docker Sandboxing
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Network isolation mode for sandboxed agents
|
|
12
|
+
*/
|
|
13
|
+
export type NetworkMode = 'isolated' | 'whitelisted' | 'host';
|
|
14
|
+
/**
|
|
15
|
+
* Container status states
|
|
16
|
+
*/
|
|
17
|
+
export type ContainerStatus = 'creating' | 'running' | 'stopped' | 'error' | 'removing';
|
|
18
|
+
/**
|
|
19
|
+
* Sandbox configuration for agent containers
|
|
20
|
+
*/
|
|
21
|
+
export interface SandboxConfig {
|
|
22
|
+
/** CPU cores limit (e.g., 2) */
|
|
23
|
+
cpuLimit: number;
|
|
24
|
+
/** Memory limit (e.g., "2g", "512m") */
|
|
25
|
+
memoryLimit: string;
|
|
26
|
+
/** Memory + swap limit (e.g., "2g") */
|
|
27
|
+
memorySwapLimit: string;
|
|
28
|
+
/** Disk quota (e.g., "512m") */
|
|
29
|
+
diskLimit: string;
|
|
30
|
+
/** Network isolation mode */
|
|
31
|
+
networkMode: NetworkMode;
|
|
32
|
+
/** Allowed domains when networkMode is 'whitelisted' */
|
|
33
|
+
allowedDomains?: string[];
|
|
34
|
+
/** Mount root filesystem as read-only */
|
|
35
|
+
readOnlyRootFs: boolean;
|
|
36
|
+
/** User to run container as (non-root) */
|
|
37
|
+
user: string;
|
|
38
|
+
/** Seccomp security profile path */
|
|
39
|
+
seccompProfile?: string;
|
|
40
|
+
/** Additional environment variables */
|
|
41
|
+
environment?: Record<string, string>;
|
|
42
|
+
/** Working directory inside container */
|
|
43
|
+
workingDir?: string;
|
|
44
|
+
/** Volumes to mount */
|
|
45
|
+
volumes?: VolumeMount[];
|
|
46
|
+
/** Container labels */
|
|
47
|
+
labels?: Record<string, string>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Volume mount configuration
|
|
51
|
+
*/
|
|
52
|
+
export interface VolumeMount {
|
|
53
|
+
/** Host path or volume name */
|
|
54
|
+
source: string;
|
|
55
|
+
/** Container path */
|
|
56
|
+
target: string;
|
|
57
|
+
/** Mount as read-only */
|
|
58
|
+
readOnly?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Container information and state
|
|
62
|
+
*/
|
|
63
|
+
export interface ContainerInfo {
|
|
64
|
+
/** Docker container ID */
|
|
65
|
+
containerId: string;
|
|
66
|
+
/** Agent ID this container belongs to */
|
|
67
|
+
agentId: string;
|
|
68
|
+
/** Agent type (e.g., 'qe-test-generator') */
|
|
69
|
+
agentType: string;
|
|
70
|
+
/** Current container status */
|
|
71
|
+
status: ContainerStatus;
|
|
72
|
+
/** Container creation timestamp */
|
|
73
|
+
createdAt: Date;
|
|
74
|
+
/** Container start timestamp */
|
|
75
|
+
startedAt?: Date;
|
|
76
|
+
/** Container stop timestamp */
|
|
77
|
+
stoppedAt?: Date;
|
|
78
|
+
/** Current resource usage */
|
|
79
|
+
resourceUsage?: ResourceStats;
|
|
80
|
+
/** Exit code if container stopped */
|
|
81
|
+
exitCode?: number;
|
|
82
|
+
/** Error message if status is 'error' */
|
|
83
|
+
error?: string;
|
|
84
|
+
/** Container labels */
|
|
85
|
+
labels?: Record<string, string>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Resource usage statistics for a container
|
|
89
|
+
*/
|
|
90
|
+
export interface ResourceStats {
|
|
91
|
+
/** CPU usage percentage (0-100 per core) */
|
|
92
|
+
cpuPercent: number;
|
|
93
|
+
/** Current memory usage in MB */
|
|
94
|
+
memoryUsageMB: number;
|
|
95
|
+
/** Memory limit in MB */
|
|
96
|
+
memoryLimitMB: number;
|
|
97
|
+
/** Memory usage percentage */
|
|
98
|
+
memoryPercent: number;
|
|
99
|
+
/** Disk usage in MB */
|
|
100
|
+
diskUsageMB: number;
|
|
101
|
+
/** Network bytes received */
|
|
102
|
+
networkRxBytes: number;
|
|
103
|
+
/** Network bytes transmitted */
|
|
104
|
+
networkTxBytes: number;
|
|
105
|
+
/** Number of PIDs in container */
|
|
106
|
+
pidsCount: number;
|
|
107
|
+
/** Timestamp of stats collection */
|
|
108
|
+
timestamp: Date;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Sandbox manager configuration
|
|
112
|
+
*/
|
|
113
|
+
export interface SandboxManagerConfig {
|
|
114
|
+
/** Docker socket path (default: /var/run/docker.sock) */
|
|
115
|
+
dockerSocketPath?: string;
|
|
116
|
+
/** Docker host URL (alternative to socket) */
|
|
117
|
+
dockerHost?: string;
|
|
118
|
+
/** Docker API version */
|
|
119
|
+
dockerVersion?: string;
|
|
120
|
+
/** Base image for agent containers */
|
|
121
|
+
agentImage: string;
|
|
122
|
+
/** Image tag */
|
|
123
|
+
imageTag?: string;
|
|
124
|
+
/** Network name for sandboxed containers */
|
|
125
|
+
networkName?: string;
|
|
126
|
+
/** Enable container logging */
|
|
127
|
+
enableLogging?: boolean;
|
|
128
|
+
/** Log driver (json-file, syslog, none) */
|
|
129
|
+
logDriver?: string;
|
|
130
|
+
/** Maximum log size per container */
|
|
131
|
+
logMaxSize?: string;
|
|
132
|
+
/** Maximum number of log files */
|
|
133
|
+
logMaxFiles?: number;
|
|
134
|
+
/** Default sandbox config for unknown agent types */
|
|
135
|
+
defaultConfig?: Partial<SandboxConfig>;
|
|
136
|
+
/** Cleanup containers on manager shutdown */
|
|
137
|
+
cleanupOnShutdown?: boolean;
|
|
138
|
+
/** Health check interval in ms */
|
|
139
|
+
healthCheckIntervalMs?: number;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Result of sandbox creation
|
|
143
|
+
*/
|
|
144
|
+
export interface SandboxCreateResult {
|
|
145
|
+
/** Whether creation succeeded */
|
|
146
|
+
success: boolean;
|
|
147
|
+
/** Container info if successful */
|
|
148
|
+
container?: ContainerInfo;
|
|
149
|
+
/** Error message if failed */
|
|
150
|
+
error?: string;
|
|
151
|
+
/** Warnings during creation */
|
|
152
|
+
warnings?: string[];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Result of sandbox destruction
|
|
156
|
+
*/
|
|
157
|
+
export interface SandboxDestroyResult {
|
|
158
|
+
/** Whether destruction succeeded */
|
|
159
|
+
success: boolean;
|
|
160
|
+
/** Container ID that was destroyed */
|
|
161
|
+
containerId: string;
|
|
162
|
+
/** Error message if failed */
|
|
163
|
+
error?: string;
|
|
164
|
+
/** Whether container was force-killed */
|
|
165
|
+
forced?: boolean;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Health check result
|
|
169
|
+
*/
|
|
170
|
+
export interface HealthCheckResult {
|
|
171
|
+
/** Whether container is healthy */
|
|
172
|
+
healthy: boolean;
|
|
173
|
+
/** Container ID */
|
|
174
|
+
containerId: string;
|
|
175
|
+
/** Health status message */
|
|
176
|
+
status: string;
|
|
177
|
+
/** Response time in ms */
|
|
178
|
+
responseTimeMs?: number;
|
|
179
|
+
/** Last check timestamp */
|
|
180
|
+
checkedAt: Date;
|
|
181
|
+
/** Consecutive failures count */
|
|
182
|
+
failureCount?: number;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Sandbox event types for monitoring
|
|
186
|
+
*/
|
|
187
|
+
export type SandboxEventType = 'created' | 'started' | 'stopped' | 'destroyed' | 'error' | 'oom_killed' | 'health_check_failed' | 'resource_limit_exceeded';
|
|
188
|
+
/**
|
|
189
|
+
* Sandbox event for monitoring and logging
|
|
190
|
+
*/
|
|
191
|
+
export interface SandboxEvent {
|
|
192
|
+
/** Event type */
|
|
193
|
+
type: SandboxEventType;
|
|
194
|
+
/** Container ID */
|
|
195
|
+
containerId: string;
|
|
196
|
+
/** Agent ID */
|
|
197
|
+
agentId: string;
|
|
198
|
+
/** Agent type */
|
|
199
|
+
agentType: string;
|
|
200
|
+
/** Event timestamp */
|
|
201
|
+
timestamp: Date;
|
|
202
|
+
/** Event details */
|
|
203
|
+
details?: Record<string, unknown>;
|
|
204
|
+
/** Error if applicable */
|
|
205
|
+
error?: string;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Sandbox event handler
|
|
209
|
+
*/
|
|
210
|
+
export type SandboxEventHandler = (event: SandboxEvent) => void | Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* Parse memory string to bytes
|
|
213
|
+
* @param memStr Memory string (e.g., "512m", "2g")
|
|
214
|
+
* @returns Memory in bytes
|
|
215
|
+
*/
|
|
216
|
+
export declare function parseMemoryString(memStr: string): number;
|
|
217
|
+
/**
|
|
218
|
+
* Format bytes to human-readable string
|
|
219
|
+
* @param bytes Number of bytes
|
|
220
|
+
* @returns Formatted string (e.g., "512 MB")
|
|
221
|
+
*/
|
|
222
|
+
export declare function formatBytes(bytes: number): string;
|
|
223
|
+
/**
|
|
224
|
+
* Default sandbox configuration
|
|
225
|
+
*/
|
|
226
|
+
export declare const DEFAULT_SANDBOX_CONFIG: SandboxConfig;
|
|
227
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/sandbox/types.ts"],"names":[],"mappings":"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"}
|