@cogitator-ai/self-modifying 17.0.17 → 18.0.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 (114) hide show
  1. package/README.md +112 -48
  2. package/dist/architecture-evolution/capability-analyzer.d.ts.map +1 -1
  3. package/dist/architecture-evolution/capability-analyzer.js +44 -40
  4. package/dist/architecture-evolution/capability-analyzer.js.map +1 -1
  5. package/dist/architecture-evolution/evolution-strategy.d.ts.map +1 -1
  6. package/dist/architecture-evolution/evolution-strategy.js +4 -2
  7. package/dist/architecture-evolution/evolution-strategy.js.map +1 -1
  8. package/dist/architecture-evolution/index.d.ts +2 -2
  9. package/dist/architecture-evolution/index.d.ts.map +1 -1
  10. package/dist/architecture-evolution/index.js +1 -1
  11. package/dist/architecture-evolution/index.js.map +1 -1
  12. package/dist/architecture-evolution/parameter-optimizer.d.ts +5 -4
  13. package/dist/architecture-evolution/parameter-optimizer.d.ts.map +1 -1
  14. package/dist/architecture-evolution/parameter-optimizer.js +62 -34
  15. package/dist/architecture-evolution/parameter-optimizer.js.map +1 -1
  16. package/dist/architecture-evolution/prompts.d.ts +21 -2
  17. package/dist/architecture-evolution/prompts.d.ts.map +1 -1
  18. package/dist/architecture-evolution/prompts.js +189 -37
  19. package/dist/architecture-evolution/prompts.js.map +1 -1
  20. package/dist/constraints/modification-validator.d.ts +1 -0
  21. package/dist/constraints/modification-validator.d.ts.map +1 -1
  22. package/dist/constraints/modification-validator.js +45 -18
  23. package/dist/constraints/modification-validator.js.map +1 -1
  24. package/dist/constraints/rollback-manager.d.ts +1 -0
  25. package/dist/constraints/rollback-manager.d.ts.map +1 -1
  26. package/dist/constraints/rollback-manager.js +25 -1
  27. package/dist/constraints/rollback-manager.js.map +1 -1
  28. package/dist/events/event-emitter.d.ts +0 -1
  29. package/dist/events/event-emitter.d.ts.map +1 -1
  30. package/dist/events/event-emitter.js +6 -10
  31. package/dist/events/event-emitter.js.map +1 -1
  32. package/dist/index.d.ts +4 -4
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +3 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/meta-reasoning/meta-reasoner.d.ts +4 -1
  37. package/dist/meta-reasoning/meta-reasoner.d.ts.map +1 -1
  38. package/dist/meta-reasoning/meta-reasoner.js +120 -43
  39. package/dist/meta-reasoning/meta-reasoner.js.map +1 -1
  40. package/dist/meta-reasoning/observation-collector.d.ts.map +1 -1
  41. package/dist/meta-reasoning/observation-collector.js +6 -2
  42. package/dist/meta-reasoning/observation-collector.js.map +1 -1
  43. package/dist/meta-reasoning/prompts.d.ts +10 -14
  44. package/dist/meta-reasoning/prompts.d.ts.map +1 -1
  45. package/dist/meta-reasoning/prompts.js +108 -33
  46. package/dist/meta-reasoning/prompts.js.map +1 -1
  47. package/dist/meta-reasoning/strategy-selector.d.ts.map +1 -1
  48. package/dist/meta-reasoning/strategy-selector.js +6 -0
  49. package/dist/meta-reasoning/strategy-selector.js.map +1 -1
  50. package/dist/self-modifying-agent.d.ts +88 -15
  51. package/dist/self-modifying-agent.d.ts.map +1 -1
  52. package/dist/self-modifying-agent.js +583 -376
  53. package/dist/self-modifying-agent.js.map +1 -1
  54. package/dist/tool-generation/gap-analyzer.d.ts +0 -1
  55. package/dist/tool-generation/gap-analyzer.d.ts.map +1 -1
  56. package/dist/tool-generation/gap-analyzer.js +16 -15
  57. package/dist/tool-generation/gap-analyzer.js.map +1 -1
  58. package/dist/tool-generation/generated-tool-store.d.ts.map +1 -1
  59. package/dist/tool-generation/generated-tool-store.js +90 -10
  60. package/dist/tool-generation/generated-tool-store.js.map +1 -1
  61. package/dist/tool-generation/index.d.ts +3 -3
  62. package/dist/tool-generation/index.d.ts.map +1 -1
  63. package/dist/tool-generation/index.js +2 -2
  64. package/dist/tool-generation/index.js.map +1 -1
  65. package/dist/tool-generation/prompts.d.ts +4 -3
  66. package/dist/tool-generation/prompts.d.ts.map +1 -1
  67. package/dist/tool-generation/prompts.js +96 -18
  68. package/dist/tool-generation/prompts.js.map +1 -1
  69. package/dist/tool-generation/tool-generator.d.ts +6 -6
  70. package/dist/tool-generation/tool-generator.d.ts.map +1 -1
  71. package/dist/tool-generation/tool-generator.js +88 -23
  72. package/dist/tool-generation/tool-generator.js.map +1 -1
  73. package/dist/tool-generation/tool-sandbox.d.ts +10 -11
  74. package/dist/tool-generation/tool-sandbox.d.ts.map +1 -1
  75. package/dist/tool-generation/tool-sandbox.js +346 -156
  76. package/dist/tool-generation/tool-sandbox.js.map +1 -1
  77. package/dist/tool-generation/tool-validator.d.ts +4 -8
  78. package/dist/tool-generation/tool-validator.d.ts.map +1 -1
  79. package/dist/tool-generation/tool-validator.js +74 -28
  80. package/dist/tool-generation/tool-validator.js.map +1 -1
  81. package/dist/utils/index.d.ts.map +1 -1
  82. package/dist/utils/index.js +30 -5
  83. package/dist/utils/index.js.map +1 -1
  84. package/dist/utils/llm-helper.d.ts.map +1 -1
  85. package/dist/utils/llm-helper.js +1 -0
  86. package/dist/utils/llm-helper.js.map +1 -1
  87. package/package.json +3 -12
  88. package/src/__tests__/component-regressions.test.ts +599 -0
  89. package/src/__tests__/meta-reasoning.test.ts +5 -1
  90. package/src/__tests__/sandbox-security.test.ts +186 -0
  91. package/src/__tests__/self-modifying-agent.test.ts +405 -11
  92. package/src/architecture-evolution/capability-analyzer.ts +63 -44
  93. package/src/architecture-evolution/evolution-strategy.ts +5 -2
  94. package/src/architecture-evolution/index.ts +2 -0
  95. package/src/architecture-evolution/parameter-optimizer.ts +82 -40
  96. package/src/architecture-evolution/prompts.ts +224 -42
  97. package/src/constraints/modification-validator.ts +48 -21
  98. package/src/constraints/rollback-manager.ts +20 -1
  99. package/src/events/event-emitter.ts +6 -15
  100. package/src/index.ts +14 -0
  101. package/src/meta-reasoning/meta-reasoner.ts +124 -52
  102. package/src/meta-reasoning/observation-collector.ts +6 -2
  103. package/src/meta-reasoning/prompts.ts +131 -56
  104. package/src/meta-reasoning/strategy-selector.ts +6 -0
  105. package/src/self-modifying-agent.ts +797 -413
  106. package/src/tool-generation/gap-analyzer.ts +21 -19
  107. package/src/tool-generation/generated-tool-store.ts +97 -10
  108. package/src/tool-generation/index.ts +13 -3
  109. package/src/tool-generation/prompts.ts +120 -18
  110. package/src/tool-generation/tool-generator.ts +120 -26
  111. package/src/tool-generation/tool-sandbox.ts +408 -206
  112. package/src/tool-generation/tool-validator.ts +90 -37
  113. package/src/utils/index.ts +29 -5
  114. package/src/utils/llm-helper.ts +1 -0
@@ -1,3 +1,4 @@
1
+ import { Worker } from 'node:worker_threads';
1
2
  export const DEFAULT_SANDBOX_CONFIG = {
2
3
  enabled: true,
3
4
  maxExecutionTime: 5000,
@@ -5,51 +6,142 @@ export const DEFAULT_SANDBOX_CONFIG = {
5
6
  allowedModules: [],
6
7
  isolationLevel: 'strict',
7
8
  };
9
+ const WORKER_SOURCE = String.raw `
10
+ const { parentPort, workerData } = require('node:worker_threads');
11
+ const vm = require('node:vm');
12
+ const { code, paramsJson, timeout } = workerData;
13
+
14
+ const BOOTSTRAP = [
15
+ '(function () {',
16
+ ' "use strict";',
17
+ ' const logs = [];',
18
+ ' const format = (args) => args.map((v) => {',
19
+ ' if (typeof v === "string") return v;',
20
+ ' try { const s = JSON.stringify(v); return s === undefined ? String(v) : s; } catch (e) { return String(v); }',
21
+ ' }).join(" ");',
22
+ ' const logger = (level) => (...args) => { if (logs.length < 1000) logs.push("[" + level + "] " + format(args)); };',
23
+ ' Object.defineProperty(globalThis, "console", { value: Object.freeze({',
24
+ ' log: logger("LOG"), info: logger("INFO"), debug: logger("DEBUG"), warn: logger("WARN"), error: logger("ERROR"),',
25
+ ' }) });',
26
+ ' Object.defineProperty(globalThis, "__sandboxState", { value: { status: "pending", payload: "", hasValue: false, logs } });',
27
+ '})();',
28
+ ].join('\n');
29
+
30
+ const runner = [
31
+ '(async function sandboxedExecution(params) {',
32
+ code,
33
+ ' if (typeof execute !== "function") { throw new Error("Implementation must define an execute function"); }',
34
+ ' return await execute(params);',
35
+ '})(JSON.parse(' + JSON.stringify(paramsJson) + ')).then(',
36
+ ' (value) => {',
37
+ ' const state = globalThis.__sandboxState;',
38
+ ' try {',
39
+ ' const json = JSON.stringify(value);',
40
+ ' state.hasValue = json !== undefined;',
41
+ ' state.payload = json === undefined ? "" : json;',
42
+ ' state.status = "fulfilled";',
43
+ ' } catch (e) {',
44
+ ' state.payload = "Tool returned a non-serializable value: " + (e && e.message);',
45
+ ' state.status = "failed";',
46
+ ' }',
47
+ ' },',
48
+ ' (err) => {',
49
+ ' const state = globalThis.__sandboxState;',
50
+ ' state.payload = err && typeof err.message === "string" ? err.message : String(err);',
51
+ ' state.status = "rejected";',
52
+ ' }',
53
+ ');',
54
+ ].join('\n');
55
+
56
+ const asString = (value) => (typeof value === 'string' ? value : '');
57
+ const readState = (context, expression) => {
58
+ try {
59
+ return vm.runInContext(expression, context);
60
+ } catch {
61
+ return undefined;
62
+ }
63
+ };
64
+ const readLogs = (context) => {
65
+ const raw = readState(context, 'JSON.stringify(__sandboxState.logs)');
66
+ if (typeof raw !== 'string') return [];
67
+ try {
68
+ const parsed = JSON.parse(raw);
69
+ return Array.isArray(parsed) ? parsed.filter((l) => typeof l === 'string') : [];
70
+ } catch {
71
+ return [];
72
+ }
73
+ };
74
+
75
+ const context = vm.createContext(Object.create(null), {
76
+ codeGeneration: { strings: false, wasm: false },
77
+ });
78
+
79
+ let started = false;
80
+ try {
81
+ vm.runInContext(BOOTSTRAP, context);
82
+ vm.runInContext(runner, context, { timeout });
83
+ started = true;
84
+ } catch (err) {
85
+ parentPort.postMessage({
86
+ success: false,
87
+ thrown: true,
88
+ error: err && typeof err.message === 'string' ? err.message : String(err),
89
+ logs: readLogs(context),
90
+ });
91
+ }
92
+
93
+ if (started) setImmediate(() => {
94
+ const status = asString(readState(context, '__sandboxState.status'));
95
+ const payload = asString(readState(context, '__sandboxState.payload'));
96
+ const logs = readLogs(context);
97
+
98
+ if (status === 'fulfilled') {
99
+ let result;
100
+ if (readState(context, '__sandboxState.hasValue') === true) {
101
+ try {
102
+ result = JSON.parse(payload);
103
+ } catch {
104
+ parentPort.postMessage({ success: false, thrown: false, error: 'Tool returned an unreadable value', logs });
105
+ return;
106
+ }
107
+ }
108
+ parentPort.postMessage({ success: true, result, logs });
109
+ } else if (status === 'rejected') {
110
+ parentPort.postMessage({ success: false, thrown: true, error: payload, logs });
111
+ } else if (status === 'failed') {
112
+ parentPort.postMessage({ success: false, thrown: false, error: payload, logs });
113
+ } else {
114
+ parentPort.postMessage({
115
+ success: false,
116
+ thrown: false,
117
+ error: 'Tool execution never settled: execute() returned a promise that cannot resolve inside the sandbox',
118
+ logs,
119
+ });
120
+ }
121
+ });
122
+ `;
8
123
  export class ToolSandbox {
9
124
  config;
10
- logs = [];
11
125
  constructor(config = {}) {
12
126
  this.config = { ...DEFAULT_SANDBOX_CONFIG, ...config };
13
127
  }
14
128
  async execute(tool, params) {
15
- const startTime = Date.now();
16
- this.logs.length = 0;
17
- if (!this.config.enabled) {
18
- return this.executeUnsandboxed(tool, params, startTime);
19
- }
20
- try {
21
- this.validateImplementation(tool.implementation);
22
- const context = this.createContext();
23
- const wrappedCode = this.wrapImplementation(tool.implementation);
24
- const result = await this.executeWithTimeout(wrappedCode, context, params, this.config.maxExecutionTime);
25
- return {
26
- success: true,
27
- result,
28
- executionTime: Date.now() - startTime,
29
- memoryUsed: this.estimateMemoryUsage(result),
30
- logs: [...this.logs],
31
- };
32
- }
33
- catch (error) {
34
- return {
35
- success: false,
36
- error: error instanceof Error ? error.message : String(error),
37
- executionTime: Date.now() - startTime,
38
- memoryUsed: 0,
39
- logs: [...this.logs],
40
- };
41
- }
129
+ const run = await this.run(tool, params);
130
+ return run.result;
42
131
  }
43
132
  async testWithCases(tool, testCases) {
44
133
  const results = [];
45
134
  for (const testCase of testCases) {
46
- const execResult = await this.execute(tool, testCase.input);
47
- let passed = false;
135
+ const { result: execResult, thrownByTool } = await this.run(tool, testCase.input);
136
+ let passed;
48
137
  if (testCase.shouldThrow) {
49
- passed = !execResult.success;
138
+ passed = !execResult.success && thrownByTool;
50
139
  }
51
140
  else if (testCase.expectedOutput !== undefined) {
52
- passed = execResult.success && this.deepEqual(execResult.result, testCase.expectedOutput);
141
+ passed = execResult.success && deepEqual(execResult.result, testCase.expectedOutput);
142
+ }
143
+ else if (testCase.allowThrow) {
144
+ passed = execResult.success || thrownByTool;
53
145
  }
54
146
  else {
55
147
  passed = execResult.success;
@@ -68,37 +160,85 @@ export class ToolSandbox {
68
160
  results,
69
161
  };
70
162
  }
163
+ async run(tool, params) {
164
+ const startTime = Date.now();
165
+ try {
166
+ this.validateImplementation(tool.implementation);
167
+ }
168
+ catch (error) {
169
+ return {
170
+ result: failure(error instanceof Error ? error.message : String(error), startTime),
171
+ thrownByTool: false,
172
+ };
173
+ }
174
+ let paramsJson;
175
+ try {
176
+ paramsJson = JSON.stringify(params ?? null);
177
+ }
178
+ catch (error) {
179
+ return {
180
+ result: failure(`Parameters must be JSON-serializable: ${error instanceof Error ? error.message : String(error)}`, startTime),
181
+ thrownByTool: false,
182
+ };
183
+ }
184
+ if (!this.config.enabled) {
185
+ return this.executeUnsandboxed(tool, JSON.parse(paramsJson), startTime);
186
+ }
187
+ return this.executeInWorker(tool.implementation, paramsJson, startTime);
188
+ }
71
189
  validateImplementation(code) {
72
190
  const forbidden = [
73
- /\beval\s*\(/,
74
- /\bFunction\s*\(/,
75
- /\bnew\s+Function\s*\(/,
76
- /\bimport\s*\(/,
77
- /\brequire\s*\(/,
78
- /\bprocess\./,
79
- /\bglobal\./,
80
- /\bglobalThis\./,
81
- /\bwindow\./,
82
- /\bdocument\./,
83
- /\bchild_process/,
84
- /\bfs\./,
85
- /\bhttp\./,
86
- /\bhttps\./,
87
- /\bnet\./,
88
- /\bdns\./,
89
- /\bos\./,
90
- /\bexec\s*\(/,
91
- /\bspawn\s*\(/,
92
- /__proto__/,
93
- /\bconstructor\b/,
94
- /\bgetPrototypeOf\b/,
191
+ { pattern: /\beval\s*\(/, label: 'eval()' },
192
+ { pattern: /\bnew\s+Function\s*\(/, label: 'new Function()' },
193
+ { pattern: /\bFunction\s*\.\s*prototype/, label: 'Function.prototype' },
194
+ { pattern: /\bimport\s*\(/, label: 'dynamic import()' },
195
+ { pattern: /\brequire\s*\(/, label: 'require()' },
196
+ { pattern: /\bprocess\s*[[.]/, label: 'process access' },
197
+ { pattern: /\bglobal\s*[[.]/, label: 'global access' },
198
+ { pattern: /\bglobalThis\s*[[.]/, label: 'globalThis access' },
199
+ { pattern: /\bwindow\s*[[.]/, label: 'window access' },
200
+ { pattern: /\bdocument\s*[[.]/, label: 'document access' },
201
+ { pattern: /\bchild_process\b/, label: 'child_process' },
202
+ { pattern: /\brequire\s*\(\s*['"]fs['"]/, label: 'fs module' },
203
+ { pattern: /\brequire\s*\(\s*['"]net['"]/, label: 'net module' },
204
+ { pattern: /\brequire\s*\(\s*['"]dns['"]/, label: 'dns module' },
205
+ { pattern: /\brequire\s*\(\s*['"]http['"]/, label: 'http module' },
206
+ { pattern: /\brequire\s*\(\s*['"]https['"]/, label: 'https module' },
207
+ { pattern: /\brequire\s*\(\s*['"]os['"]/, label: 'os module' },
208
+ { pattern: /\bspawn\s*\(/, label: 'spawn()' },
209
+ { pattern: /\bexecSync\s*\(/, label: 'execSync()' },
210
+ { pattern: /\bexecFile\s*\(/, label: 'execFile()' },
211
+ { pattern: /__proto__/, label: '__proto__' },
212
+ { pattern: /\.\s*constructor\s*[[.(]/, label: 'constructor access' },
213
+ { pattern: /\bgetPrototypeOf\s*\(/, label: 'getPrototypeOf()' },
214
+ { pattern: /\bsetPrototypeOf\s*\(/, label: 'setPrototypeOf()' },
215
+ { pattern: /\bReflect\s*[[.]/, label: 'Reflect access' },
216
+ { pattern: /\bProxy\s*[[.(]/, label: 'Proxy access' },
217
+ { pattern: /\bSymbol\s*\.\s*for\s*\(/, label: 'Symbol.for()' },
218
+ { pattern: /\bSharedArrayBuffer\b/, label: 'SharedArrayBuffer' },
219
+ { pattern: /\bAtomics\b/, label: 'Atomics' },
220
+ { pattern: /\bWeakRef\b/, label: 'WeakRef' },
221
+ { pattern: /\bFinalizationRegistry\b/, label: 'FinalizationRegistry' },
95
222
  ];
96
223
  if (this.config.isolationLevel === 'strict') {
97
- forbidden.push(/\bfetch\s*\(/, /\bXMLHttpRequest/, /\bWebSocket/, /\bsetTimeout\s*\(/, /\bsetInterval\s*\(/);
224
+ forbidden.push({ pattern: /\bfetch\s*\(/, label: 'fetch()' }, { pattern: /\bXMLHttpRequest\b/, label: 'XMLHttpRequest' }, { pattern: /\bWebSocket\b/, label: 'WebSocket' }, { pattern: /\bsetTimeout\s*\(/, label: 'setTimeout()' }, { pattern: /\bsetInterval\s*\(/, label: 'setInterval()' });
98
225
  }
99
- for (const pattern of forbidden) {
226
+ for (const { pattern, label } of forbidden) {
100
227
  if (pattern.test(code)) {
101
- throw new Error(`Security violation: forbidden pattern detected - ${pattern.source}`);
228
+ throw new Error(`Security violation: forbidden pattern detected - ${label}`);
229
+ }
230
+ }
231
+ const bracketGlobalAccess = /\b(?:global|globalThis|process|window|document)\s*\[\s*['"`]/;
232
+ if (bracketGlobalAccess.test(code)) {
233
+ throw new Error('Security violation: bracket notation access to global objects');
234
+ }
235
+ const stringConcatEscape = /['"`]\s*\+\s*['"`]/;
236
+ if (stringConcatEscape.test(code)) {
237
+ const concatenated = code.replace(/['"`]\s*\+\s*['"`]/g, '');
238
+ for (const { pattern, label } of forbidden) {
239
+ if (pattern.test(concatenated)) {
240
+ throw new Error(`Security violation: obfuscated forbidden pattern detected - ${label}`);
241
+ }
102
242
  }
103
243
  }
104
244
  const lines = code.split('\n').length;
@@ -106,77 +246,67 @@ export class ToolSandbox {
106
246
  throw new Error(`Implementation too large: ${lines} lines (max 200)`);
107
247
  }
108
248
  }
109
- createContext() {
110
- return {
111
- console: {
112
- log: (...args) => {
113
- this.logs.push(`[LOG] ${args.map(String).join(' ')}`);
114
- },
115
- warn: (...args) => {
116
- this.logs.push(`[WARN] ${args.map(String).join(' ')}`);
117
- },
118
- error: (...args) => {
119
- this.logs.push(`[ERROR] ${args.map(String).join(' ')}`);
120
- },
121
- },
122
- Math,
123
- JSON,
124
- Date,
125
- Array,
126
- Object,
127
- String,
128
- Number,
129
- Boolean,
130
- RegExp,
131
- Map,
132
- Set,
133
- Promise,
134
- Error,
135
- TypeError,
136
- RangeError,
137
- };
138
- }
139
- wrapImplementation(code) {
140
- return `
141
- "use strict";
142
- return (async function sandboxedExecution(params, context) {
143
- const { console, Math, JSON, Date, Array, Object, String, Number, Boolean, RegExp, Map, Set, Promise, Error, TypeError, RangeError } = context;
144
-
145
- ${code}
146
-
147
- if (typeof execute === 'function') {
148
- return await execute(params);
149
- }
150
- throw new Error('Implementation must define an execute function');
151
- });
152
- `;
153
- }
154
- async executeWithTimeout(wrappedCode, context, params, timeout) {
155
- return new Promise((resolve, reject) => {
249
+ executeInWorker(code, paramsJson, startTime) {
250
+ return new Promise((resolve) => {
251
+ let settled = false;
252
+ let worker;
253
+ const settle = (result, thrownByTool = false) => {
254
+ if (settled)
255
+ return;
256
+ settled = true;
257
+ clearTimeout(timer);
258
+ if (worker)
259
+ void worker.terminate();
260
+ resolve({ result, thrownByTool });
261
+ };
156
262
  const timer = setTimeout(() => {
157
- reject(new Error(`Execution timeout: exceeded ${timeout}ms`));
158
- }, timeout);
263
+ settle(failure(`Execution timeout: exceeded ${this.config.maxExecutionTime}ms`, startTime));
264
+ }, this.config.maxExecutionTime);
265
+ const maxMemoryMb = Math.max(4, Math.ceil(this.config.maxMemory / (1024 * 1024)));
159
266
  try {
160
- // eslint-disable-next-line @typescript-eslint/no-implied-eval
161
- const factory = new Function(wrappedCode);
162
- const executor = factory();
163
- Promise.resolve(executor(params, context))
164
- .then((result) => {
165
- clearTimeout(timer);
166
- resolve(result);
167
- })
168
- .catch((error) => {
169
- clearTimeout(timer);
170
- reject(error instanceof Error ? error : new Error(String(error)));
267
+ worker = new Worker(WORKER_SOURCE, {
268
+ eval: true,
269
+ env: {},
270
+ workerData: { code, paramsJson, timeout: this.config.maxExecutionTime },
271
+ resourceLimits: {
272
+ maxOldGenerationSizeMb: maxMemoryMb,
273
+ maxYoungGenerationSizeMb: Math.max(2, Math.ceil(maxMemoryMb / 4)),
274
+ },
171
275
  });
172
276
  }
173
277
  catch (error) {
174
- clearTimeout(timer);
175
- reject(error instanceof Error ? error : new Error(String(error)));
278
+ settle(failure(`Failed to create sandbox worker: ${error instanceof Error ? error.message : String(error)}`, startTime));
279
+ return;
176
280
  }
281
+ worker.on('message', (msg) => {
282
+ const logs = msg.logs ?? [];
283
+ if (msg.success) {
284
+ settle({
285
+ success: true,
286
+ result: msg.result,
287
+ executionTime: Date.now() - startTime,
288
+ memoryUsed: estimateMemoryUsage(msg.result),
289
+ logs,
290
+ });
291
+ }
292
+ else {
293
+ settle({ ...failure(msg.error ?? 'Tool execution failed', startTime), logs }, msg.thrown);
294
+ }
295
+ });
296
+ worker.on('error', (error) => {
297
+ settle(failure(error.code === 'ERR_WORKER_OUT_OF_MEMORY'
298
+ ? `Execution exceeded memory limit (${this.config.maxMemory} bytes)`
299
+ : `Sandbox worker error: ${error.message}`, startTime));
300
+ });
301
+ worker.on('exit', (exitCode) => {
302
+ settle(failure(exitCode === 134 || exitCode === 137
303
+ ? `Execution exceeded memory limit (${this.config.maxMemory} bytes)`
304
+ : `Sandbox worker exited with code ${exitCode} before reporting a result`, startTime));
305
+ });
177
306
  });
178
307
  }
179
308
  async executeUnsandboxed(tool, params, startTime) {
309
+ let timer;
180
310
  try {
181
311
  // eslint-disable-next-line @typescript-eslint/no-implied-eval
182
312
  const factory = new Function(`
@@ -185,59 +315,119 @@ export class ToolSandbox {
185
315
  return execute;
186
316
  `);
187
317
  const execute = factory();
318
+ if (typeof execute !== 'function') {
319
+ return {
320
+ result: failure('Implementation must define an execute function', startTime),
321
+ thrownByTool: false,
322
+ };
323
+ }
324
+ const timeout = new Promise((_, reject) => {
325
+ timer = setTimeout(() => reject(new SandboxTimeoutError(this.config.maxExecutionTime)), this.config.maxExecutionTime);
326
+ });
188
327
  const result = await Promise.race([
189
328
  execute(params),
190
- new Promise((_, reject) => setTimeout(() => reject(new Error(`Execution timeout: exceeded ${this.config.maxExecutionTime}ms`)), this.config.maxExecutionTime)),
329
+ timeout,
191
330
  ]);
192
331
  return {
193
- success: true,
194
- result,
195
- executionTime: Date.now() - startTime,
196
- memoryUsed: this.estimateMemoryUsage(result),
197
- logs: [],
332
+ result: {
333
+ success: true,
334
+ result,
335
+ executionTime: Date.now() - startTime,
336
+ memoryUsed: estimateMemoryUsage(result),
337
+ logs: [],
338
+ },
339
+ thrownByTool: false,
198
340
  };
199
341
  }
200
342
  catch (error) {
201
343
  return {
202
- success: false,
203
- error: error instanceof Error ? error.message : String(error),
204
- executionTime: Date.now() - startTime,
205
- memoryUsed: 0,
206
- logs: [],
344
+ result: failure(error instanceof Error ? error.message : String(error), startTime),
345
+ thrownByTool: !(error instanceof SandboxTimeoutError),
207
346
  };
208
347
  }
209
- }
210
- estimateMemoryUsage(value) {
211
- try {
212
- const str = JSON.stringify(value);
213
- return str.length * 2;
214
- }
215
- catch {
216
- return 0;
348
+ finally {
349
+ clearTimeout(timer);
217
350
  }
218
351
  }
219
- deepEqual(a, b) {
220
- if (a === b)
221
- return true;
222
- if (typeof a !== typeof b)
352
+ }
353
+ class SandboxTimeoutError extends Error {
354
+ constructor(limit) {
355
+ super(`Execution timeout: exceeded ${limit}ms`);
356
+ this.name = 'SandboxTimeoutError';
357
+ }
358
+ }
359
+ function failure(error, startTime) {
360
+ return {
361
+ success: false,
362
+ error,
363
+ executionTime: Date.now() - startTime,
364
+ memoryUsed: 0,
365
+ logs: [],
366
+ };
367
+ }
368
+ function estimateMemoryUsage(value) {
369
+ try {
370
+ const str = JSON.stringify(value);
371
+ return str ? str.length * 2 : 0;
372
+ }
373
+ catch {
374
+ return 0;
375
+ }
376
+ }
377
+ export function deepEqual(a, b) {
378
+ return deepEqualInner(a, b, new Map());
379
+ }
380
+ function deepEqualInner(a, b, visited) {
381
+ if (Object.is(a, b))
382
+ return true;
383
+ if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null)
384
+ return false;
385
+ const pairs = visited.get(a);
386
+ if (pairs?.has(b))
387
+ return true;
388
+ if (pairs)
389
+ pairs.add(b);
390
+ else
391
+ visited.set(a, new Set([b]));
392
+ if (a instanceof Date || b instanceof Date) {
393
+ return a instanceof Date && b instanceof Date && a.getTime() === b.getTime();
394
+ }
395
+ if (a instanceof RegExp || b instanceof RegExp) {
396
+ return (a instanceof RegExp && b instanceof RegExp && a.source === b.source && a.flags === b.flags);
397
+ }
398
+ if (a instanceof Map || b instanceof Map) {
399
+ if (!(a instanceof Map && b instanceof Map) || a.size !== b.size)
223
400
  return false;
224
- if (a === null || b === null)
225
- return a === b;
226
- if (Array.isArray(a) && Array.isArray(b)) {
227
- if (a.length !== b.length)
401
+ for (const [key, val] of a) {
402
+ if (!b.has(key) || !deepEqualInner(val, b.get(key), visited))
228
403
  return false;
229
- return a.every((val, i) => this.deepEqual(val, b[i]));
230
- }
231
- if (typeof a === 'object' && typeof b === 'object') {
232
- const aObj = a;
233
- const bObj = b;
234
- const keysA = Object.keys(aObj);
235
- const keysB = Object.keys(bObj);
236
- if (keysA.length !== keysB.length)
404
+ }
405
+ return true;
406
+ }
407
+ if (a instanceof Set || b instanceof Set) {
408
+ if (!(a instanceof Set && b instanceof Set) || a.size !== b.size)
409
+ return false;
410
+ const unmatched = [...b];
411
+ for (const val of a) {
412
+ const idx = unmatched.findIndex((candidate) => deepEqualInner(val, candidate, visited));
413
+ if (idx === -1)
237
414
  return false;
238
- return keysA.every((key) => this.deepEqual(aObj[key], bObj[key]));
415
+ unmatched.splice(idx, 1);
239
416
  }
240
- return false;
417
+ return true;
241
418
  }
419
+ if (Array.isArray(a) || Array.isArray(b)) {
420
+ if (!(Array.isArray(a) && Array.isArray(b)) || a.length !== b.length)
421
+ return false;
422
+ return a.every((val, i) => deepEqualInner(val, b[i], visited));
423
+ }
424
+ const aObj = a;
425
+ const bObj = b;
426
+ const keysA = Object.keys(aObj).filter((k) => aObj[k] !== undefined);
427
+ const keysB = Object.keys(bObj).filter((k) => bObj[k] !== undefined);
428
+ if (keysA.length !== keysB.length)
429
+ return false;
430
+ return keysA.every((key) => Object.prototype.hasOwnProperty.call(bObj, key) &&
431
+ deepEqualInner(aObj[key], bObj[key], visited));
242
432
  }
243
433
  //# sourceMappingURL=tool-sandbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-sandbox.js","sourceRoot":"","sources":["../../src/tool-generation/tool-sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-sandbox.js","sourceRoot":"","sources":["../../src/tool-generation/tool-sandbox.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import type { GeneratedTool, ToolValidationResult, LLMBackend, ToolSelfGenerationConfig } from '@cogitator-ai/types';
2
+ import { type SandboxTestCase } from './tool-sandbox.js';
2
3
  export interface ToolValidatorOptions {
3
4
  llm?: LLMBackend;
4
5
  config: ToolSelfGenerationConfig;
5
6
  model?: string;
6
7
  }
7
- interface ValidationRule {
8
+ export interface ValidationRule {
8
9
  id: string;
9
10
  name: string;
10
11
  severity: 'error' | 'warning' | 'info';
@@ -17,18 +18,13 @@ export declare class ToolValidator {
17
18
  private readonly sandbox;
18
19
  private readonly customRules;
19
20
  constructor(options: ToolValidatorOptions);
20
- validate(tool: GeneratedTool, testCases?: Array<{
21
- input: unknown;
22
- expectedOutput?: unknown;
23
- shouldThrow?: boolean;
24
- }>): Promise<ToolValidationResult>;
21
+ validate(tool: GeneratedTool, testCases?: SandboxTestCase[]): Promise<ToolValidationResult>;
25
22
  addRule(rule: ValidationRule): void;
26
23
  private runStaticAnalysis;
27
24
  private runLLMValidation;
28
25
  private generateBasicTestCases;
29
26
  private generateSampleValue;
27
+ private generateEdgeValue;
30
28
  private calculateScore;
31
- private callLLM;
32
29
  }
33
- export {};
34
30
  //# sourceMappingURL=tool-validator.d.ts.map