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.
Files changed (236) hide show
  1. package/README.md +297 -0
  2. package/dist/agents/agentRegistry.d.ts +68 -0
  3. package/dist/agents/agentRegistry.d.ts.map +1 -0
  4. package/dist/agents/agentRegistry.js +222 -0
  5. package/dist/agents/agentRegistry.js.map +1 -0
  6. package/dist/agents/formatter-agent.d.ts +10 -0
  7. package/dist/agents/formatter-agent.d.ts.map +1 -0
  8. package/dist/agents/formatter-agent.js +49 -0
  9. package/dist/agents/formatter-agent.js.map +1 -0
  10. package/dist/agents/genkit-agent.d.ts +12 -0
  11. package/dist/agents/genkit-agent.d.ts.map +1 -0
  12. package/dist/agents/genkit-agent.js +119 -0
  13. package/dist/agents/genkit-agent.js.map +1 -0
  14. package/dist/agents/i18n-messages.d.ts +17 -0
  15. package/dist/agents/i18n-messages.d.ts.map +1 -0
  16. package/dist/agents/i18n-messages.js +92 -0
  17. package/dist/agents/i18n-messages.js.map +1 -0
  18. package/dist/agents/index.d.ts +10 -0
  19. package/dist/agents/index.d.ts.map +1 -0
  20. package/dist/agents/index.js +26 -0
  21. package/dist/agents/index.js.map +1 -0
  22. package/dist/agents/pipeline.d.ts +15 -0
  23. package/dist/agents/pipeline.d.ts.map +1 -0
  24. package/dist/agents/pipeline.js +45 -0
  25. package/dist/agents/pipeline.js.map +1 -0
  26. package/dist/agents/schema-factory.d.ts +40 -0
  27. package/dist/agents/schema-factory.d.ts.map +1 -0
  28. package/dist/agents/schema-factory.js +121 -0
  29. package/dist/agents/schema-factory.js.map +1 -0
  30. package/dist/agents/translation-validators.d.ts +26 -0
  31. package/dist/agents/translation-validators.d.ts.map +1 -0
  32. package/dist/agents/translation-validators.js +77 -0
  33. package/dist/agents/translation-validators.js.map +1 -0
  34. package/dist/agents/translator-agents.d.ts +184 -0
  35. package/dist/agents/translator-agents.d.ts.map +1 -0
  36. package/dist/agents/translator-agents.js +613 -0
  37. package/dist/agents/translator-agents.js.map +1 -0
  38. package/dist/agents/types/translation.types.d.ts +100 -0
  39. package/dist/agents/types/translation.types.d.ts.map +1 -0
  40. package/dist/agents/types/translation.types.js +3 -0
  41. package/dist/agents/types/translation.types.js.map +1 -0
  42. package/dist/agents/validator-agent.d.ts +42 -0
  43. package/dist/agents/validator-agent.d.ts.map +1 -0
  44. package/dist/agents/validator-agent.js +122 -0
  45. package/dist/agents/validator-agent.js.map +1 -0
  46. package/dist/audit/auditTrail.d.ts +55 -0
  47. package/dist/audit/auditTrail.d.ts.map +1 -0
  48. package/dist/audit/auditTrail.js +93 -0
  49. package/dist/audit/auditTrail.js.map +1 -0
  50. package/dist/compliance/gdprEngine.d.ts +44 -0
  51. package/dist/compliance/gdprEngine.d.ts.map +1 -0
  52. package/dist/compliance/gdprEngine.js +178 -0
  53. package/dist/compliance/gdprEngine.js.map +1 -0
  54. package/dist/compliance/lgpdEngine.d.ts +51 -0
  55. package/dist/compliance/lgpdEngine.d.ts.map +1 -0
  56. package/dist/compliance/lgpdEngine.js +221 -0
  57. package/dist/compliance/lgpdEngine.js.map +1 -0
  58. package/dist/config.d.ts +78 -0
  59. package/dist/config.d.ts.map +1 -0
  60. package/dist/config.js +77 -0
  61. package/dist/config.js.map +1 -0
  62. package/dist/errors.d.ts +17 -0
  63. package/dist/errors.d.ts.map +1 -0
  64. package/dist/errors.js +40 -0
  65. package/dist/errors.js.map +1 -0
  66. package/dist/firebase/tenantManager.d.ts +84 -0
  67. package/dist/firebase/tenantManager.d.ts.map +1 -0
  68. package/dist/firebase/tenantManager.js +378 -0
  69. package/dist/firebase/tenantManager.js.map +1 -0
  70. package/dist/index.d.ts +36 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +118 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/integration/secure-yaml-runtime.d.ts +68 -0
  75. package/dist/integration/secure-yaml-runtime.d.ts.map +1 -0
  76. package/dist/integration/secure-yaml-runtime.js +245 -0
  77. package/dist/integration/secure-yaml-runtime.js.map +1 -0
  78. package/dist/parser/secure-yaml-parser.d.ts +62 -0
  79. package/dist/parser/secure-yaml-parser.d.ts.map +1 -0
  80. package/dist/parser/secure-yaml-parser.js +234 -0
  81. package/dist/parser/secure-yaml-parser.js.map +1 -0
  82. package/dist/performance/autoscaling.d.ts +100 -0
  83. package/dist/performance/autoscaling.d.ts.map +1 -0
  84. package/dist/performance/autoscaling.js +339 -0
  85. package/dist/performance/autoscaling.js.map +1 -0
  86. package/dist/performance/benchmark.d.ts +104 -0
  87. package/dist/performance/benchmark.d.ts.map +1 -0
  88. package/dist/performance/benchmark.js +514 -0
  89. package/dist/performance/benchmark.js.map +1 -0
  90. package/dist/performance/index.d.ts +14 -0
  91. package/dist/performance/index.d.ts.map +1 -0
  92. package/dist/performance/index.js +35 -0
  93. package/dist/performance/index.js.map +1 -0
  94. package/dist/performance/monitor.d.ts +126 -0
  95. package/dist/performance/monitor.d.ts.map +1 -0
  96. package/dist/performance/monitor.js +324 -0
  97. package/dist/performance/monitor.js.map +1 -0
  98. package/dist/performance/streaming.d.ts +82 -0
  99. package/dist/performance/streaming.d.ts.map +1 -0
  100. package/dist/performance/streaming.js +287 -0
  101. package/dist/performance/streaming.js.map +1 -0
  102. package/dist/runtime/audit.d.ts +240 -0
  103. package/dist/runtime/audit.d.ts.map +1 -0
  104. package/dist/runtime/audit.js +641 -0
  105. package/dist/runtime/audit.js.map +1 -0
  106. package/dist/runtime/declarativeAgentRuntime.d.ts +123 -0
  107. package/dist/runtime/declarativeAgentRuntime.d.ts.map +1 -0
  108. package/dist/runtime/declarativeAgentRuntime.js +576 -0
  109. package/dist/runtime/declarativeAgentRuntime.js.map +1 -0
  110. package/dist/runtime/isolatedRuntime.d.ts +119 -0
  111. package/dist/runtime/isolatedRuntime.d.ts.map +1 -0
  112. package/dist/runtime/isolatedRuntime.js +425 -0
  113. package/dist/runtime/isolatedRuntime.js.map +1 -0
  114. package/dist/runtime/schemaCompiler.d.ts +35 -0
  115. package/dist/runtime/schemaCompiler.d.ts.map +1 -0
  116. package/dist/runtime/schemaCompiler.js +151 -0
  117. package/dist/runtime/schemaCompiler.js.map +1 -0
  118. package/dist/runtime/simpleRuntime.d.ts +57 -0
  119. package/dist/runtime/simpleRuntime.d.ts.map +1 -0
  120. package/dist/runtime/simpleRuntime.js +187 -0
  121. package/dist/runtime/simpleRuntime.js.map +1 -0
  122. package/dist/security/dashboard.d.ts +89 -0
  123. package/dist/security/dashboard.d.ts.map +1 -0
  124. package/dist/security/dashboard.js +300 -0
  125. package/dist/security/dashboard.js.map +1 -0
  126. package/dist/security/hardening.d.ts +130 -0
  127. package/dist/security/hardening.d.ts.map +1 -0
  128. package/dist/security/hardening.js +414 -0
  129. package/dist/security/hardening.js.map +1 -0
  130. package/dist/security/index.d.ts +128 -0
  131. package/dist/security/index.d.ts.map +1 -0
  132. package/dist/security/index.js +353 -0
  133. package/dist/security/index.js.map +1 -0
  134. package/dist/security/monitor.d.ts +88 -0
  135. package/dist/security/monitor.d.ts.map +1 -0
  136. package/dist/security/monitor.js +356 -0
  137. package/dist/security/monitor.js.map +1 -0
  138. package/dist/security/scanner.d.ts +104 -0
  139. package/dist/security/scanner.d.ts.map +1 -0
  140. package/dist/security/scanner.js +298 -0
  141. package/dist/security/scanner.js.map +1 -0
  142. package/dist/security/score.d.ts +150 -0
  143. package/dist/security/score.d.ts.map +1 -0
  144. package/dist/security/score.js +983 -0
  145. package/dist/security/score.js.map +1 -0
  146. package/dist/security/test-security.d.ts +22 -0
  147. package/dist/security/test-security.d.ts.map +1 -0
  148. package/dist/security/test-security.js +154 -0
  149. package/dist/security/test-security.js.map +1 -0
  150. package/dist/security/threatDetector.d.ts +39 -0
  151. package/dist/security/threatDetector.d.ts.map +1 -0
  152. package/dist/security/threatDetector.js +354 -0
  153. package/dist/security/threatDetector.js.map +1 -0
  154. package/dist/security/validation.d.ts +69 -0
  155. package/dist/security/validation.d.ts.map +1 -0
  156. package/dist/security/validation.js +286 -0
  157. package/dist/security/validation.js.map +1 -0
  158. package/dist/server/api/clientsRoute.d.ts +9 -0
  159. package/dist/server/api/clientsRoute.d.ts.map +1 -0
  160. package/dist/server/api/clientsRoute.js +71 -0
  161. package/dist/server/api/clientsRoute.js.map +1 -0
  162. package/dist/server/api/endpointsRoute.d.ts +8 -0
  163. package/dist/server/api/endpointsRoute.d.ts.map +1 -0
  164. package/dist/server/api/endpointsRoute.js +76 -0
  165. package/dist/server/api/endpointsRoute.js.map +1 -0
  166. package/dist/server/api/graphql.d.ts +9 -0
  167. package/dist/server/api/graphql.d.ts.map +1 -0
  168. package/dist/server/api/graphql.js +180 -0
  169. package/dist/server/api/graphql.js.map +1 -0
  170. package/dist/server/errors.d.ts +19 -0
  171. package/dist/server/errors.d.ts.map +1 -0
  172. package/dist/server/errors.js +42 -0
  173. package/dist/server/errors.js.map +1 -0
  174. package/dist/server/index.d.ts +7 -0
  175. package/dist/server/index.d.ts.map +1 -0
  176. package/dist/server/index.js +24 -0
  177. package/dist/server/index.js.map +1 -0
  178. package/dist/server/kvStore.d.ts +27 -0
  179. package/dist/server/kvStore.d.ts.map +1 -0
  180. package/dist/server/kvStore.js +128 -0
  181. package/dist/server/kvStore.js.map +1 -0
  182. package/dist/server/runtimeSecurity.d.ts +28 -0
  183. package/dist/server/runtimeSecurity.d.ts.map +1 -0
  184. package/dist/server/runtimeSecurity.js +85 -0
  185. package/dist/server/runtimeSecurity.js.map +1 -0
  186. package/dist/server/types.d.ts +53 -0
  187. package/dist/server/types.d.ts.map +1 -0
  188. package/dist/server/types.js +8 -0
  189. package/dist/server/types.js.map +1 -0
  190. package/dist/types/executionContext.d.ts +16 -0
  191. package/dist/types/executionContext.d.ts.map +1 -0
  192. package/dist/types/executionContext.js +3 -0
  193. package/dist/types/executionContext.js.map +1 -0
  194. package/package.json +77 -0
  195. package/src/agents/agentRegistry.ts +272 -0
  196. package/src/agents/image-agent.yaml +86 -0
  197. package/src/agents/joker-agent.yaml +47 -0
  198. package/src/agents/translator-agent.yaml +80 -0
  199. package/src/audit/auditTrail.ts +134 -0
  200. package/src/compliance/gdprEngine.ts +209 -0
  201. package/src/compliance/lgpdEngine.ts +268 -0
  202. package/src/config.ts +179 -0
  203. package/src/errors.ts +35 -0
  204. package/src/firebase/tenantManager.ts +443 -0
  205. package/src/index.ts +125 -0
  206. package/src/integration/secure-yaml-runtime.ts +341 -0
  207. package/src/parser/secure-yaml-parser.ts +273 -0
  208. package/src/performance/autoscaling.ts +495 -0
  209. package/src/performance/benchmark.ts +644 -0
  210. package/src/performance/index.ts +34 -0
  211. package/src/performance/monitor.ts +469 -0
  212. package/src/performance/streaming.ts +317 -0
  213. package/src/runtime/audit.ts +907 -0
  214. package/src/runtime/declarativeAgentRuntime.ts +836 -0
  215. package/src/runtime/isolatedRuntime.ts +572 -0
  216. package/src/runtime/schemaCompiler.ts +228 -0
  217. package/src/runtime/simpleRuntime.ts +201 -0
  218. package/src/security/dashboard.ts +462 -0
  219. package/src/security/hardening.ts +560 -0
  220. package/src/security/index.ts +439 -0
  221. package/src/security/monitor.ts +490 -0
  222. package/src/security/scanner.ts +368 -0
  223. package/src/security/score.ts +1138 -0
  224. package/src/security/threatDetector.ts +481 -0
  225. package/src/security/validation.ts +365 -0
  226. package/src/server/api/clientsRoute.ts +92 -0
  227. package/src/server/api/endpointsRoute.ts +97 -0
  228. package/src/server/api/graphql.ts +249 -0
  229. package/src/server/errors.ts +38 -0
  230. package/src/server/index.ts +6 -0
  231. package/src/server/kvStore.ts +152 -0
  232. package/src/server/runtimeSecurity.ts +102 -0
  233. package/src/server/types.ts +60 -0
  234. package/src/types/executionContext.ts +16 -0
  235. package/tools/seed.ts +365 -0
  236. 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"}