@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.
- package/README.md +112 -48
- package/dist/architecture-evolution/capability-analyzer.d.ts.map +1 -1
- package/dist/architecture-evolution/capability-analyzer.js +44 -40
- package/dist/architecture-evolution/capability-analyzer.js.map +1 -1
- package/dist/architecture-evolution/evolution-strategy.d.ts.map +1 -1
- package/dist/architecture-evolution/evolution-strategy.js +4 -2
- package/dist/architecture-evolution/evolution-strategy.js.map +1 -1
- package/dist/architecture-evolution/index.d.ts +2 -2
- package/dist/architecture-evolution/index.d.ts.map +1 -1
- package/dist/architecture-evolution/index.js +1 -1
- package/dist/architecture-evolution/index.js.map +1 -1
- package/dist/architecture-evolution/parameter-optimizer.d.ts +5 -4
- package/dist/architecture-evolution/parameter-optimizer.d.ts.map +1 -1
- package/dist/architecture-evolution/parameter-optimizer.js +62 -34
- package/dist/architecture-evolution/parameter-optimizer.js.map +1 -1
- package/dist/architecture-evolution/prompts.d.ts +21 -2
- package/dist/architecture-evolution/prompts.d.ts.map +1 -1
- package/dist/architecture-evolution/prompts.js +189 -37
- package/dist/architecture-evolution/prompts.js.map +1 -1
- package/dist/constraints/modification-validator.d.ts +1 -0
- package/dist/constraints/modification-validator.d.ts.map +1 -1
- package/dist/constraints/modification-validator.js +45 -18
- package/dist/constraints/modification-validator.js.map +1 -1
- package/dist/constraints/rollback-manager.d.ts +1 -0
- package/dist/constraints/rollback-manager.d.ts.map +1 -1
- package/dist/constraints/rollback-manager.js +25 -1
- package/dist/constraints/rollback-manager.js.map +1 -1
- package/dist/events/event-emitter.d.ts +0 -1
- package/dist/events/event-emitter.d.ts.map +1 -1
- package/dist/events/event-emitter.js +6 -10
- package/dist/events/event-emitter.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/meta-reasoning/meta-reasoner.d.ts +4 -1
- package/dist/meta-reasoning/meta-reasoner.d.ts.map +1 -1
- package/dist/meta-reasoning/meta-reasoner.js +120 -43
- package/dist/meta-reasoning/meta-reasoner.js.map +1 -1
- package/dist/meta-reasoning/observation-collector.d.ts.map +1 -1
- package/dist/meta-reasoning/observation-collector.js +6 -2
- package/dist/meta-reasoning/observation-collector.js.map +1 -1
- package/dist/meta-reasoning/prompts.d.ts +10 -14
- package/dist/meta-reasoning/prompts.d.ts.map +1 -1
- package/dist/meta-reasoning/prompts.js +108 -33
- package/dist/meta-reasoning/prompts.js.map +1 -1
- package/dist/meta-reasoning/strategy-selector.d.ts.map +1 -1
- package/dist/meta-reasoning/strategy-selector.js +6 -0
- package/dist/meta-reasoning/strategy-selector.js.map +1 -1
- package/dist/self-modifying-agent.d.ts +88 -15
- package/dist/self-modifying-agent.d.ts.map +1 -1
- package/dist/self-modifying-agent.js +583 -376
- package/dist/self-modifying-agent.js.map +1 -1
- package/dist/tool-generation/gap-analyzer.d.ts +0 -1
- package/dist/tool-generation/gap-analyzer.d.ts.map +1 -1
- package/dist/tool-generation/gap-analyzer.js +16 -15
- package/dist/tool-generation/gap-analyzer.js.map +1 -1
- package/dist/tool-generation/generated-tool-store.d.ts.map +1 -1
- package/dist/tool-generation/generated-tool-store.js +90 -10
- package/dist/tool-generation/generated-tool-store.js.map +1 -1
- package/dist/tool-generation/index.d.ts +3 -3
- package/dist/tool-generation/index.d.ts.map +1 -1
- package/dist/tool-generation/index.js +2 -2
- package/dist/tool-generation/index.js.map +1 -1
- package/dist/tool-generation/prompts.d.ts +4 -3
- package/dist/tool-generation/prompts.d.ts.map +1 -1
- package/dist/tool-generation/prompts.js +96 -18
- package/dist/tool-generation/prompts.js.map +1 -1
- package/dist/tool-generation/tool-generator.d.ts +6 -6
- package/dist/tool-generation/tool-generator.d.ts.map +1 -1
- package/dist/tool-generation/tool-generator.js +88 -23
- package/dist/tool-generation/tool-generator.js.map +1 -1
- package/dist/tool-generation/tool-sandbox.d.ts +10 -11
- package/dist/tool-generation/tool-sandbox.d.ts.map +1 -1
- package/dist/tool-generation/tool-sandbox.js +346 -156
- package/dist/tool-generation/tool-sandbox.js.map +1 -1
- package/dist/tool-generation/tool-validator.d.ts +4 -8
- package/dist/tool-generation/tool-validator.d.ts.map +1 -1
- package/dist/tool-generation/tool-validator.js +74 -28
- package/dist/tool-generation/tool-validator.js.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +30 -5
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/llm-helper.d.ts.map +1 -1
- package/dist/utils/llm-helper.js +1 -0
- package/dist/utils/llm-helper.js.map +1 -1
- package/package.json +3 -12
- package/src/__tests__/component-regressions.test.ts +599 -0
- package/src/__tests__/meta-reasoning.test.ts +5 -1
- package/src/__tests__/sandbox-security.test.ts +186 -0
- package/src/__tests__/self-modifying-agent.test.ts +405 -11
- package/src/architecture-evolution/capability-analyzer.ts +63 -44
- package/src/architecture-evolution/evolution-strategy.ts +5 -2
- package/src/architecture-evolution/index.ts +2 -0
- package/src/architecture-evolution/parameter-optimizer.ts +82 -40
- package/src/architecture-evolution/prompts.ts +224 -42
- package/src/constraints/modification-validator.ts +48 -21
- package/src/constraints/rollback-manager.ts +20 -1
- package/src/events/event-emitter.ts +6 -15
- package/src/index.ts +14 -0
- package/src/meta-reasoning/meta-reasoner.ts +124 -52
- package/src/meta-reasoning/observation-collector.ts +6 -2
- package/src/meta-reasoning/prompts.ts +131 -56
- package/src/meta-reasoning/strategy-selector.ts +6 -0
- package/src/self-modifying-agent.ts +797 -413
- package/src/tool-generation/gap-analyzer.ts +21 -19
- package/src/tool-generation/generated-tool-store.ts +97 -10
- package/src/tool-generation/index.ts +13 -3
- package/src/tool-generation/prompts.ts +120 -18
- package/src/tool-generation/tool-generator.ts +120 -26
- package/src/tool-generation/tool-sandbox.ts +408 -206
- package/src/tool-generation/tool-validator.ts +90 -37
- package/src/utils/index.ts +29 -5
- 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
|
|
16
|
-
|
|
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.
|
|
47
|
-
let passed
|
|
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 &&
|
|
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
|
-
/\
|
|
75
|
-
/\
|
|
76
|
-
/\bimport\s*\(/,
|
|
77
|
-
/\brequire\s*\(/,
|
|
78
|
-
/\bprocess
|
|
79
|
-
/\bglobal
|
|
80
|
-
/\bglobalThis
|
|
81
|
-
/\bwindow
|
|
82
|
-
/\bdocument
|
|
83
|
-
/\bchild_process/,
|
|
84
|
-
/\
|
|
85
|
-
/\
|
|
86
|
-
/\
|
|
87
|
-
/\
|
|
88
|
-
/\
|
|
89
|
-
/\
|
|
90
|
-
/\
|
|
91
|
-
/\
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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 - ${
|
|
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
|
-
|
|
110
|
-
return {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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
|
-
|
|
158
|
-
},
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
175
|
-
|
|
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
|
-
|
|
329
|
+
timeout,
|
|
191
330
|
]);
|
|
192
331
|
return {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
|
|
203
|
-
|
|
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
|
-
|
|
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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
225
|
-
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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
|
-
|
|
415
|
+
unmatched.splice(idx, 1);
|
|
239
416
|
}
|
|
240
|
-
return
|
|
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?:
|
|
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
|