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,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Isolated Runtime Manager - Isolated VM v5 Implementation
|
|
3
|
+
* Provides ultra-secure isolated execution environment with zero-trust architecture
|
|
4
|
+
*/
|
|
5
|
+
import * as ivm from "isolated-vm";
|
|
6
|
+
import { RuntimeConfig, SecurityProfile } from "../config";
|
|
7
|
+
import { EventEmitter } from "events";
|
|
8
|
+
export interface RuntimeContext {
|
|
9
|
+
isolate: ivm.Isolate;
|
|
10
|
+
context: ivm.Context;
|
|
11
|
+
jail: ivm.Reference;
|
|
12
|
+
executionCount: number;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
lastUsedAt: Date;
|
|
15
|
+
memoryUsage: number;
|
|
16
|
+
securityProfile: SecurityProfile;
|
|
17
|
+
}
|
|
18
|
+
export interface ExecutionResult<T = any> {
|
|
19
|
+
success: boolean;
|
|
20
|
+
result?: T;
|
|
21
|
+
error?: Error;
|
|
22
|
+
executionTime: number;
|
|
23
|
+
memoryUsed: number;
|
|
24
|
+
auditHash?: string;
|
|
25
|
+
timestamp: Date;
|
|
26
|
+
securityScore?: number;
|
|
27
|
+
warnings?: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface ExecutionOptions {
|
|
30
|
+
code: string;
|
|
31
|
+
context?: Record<string, any>;
|
|
32
|
+
securityProfile?: string;
|
|
33
|
+
timeout?: number;
|
|
34
|
+
memoryLimit?: number;
|
|
35
|
+
tenantId?: string;
|
|
36
|
+
auditData?: any;
|
|
37
|
+
scanForSecurity?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare class IsolatedRuntimeError extends Error {
|
|
40
|
+
readonly code: string;
|
|
41
|
+
readonly context?: any | undefined;
|
|
42
|
+
constructor(message: string, code: string, context?: any | undefined);
|
|
43
|
+
}
|
|
44
|
+
export declare class IsolatedRuntimeManager extends EventEmitter {
|
|
45
|
+
private config;
|
|
46
|
+
private isolates;
|
|
47
|
+
private pool;
|
|
48
|
+
private activeExecutions;
|
|
49
|
+
private metrics;
|
|
50
|
+
private readonly maxPoolSize;
|
|
51
|
+
private readonly minPoolSize;
|
|
52
|
+
private readonly cleanupInterval;
|
|
53
|
+
constructor(config?: RuntimeConfig);
|
|
54
|
+
/**
|
|
55
|
+
* Initialize the isolate pool with minimum required isolates
|
|
56
|
+
*/
|
|
57
|
+
private initializePool;
|
|
58
|
+
/**
|
|
59
|
+
* Create a new isolated context with specified security profile
|
|
60
|
+
*/
|
|
61
|
+
private createIsolate;
|
|
62
|
+
/**
|
|
63
|
+
* Execute code in isolated environment
|
|
64
|
+
*/
|
|
65
|
+
execute<T = any>(options: ExecutionOptions): Promise<ExecutionResult<T>>;
|
|
66
|
+
/**
|
|
67
|
+
* Execute code in specific isolate context
|
|
68
|
+
*/
|
|
69
|
+
private executeInIsolate;
|
|
70
|
+
/**
|
|
71
|
+
* Get or create isolate for execution
|
|
72
|
+
*/
|
|
73
|
+
private getOrCreateIsolate;
|
|
74
|
+
/**
|
|
75
|
+
* Validate execution options
|
|
76
|
+
*/
|
|
77
|
+
private validateExecutionOptions;
|
|
78
|
+
/**
|
|
79
|
+
* Calculate memory usage for isolate
|
|
80
|
+
*/
|
|
81
|
+
private getMemoryUsage;
|
|
82
|
+
/**
|
|
83
|
+
* Update metrics tracking
|
|
84
|
+
*/
|
|
85
|
+
private updateMetrics;
|
|
86
|
+
/**
|
|
87
|
+
* Generate unique execution ID
|
|
88
|
+
*/
|
|
89
|
+
private generateExecutionId;
|
|
90
|
+
/**
|
|
91
|
+
* Generate audit hash for execution
|
|
92
|
+
*/
|
|
93
|
+
private generateAuditHash;
|
|
94
|
+
/**
|
|
95
|
+
* Cleanup idle isolates
|
|
96
|
+
*/
|
|
97
|
+
private cleanupPool;
|
|
98
|
+
/**
|
|
99
|
+
* Get current metrics
|
|
100
|
+
*/
|
|
101
|
+
getMetrics(): Record<string, number[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Get pool statistics
|
|
104
|
+
*/
|
|
105
|
+
getPoolStats(): {
|
|
106
|
+
totalIsolates: number;
|
|
107
|
+
poolSize: number;
|
|
108
|
+
activeExecutions: number;
|
|
109
|
+
minPoolSize: number;
|
|
110
|
+
maxPoolSize: number;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Dispose of all isolates and cleanup resources
|
|
114
|
+
*/
|
|
115
|
+
dispose(): Promise<void>;
|
|
116
|
+
}
|
|
117
|
+
export declare const runtimeManager: IsolatedRuntimeManager;
|
|
118
|
+
export default IsolatedRuntimeManager;
|
|
119
|
+
//# sourceMappingURL=isolatedRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolatedRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/isolatedRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runtimeManager = exports.IsolatedRuntimeManager = exports.IsolatedRuntimeError = void 0;
|
|
37
|
+
/**
|
|
38
|
+
* Isolated Runtime Manager - Isolated VM v5 Implementation
|
|
39
|
+
* Provides ultra-secure isolated execution environment with zero-trust architecture
|
|
40
|
+
*/
|
|
41
|
+
const ivm = __importStar(require("isolated-vm"));
|
|
42
|
+
const config_1 = require("../config");
|
|
43
|
+
const events_1 = require("events");
|
|
44
|
+
const scanner_1 = require("../security/scanner");
|
|
45
|
+
class IsolatedRuntimeError extends Error {
|
|
46
|
+
constructor(message, code, context) {
|
|
47
|
+
super(message);
|
|
48
|
+
this.code = code;
|
|
49
|
+
this.context = context;
|
|
50
|
+
this.name = "IsolatedRuntimeError";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.IsolatedRuntimeError = IsolatedRuntimeError;
|
|
54
|
+
class IsolatedRuntimeManager extends events_1.EventEmitter {
|
|
55
|
+
constructor(config = config_1.runtimeConfig) {
|
|
56
|
+
super();
|
|
57
|
+
this.config = config;
|
|
58
|
+
this.isolates = new Map();
|
|
59
|
+
this.pool = [];
|
|
60
|
+
this.activeExecutions = new Map();
|
|
61
|
+
this.metrics = new Map();
|
|
62
|
+
this.maxPoolSize = config.maxPoolSize;
|
|
63
|
+
this.minPoolSize = config.minPoolSize;
|
|
64
|
+
// Initialize pool with minimum isolates
|
|
65
|
+
this.initializePool();
|
|
66
|
+
// Setup periodic cleanup
|
|
67
|
+
this.cleanupInterval = setInterval(() => this.cleanupPool(), config.metricsInterval);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Initialize the isolate pool with minimum required isolates
|
|
71
|
+
*/
|
|
72
|
+
async initializePool() {
|
|
73
|
+
const profiles = Object.keys(config_1.securityProfiles);
|
|
74
|
+
for (let i = 0; i < this.minPoolSize; i++) {
|
|
75
|
+
const profileName = profiles[i % profiles.length];
|
|
76
|
+
const securityProfile = config_1.securityProfiles[profileName];
|
|
77
|
+
try {
|
|
78
|
+
const runtimeContext = await this.createIsolate(securityProfile);
|
|
79
|
+
this.pool.push(runtimeContext);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
this.emit("error", new IsolatedRuntimeError(`Failed to create isolate for profile ${profileName}`, "POOL_INIT_ERROR", { error, profileName }));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
this.emit("pool-initialized", {
|
|
86
|
+
poolSize: this.pool.length,
|
|
87
|
+
profiles: profiles,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a new isolated context with specified security profile
|
|
92
|
+
*/
|
|
93
|
+
async createIsolate(securityProfile) {
|
|
94
|
+
const startTime = Date.now();
|
|
95
|
+
try {
|
|
96
|
+
// Create isolate with memory limit
|
|
97
|
+
const isolate = new ivm.Isolate({
|
|
98
|
+
memoryLimit: securityProfile.memoryLimit,
|
|
99
|
+
});
|
|
100
|
+
// Create context with security restrictions
|
|
101
|
+
const context = await isolate.createContext();
|
|
102
|
+
// Setup jail environment
|
|
103
|
+
const jail = context.global;
|
|
104
|
+
// Remove access to dangerous functions
|
|
105
|
+
await jail.set("global", jail.derefInto());
|
|
106
|
+
await jail.set("_globalThis", jail.derefInto());
|
|
107
|
+
await jail.set("require", new ivm.Reference(undefined));
|
|
108
|
+
await jail.set("eval", new ivm.Reference(undefined));
|
|
109
|
+
await jail.set("Function", new ivm.Reference(undefined));
|
|
110
|
+
await jail.set("process", new ivm.Reference(undefined));
|
|
111
|
+
// Add safe globals
|
|
112
|
+
await jail.set("console", {
|
|
113
|
+
log: (message) => this.emit("log", { message, level: "info" }),
|
|
114
|
+
error: (message) => this.emit("log", { message, level: "error" }),
|
|
115
|
+
warn: (message) => this.emit("log", { message, level: "warn" }),
|
|
116
|
+
info: (message) => this.emit("log", { message, level: "info" }),
|
|
117
|
+
});
|
|
118
|
+
// Add limited utility functions
|
|
119
|
+
await jail.set("setTimeout", undefined); // Disable timers
|
|
120
|
+
await jail.set("setInterval", undefined);
|
|
121
|
+
await jail.set("clearTimeout", undefined);
|
|
122
|
+
await jail.set("clearInterval", undefined);
|
|
123
|
+
// Add allowed modules if any
|
|
124
|
+
if (securityProfile.allowedModules.length > 0) {
|
|
125
|
+
const allowedModules = {};
|
|
126
|
+
for (const moduleName of securityProfile.allowedModules) {
|
|
127
|
+
try {
|
|
128
|
+
// Only allow specific safe modules
|
|
129
|
+
if (["lodash", "moment", "uuid"].includes(moduleName)) {
|
|
130
|
+
allowedModules[moduleName] = require(moduleName);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
// Module not available, continue
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
await jail.set("modules", allowedModules);
|
|
138
|
+
}
|
|
139
|
+
const creationTime = Date.now() - startTime;
|
|
140
|
+
return {
|
|
141
|
+
isolate,
|
|
142
|
+
context,
|
|
143
|
+
jail,
|
|
144
|
+
executionCount: 0,
|
|
145
|
+
createdAt: new Date(),
|
|
146
|
+
lastUsedAt: new Date(),
|
|
147
|
+
memoryUsage: 0,
|
|
148
|
+
securityProfile,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
throw new IsolatedRuntimeError("Failed to create isolated context", "ISOLATE_CREATION_ERROR", { error, securityProfile, creationTime: Date.now() - startTime });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Execute code in isolated environment
|
|
157
|
+
*/
|
|
158
|
+
async execute(options) {
|
|
159
|
+
const startTime = Date.now();
|
|
160
|
+
const executionId = this.generateExecutionId();
|
|
161
|
+
try {
|
|
162
|
+
// Validate input
|
|
163
|
+
this.validateExecutionOptions(options);
|
|
164
|
+
// Security scan if enabled
|
|
165
|
+
if (options.scanForSecurity !== false) {
|
|
166
|
+
const securityScanner = new scanner_1.SecurityScanner();
|
|
167
|
+
// Scan the code for security issues
|
|
168
|
+
const scanResult = await securityScanner.scan({
|
|
169
|
+
code: options.code,
|
|
170
|
+
executionId: executionId,
|
|
171
|
+
});
|
|
172
|
+
if (!scanResult.secure) {
|
|
173
|
+
throw new IsolatedRuntimeError(`Security scan failed: ${scanResult.warnings.join(", ")}`, "SECURITY_SCAN_FAILED", { scanResult });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Get security profile
|
|
177
|
+
const securityProfile = config_1.securityProfiles[options.securityProfile || this.config.defaultSecurityProfile];
|
|
178
|
+
// Get or create isolate
|
|
179
|
+
const runtimeContext = await this.getOrCreateIsolate(securityProfile);
|
|
180
|
+
// Execute in isolate
|
|
181
|
+
const result = await this.executeInIsolate(runtimeContext, options, executionId);
|
|
182
|
+
// Update metrics
|
|
183
|
+
const executionTime = Date.now() - startTime;
|
|
184
|
+
this.updateMetrics("executionTime", executionTime);
|
|
185
|
+
this.updateMetrics("successRate", result.success ? 1 : 0);
|
|
186
|
+
result.executionTime = executionTime;
|
|
187
|
+
// Generate audit hash if audit enabled
|
|
188
|
+
if (this.config.auditEnabled) {
|
|
189
|
+
result.auditHash = this.generateAuditHash(options, result);
|
|
190
|
+
}
|
|
191
|
+
this.emit("execution-complete", { executionId, result, executionTime });
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
const executionTime = Date.now() - startTime;
|
|
196
|
+
const result = {
|
|
197
|
+
success: false,
|
|
198
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
199
|
+
executionTime,
|
|
200
|
+
memoryUsed: 0,
|
|
201
|
+
timestamp: new Date(),
|
|
202
|
+
};
|
|
203
|
+
this.updateMetrics("executionTime", executionTime);
|
|
204
|
+
this.updateMetrics("successRate", 0);
|
|
205
|
+
this.emit("execution-error", { executionId, error, executionTime });
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Execute code in specific isolate context
|
|
211
|
+
*/
|
|
212
|
+
async executeInIsolate(runtimeContext, options, executionId) {
|
|
213
|
+
const { isolate, context, jail } = runtimeContext;
|
|
214
|
+
const startTime = Date.now();
|
|
215
|
+
// Update usage stats
|
|
216
|
+
runtimeContext.executionCount++;
|
|
217
|
+
runtimeContext.lastUsedAt = new Date();
|
|
218
|
+
try {
|
|
219
|
+
// Create script with timeout and memory limit
|
|
220
|
+
const script = await isolate.compileScript(options.code, {
|
|
221
|
+
filename: `beddel-runtime-${executionId}.js`,
|
|
222
|
+
produceCachedData: false, // Security: disable code caching
|
|
223
|
+
});
|
|
224
|
+
// Setup execution context
|
|
225
|
+
const executionContext = new ivm.Reference({
|
|
226
|
+
...(options.context || {}),
|
|
227
|
+
executionId,
|
|
228
|
+
timestamp: new Date().toISOString(),
|
|
229
|
+
});
|
|
230
|
+
// Execute script
|
|
231
|
+
const result = await script.run(context, {
|
|
232
|
+
timeout: options.timeout || runtimeContext.securityProfile.timeout,
|
|
233
|
+
release: true, // Release memory after execution
|
|
234
|
+
});
|
|
235
|
+
// Get memory usage
|
|
236
|
+
const memoryUsed = this.getMemoryUsage(runtimeContext);
|
|
237
|
+
const executionTime = Date.now() - startTime;
|
|
238
|
+
return {
|
|
239
|
+
success: true,
|
|
240
|
+
result: result,
|
|
241
|
+
executionTime,
|
|
242
|
+
memoryUsed,
|
|
243
|
+
timestamp: new Date(),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
const executionTime = Date.now() - startTime;
|
|
248
|
+
return {
|
|
249
|
+
success: false,
|
|
250
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
251
|
+
executionTime,
|
|
252
|
+
memoryUsed: this.getMemoryUsage(runtimeContext),
|
|
253
|
+
timestamp: new Date(),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get or create isolate for execution
|
|
259
|
+
*/
|
|
260
|
+
async getOrCreateIsolate(securityProfile) {
|
|
261
|
+
// Check pool for available isolate
|
|
262
|
+
const availableIsolate = this.pool.find((ctx) => ctx.securityProfile.name === securityProfile.name);
|
|
263
|
+
if (availableIsolate) {
|
|
264
|
+
// Remove from pool and return
|
|
265
|
+
this.pool = this.pool.filter((ctx) => ctx !== availableIsolate);
|
|
266
|
+
return availableIsolate;
|
|
267
|
+
}
|
|
268
|
+
// Check if we can create new isolate
|
|
269
|
+
const totalIsolates = this.isolates.size + this.pool.length;
|
|
270
|
+
if (totalIsolates >= this.maxPoolSize) {
|
|
271
|
+
throw new IsolatedRuntimeError(`Maximum isolate pool size reached (${this.maxPoolSize})`, "POOL_LIMIT_EXCEEDED", { currentPoolSize: totalIsolates, maxPoolSize: this.maxPoolSize });
|
|
272
|
+
}
|
|
273
|
+
// Create new isolate
|
|
274
|
+
return await this.createIsolate(securityProfile);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Validate execution options
|
|
278
|
+
*/
|
|
279
|
+
validateExecutionOptions(options) {
|
|
280
|
+
if (!options.code || typeof options.code !== "string") {
|
|
281
|
+
throw new IsolatedRuntimeError("Code must be a non-empty string", "INVALID_CODE", { codeType: typeof options.code, codeLength: options.code?.length });
|
|
282
|
+
}
|
|
283
|
+
if (options.code.length > 1024 * 1024) {
|
|
284
|
+
// 1MB max code size
|
|
285
|
+
throw new IsolatedRuntimeError("Code exceeds maximum size limit (1MB)", "CODE_TOO_LARGE", { codeSize: options.code.length });
|
|
286
|
+
}
|
|
287
|
+
const memoryLimit = options.memoryLimit || this.config.memoryLimit;
|
|
288
|
+
if (memoryLimit > 8) {
|
|
289
|
+
// 8MB max
|
|
290
|
+
throw new IsolatedRuntimeError("Memory limit exceeds maximum allowed (8MB)", "MEMORY_LIMIT_EXCEEDED", { requestedMemory: memoryLimit, maxMemory: 8 });
|
|
291
|
+
}
|
|
292
|
+
const timeout = options.timeout || config_1.runtimeConfig.timeout;
|
|
293
|
+
if (timeout > 30000) {
|
|
294
|
+
// 30s max
|
|
295
|
+
throw new IsolatedRuntimeError("Timeout exceeds maximum allowed (30s)", "TIMEOUT_EXCEEDED", { requestedTimeout: timeout, maxTimeout: 30000 });
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Calculate memory usage for isolate
|
|
300
|
+
*/
|
|
301
|
+
getMemoryUsage(runtimeContext) {
|
|
302
|
+
try {
|
|
303
|
+
const heapStatistics = runtimeContext.isolate.getHeapStatisticsSync();
|
|
304
|
+
return (heapStatistics.used_heap_size || 0) / (1024 * 1024); // MB
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
this.emit("error", {
|
|
308
|
+
message: "Failed to get memory usage",
|
|
309
|
+
error,
|
|
310
|
+
context: "getMemoryUsage",
|
|
311
|
+
});
|
|
312
|
+
return 0;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Update metrics tracking
|
|
317
|
+
*/
|
|
318
|
+
updateMetrics(metric, value) {
|
|
319
|
+
if (!this.metrics.has(metric)) {
|
|
320
|
+
this.metrics.set(metric, []);
|
|
321
|
+
}
|
|
322
|
+
const values = this.metrics.get(metric);
|
|
323
|
+
values.push(value);
|
|
324
|
+
// Keep only last 1000 values
|
|
325
|
+
if (values.length > 1000) {
|
|
326
|
+
values.shift();
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Generate unique execution ID
|
|
331
|
+
*/
|
|
332
|
+
generateExecutionId() {
|
|
333
|
+
return `exec-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Generate audit hash for execution
|
|
337
|
+
*/
|
|
338
|
+
generateAuditHash(options, result) {
|
|
339
|
+
const crypto = require("node:crypto");
|
|
340
|
+
const auditData = {
|
|
341
|
+
code: options.code,
|
|
342
|
+
context: options.context,
|
|
343
|
+
result: result.result,
|
|
344
|
+
success: result.success,
|
|
345
|
+
executionTime: result.executionTime,
|
|
346
|
+
memoryUsed: result.memoryUsed,
|
|
347
|
+
timestamp: result.timestamp,
|
|
348
|
+
tenantId: options.tenantId,
|
|
349
|
+
};
|
|
350
|
+
return crypto
|
|
351
|
+
.createHash(this.config.auditHashAlgorithm)
|
|
352
|
+
.update(JSON.stringify(auditData))
|
|
353
|
+
.digest("hex");
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Cleanup idle isolates
|
|
357
|
+
*/
|
|
358
|
+
cleanupPool() {
|
|
359
|
+
const now = Date.now();
|
|
360
|
+
const idleTimeout = this.config.poolIdleTimeout;
|
|
361
|
+
// Cleanup pool isolates that have been idle too long
|
|
362
|
+
this.pool = this.pool.filter((isolate) => {
|
|
363
|
+
const idleTime = now - isolate.lastUsedAt.getTime();
|
|
364
|
+
const shouldCleanup = idleTime > idleTimeout && this.pool.length > this.minPoolSize;
|
|
365
|
+
if (shouldCleanup) {
|
|
366
|
+
try {
|
|
367
|
+
isolate.isolate.dispose();
|
|
368
|
+
this.emit("isolate-disposed", {
|
|
369
|
+
isolateId: isolate.createdAt.getTime(),
|
|
370
|
+
idleTime,
|
|
371
|
+
reason: "idle-cleanup",
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
this.emit("error", new IsolatedRuntimeError("Failed to dispose isolate during cleanup", "DISPOSE_ERROR", { error, idleTime }));
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return !shouldCleanup;
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Get current metrics
|
|
383
|
+
*/
|
|
384
|
+
getMetrics() {
|
|
385
|
+
return Object.fromEntries(this.metrics);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Get pool statistics
|
|
389
|
+
*/
|
|
390
|
+
getPoolStats() {
|
|
391
|
+
return {
|
|
392
|
+
totalIsolates: this.isolates.size + this.pool.length,
|
|
393
|
+
poolSize: this.pool.length,
|
|
394
|
+
activeExecutions: this.activeExecutions.size,
|
|
395
|
+
minPoolSize: this.minPoolSize,
|
|
396
|
+
maxPoolSize: this.maxPoolSize,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Dispose of all isolates and cleanup resources
|
|
401
|
+
*/
|
|
402
|
+
async dispose() {
|
|
403
|
+
clearInterval(this.cleanupInterval);
|
|
404
|
+
// Dispose all pool isolates
|
|
405
|
+
for (const isolate of this.pool) {
|
|
406
|
+
try {
|
|
407
|
+
isolate.isolate.dispose();
|
|
408
|
+
}
|
|
409
|
+
catch (error) {
|
|
410
|
+
this.emit("error", {
|
|
411
|
+
message: "Failed to dispose isolate during cleanup",
|
|
412
|
+
error,
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
this.pool = [];
|
|
417
|
+
this.activeExecutions.clear();
|
|
418
|
+
this.emit("disposed", { cleanupTime: Date.now() });
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
exports.IsolatedRuntimeManager = IsolatedRuntimeManager;
|
|
422
|
+
// Singleton instance
|
|
423
|
+
exports.runtimeManager = new IsolatedRuntimeManager();
|
|
424
|
+
exports.default = IsolatedRuntimeManager;
|
|
425
|
+
//# sourceMappingURL=isolatedRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolatedRuntime.js","sourceRoot":"","sources":["../../src/runtime/isolatedRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ZodIssue, type ZodTypeAny } from "zod";
|
|
2
|
+
export type DeclarativeSchemaDefinition = {
|
|
3
|
+
type?: string;
|
|
4
|
+
properties?: Record<string, DeclarativeSchemaDefinition>;
|
|
5
|
+
items?: DeclarativeSchemaDefinition;
|
|
6
|
+
required?: string[];
|
|
7
|
+
enum?: Array<string | number | boolean>;
|
|
8
|
+
minLength?: number;
|
|
9
|
+
maxLength?: number;
|
|
10
|
+
minItems?: number;
|
|
11
|
+
maxItems?: number;
|
|
12
|
+
additionalProperties?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type DeclarativeSchemaPhase = "input" | "output";
|
|
15
|
+
export declare class SchemaCompilationError extends Error {
|
|
16
|
+
constructor(message: string);
|
|
17
|
+
}
|
|
18
|
+
export declare class DeclarativeSchemaValidationError extends Error {
|
|
19
|
+
readonly phase: DeclarativeSchemaPhase;
|
|
20
|
+
readonly issues: ZodIssue[];
|
|
21
|
+
constructor(message: string, phase: DeclarativeSchemaPhase, issues: ZodIssue[]);
|
|
22
|
+
}
|
|
23
|
+
export declare class DeclarativeSchemaCompiler {
|
|
24
|
+
private readonly cache;
|
|
25
|
+
compile(definition: unknown, path: string): ZodTypeAny;
|
|
26
|
+
clear(): void;
|
|
27
|
+
get size(): number;
|
|
28
|
+
private createCacheKey;
|
|
29
|
+
private buildSchema;
|
|
30
|
+
private buildObjectSchema;
|
|
31
|
+
private buildArraySchema;
|
|
32
|
+
private buildStringSchema;
|
|
33
|
+
private buildEnumSchema;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=schemaCompiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaCompiler.d.ts","sourceRoot":"","sources":["../../src/runtime/schemaCompiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,KAAK,QAAQ,EAAmB,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAEzE,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACzD,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gCAAiC,SAAQ,KAAK;aAGvC,KAAK,EAAE,sBAAsB;aAC7B,MAAM,EAAE,QAAQ,EAAE;gBAFlC,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,QAAQ,EAAE;CAKrC;AAED,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEhD,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU;IAYtD,KAAK,IAAI,IAAI;IAIpB,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,WAAW;IAgDnB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,eAAe;CAqCxB"}
|