@cogitator-ai/self-modifying 19.2.1 → 19.3.1
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 +23 -6
- package/dist/architecture-evolution/capability-analyzer.d.ts +3 -0
- package/dist/architecture-evolution/capability-analyzer.d.ts.map +1 -1
- package/dist/architecture-evolution/capability-analyzer.js +3 -1
- package/dist/architecture-evolution/capability-analyzer.js.map +1 -1
- package/dist/architecture-evolution/parameter-optimizer.d.ts +6 -0
- package/dist/architecture-evolution/parameter-optimizer.d.ts.map +1 -1
- package/dist/architecture-evolution/parameter-optimizer.js +5 -2
- package/dist/architecture-evolution/parameter-optimizer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/self-modifying-agent.d.ts +6 -0
- package/dist/self-modifying-agent.d.ts.map +1 -1
- package/dist/self-modifying-agent.js +12 -2
- package/dist/self-modifying-agent.js.map +1 -1
- package/dist/tool-generation/gap-analyzer.d.ts +13 -4
- package/dist/tool-generation/gap-analyzer.d.ts.map +1 -1
- package/dist/tool-generation/gap-analyzer.js +5 -2
- package/dist/tool-generation/gap-analyzer.js.map +1 -1
- package/dist/tool-generation/index.d.ts +2 -2
- package/dist/tool-generation/index.d.ts.map +1 -1
- package/dist/tool-generation/index.js.map +1 -1
- package/dist/tool-generation/prompts.d.ts +7 -2
- package/dist/tool-generation/prompts.d.ts.map +1 -1
- package/dist/tool-generation/prompts.js +71 -13
- package/dist/tool-generation/prompts.js.map +1 -1
- package/dist/tool-generation/tool-generator.d.ts +6 -0
- package/dist/tool-generation/tool-generator.d.ts.map +1 -1
- package/dist/tool-generation/tool-generator.js +26 -2
- package/dist/tool-generation/tool-generator.js.map +1 -1
- package/dist/tool-generation/tool-sandbox.d.ts.map +1 -1
- package/dist/tool-generation/tool-sandbox.js +14 -2
- package/dist/tool-generation/tool-sandbox.js.map +1 -1
- package/dist/tool-generation/tool-validator.d.ts +16 -0
- package/dist/tool-generation/tool-validator.d.ts.map +1 -1
- package/dist/tool-generation/tool-validator.js +110 -17
- package/dist/tool-generation/tool-validator.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/sandbox-security.test.ts +12 -0
- package/src/__tests__/self-modifying-agent.test.ts +52 -0
- package/src/__tests__/tool-generation.test.ts +22 -0
- package/src/__tests__/tool-review-regressions.test.ts +473 -0
- package/src/architecture-evolution/capability-analyzer.ts +5 -1
- package/src/architecture-evolution/parameter-optimizer.ts +10 -2
- package/src/index.ts +2 -0
- package/src/self-modifying-agent.ts +18 -2
- package/src/tool-generation/gap-analyzer.ts +24 -11
- package/src/tool-generation/index.ts +2 -1
- package/src/tool-generation/prompts.ts +78 -14
- package/src/tool-generation/tool-generator.ts +33 -2
- package/src/tool-generation/tool-sandbox.ts +14 -2
- package/src/tool-generation/tool-validator.ts +121 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-validator.d.ts","sourceRoot":"","sources":["../../src/tool-generation/tool-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAInE,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-validator.d.ts","sourceRoot":"","sources":["../../src/tool-generation/tool-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAInE,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,GAAG,IAAI,CAAC;CAC7D;AAiLD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;gBAExC,OAAO,EAAE,oBAAoB;IAQzC;;;;;;;;;;OAUG;IACG,QAAQ,CACZ,IAAI,EAAE,aAAa,EACnB,SAAS,CAAC,EAAE,eAAe,EAAE,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IA0FhC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAInC,OAAO,CAAC,iBAAiB;YAsBX,gBAAgB;IAyC9B,sGAAsG;IACtG,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,sBAAsB;IAoD9B,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,cAAc;CAsBvB"}
|
|
@@ -137,18 +137,83 @@ const STATIC_VALIDATION_RULES = [
|
|
|
137
137
|
},
|
|
138
138
|
},
|
|
139
139
|
];
|
|
140
|
+
/** Edge cases and approved review notes lower the score, but never below a passing grade on their own. */
|
|
141
|
+
const MAX_ADVISORY_PENALTY = 0.3;
|
|
142
|
+
function isRecord(value) {
|
|
143
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
144
|
+
}
|
|
145
|
+
function primaryType(type) {
|
|
146
|
+
return Array.isArray(type) ? type.find((t) => t !== 'null') : type;
|
|
147
|
+
}
|
|
148
|
+
function matchesType(value, type) {
|
|
149
|
+
if (type === undefined)
|
|
150
|
+
return true;
|
|
151
|
+
const types = Array.isArray(type) ? type : [type];
|
|
152
|
+
return types.some((t) => {
|
|
153
|
+
switch (t) {
|
|
154
|
+
case 'string':
|
|
155
|
+
return typeof value === 'string';
|
|
156
|
+
case 'number':
|
|
157
|
+
return typeof value === 'number' && Number.isFinite(value);
|
|
158
|
+
case 'integer':
|
|
159
|
+
return Number.isInteger(value);
|
|
160
|
+
case 'boolean':
|
|
161
|
+
return typeof value === 'boolean';
|
|
162
|
+
case 'array':
|
|
163
|
+
return Array.isArray(value);
|
|
164
|
+
case 'object':
|
|
165
|
+
return isRecord(value);
|
|
166
|
+
case 'null':
|
|
167
|
+
return value === null;
|
|
168
|
+
default:
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/** Whether an input has every required parameter, no unknown one, and values of the declared types. */
|
|
174
|
+
function fitsSchema(input, parameters) {
|
|
175
|
+
const properties = isRecord(parameters.properties)
|
|
176
|
+
? parameters.properties
|
|
177
|
+
: {};
|
|
178
|
+
const required = Array.isArray(parameters.required) ? parameters.required : [];
|
|
179
|
+
if (required.some((key) => typeof key === 'string' && !(key in input)))
|
|
180
|
+
return false;
|
|
181
|
+
if (Object.keys(properties).length === 0)
|
|
182
|
+
return true;
|
|
183
|
+
return Object.entries(input).every(([key, value]) => {
|
|
184
|
+
const schema = properties[key];
|
|
185
|
+
return schema !== undefined && matchesType(value, schema.type);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/** A review approves when it calls the tool valid and does not ask for a revision or a rejection. */
|
|
189
|
+
function approves(review) {
|
|
190
|
+
return review.isValid && (review.recommendation ?? 'approve') === 'approve';
|
|
191
|
+
}
|
|
140
192
|
export class ToolValidator {
|
|
141
193
|
llm;
|
|
142
194
|
config;
|
|
143
195
|
model;
|
|
196
|
+
maxTokens;
|
|
144
197
|
sandbox;
|
|
145
198
|
customRules = [];
|
|
146
199
|
constructor(options) {
|
|
147
200
|
this.llm = options.llm;
|
|
201
|
+
this.maxTokens = options.maxTokens;
|
|
148
202
|
this.config = options.config;
|
|
149
203
|
this.model = requireModelForLLM(options.llm, options.model, 'ToolValidator');
|
|
150
204
|
this.sandbox = new ToolSandbox(options.config.sandboxConfig);
|
|
151
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* Grades a tool. Static security checks and sandbox test failures are authoritative: either
|
|
208
|
+
* makes the tool invalid whatever a review says. When `requireLLMValidation` is on, the
|
|
209
|
+
* reviewer's verdict decides the rest: an approving review keeps its security and logic
|
|
210
|
+
* notes as suggestions, while a review that recommends a revision or rejects the tool makes
|
|
211
|
+
* it invalid and its findings become the issues to fix.
|
|
212
|
+
*
|
|
213
|
+
* Without `testCases`, the tool runs on the example inputs it was generated with (they must
|
|
214
|
+
* succeed) and on inputs synthesized from its parameters schema (they only prove the tool
|
|
215
|
+
* runs: a descriptive error is accepted).
|
|
216
|
+
*/
|
|
152
217
|
async validate(tool, testCases) {
|
|
153
218
|
const securityIssues = [];
|
|
154
219
|
const logicIssues = [];
|
|
@@ -168,7 +233,10 @@ export class ToolValidator {
|
|
|
168
233
|
overallScore: 0,
|
|
169
234
|
};
|
|
170
235
|
}
|
|
171
|
-
const effectiveTestCases = testCases
|
|
236
|
+
const effectiveTestCases = testCases ?? [
|
|
237
|
+
...this.exampleTestCases(tool),
|
|
238
|
+
...this.generateBasicTestCases(tool),
|
|
239
|
+
];
|
|
172
240
|
const sandboxResult = await this.sandbox.testWithCases(tool, effectiveTestCases);
|
|
173
241
|
const testResults = sandboxResult.results.map((r) => ({
|
|
174
242
|
input: r.input,
|
|
@@ -180,18 +248,32 @@ export class ToolValidator {
|
|
|
180
248
|
const failedTests = sandboxResult.results.filter((r) => !r.passed);
|
|
181
249
|
logicIssues.push(...failedTests.map((t) => `Test failed for input ${JSON.stringify(t.input)}: ${t.error || 'unexpected output'}`));
|
|
182
250
|
}
|
|
251
|
+
let advisoryNotes = 0;
|
|
183
252
|
if (this.llm && this.config.requireLLMValidation) {
|
|
184
|
-
const
|
|
185
|
-
if (
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
253
|
+
const review = await this.runLLMValidation(tool, effectiveTestCases);
|
|
254
|
+
if (review) {
|
|
255
|
+
edgeCases.push(...review.edgeCases);
|
|
256
|
+
suggestions.push(...review.suggestions);
|
|
257
|
+
if (approves(review)) {
|
|
258
|
+
const notes = [
|
|
259
|
+
...review.securityIssues.map((issue) => `Review note (security): ${issue}`),
|
|
260
|
+
...review.logicIssues.map((issue) => `Review note (logic): ${issue}`),
|
|
261
|
+
];
|
|
262
|
+
advisoryNotes = notes.length;
|
|
263
|
+
suggestions.push(...notes);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
securityIssues.push(...review.securityIssues);
|
|
267
|
+
logicIssues.push(...review.logicIssues);
|
|
268
|
+
if (review.securityIssues.length === 0 && review.logicIssues.length === 0) {
|
|
269
|
+
logicIssues.push(`The review recommends to ${review.recommendation ?? 'reject'} the tool without naming an issue: check it against its description`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
190
272
|
}
|
|
191
273
|
}
|
|
192
|
-
const score = this.calculateScore(securityIssues.length, logicIssues.length, edgeCases.length, sandboxResult.passed, sandboxResult.failed);
|
|
274
|
+
const score = this.calculateScore(securityIssues.length, logicIssues.length, edgeCases.length + advisoryNotes, sandboxResult.passed, sandboxResult.failed);
|
|
193
275
|
return {
|
|
194
|
-
isValid: securityIssues.length === 0 && logicIssues.length === 0
|
|
276
|
+
isValid: securityIssues.length === 0 && logicIssues.length === 0,
|
|
195
277
|
securityIssues: [...new Set(securityIssues)],
|
|
196
278
|
logicIssues: [...new Set(logicIssues)],
|
|
197
279
|
edgeCases: [...new Set(edgeCases)],
|
|
@@ -242,13 +324,24 @@ Analyze code for security vulnerabilities, logic errors, and edge cases.
|
|
|
242
324
|
Be thorough but practical - focus on real issues.`,
|
|
243
325
|
},
|
|
244
326
|
{ role: 'user', content: prompt },
|
|
245
|
-
], { model: this.model, temperature: 0.2 });
|
|
327
|
+
], { model: this.model, temperature: 0.2, maxTokens: this.maxTokens });
|
|
246
328
|
return parseValidationResponse(content);
|
|
247
329
|
}
|
|
248
330
|
catch {
|
|
249
331
|
return null;
|
|
250
332
|
}
|
|
251
333
|
}
|
|
334
|
+
/** The example inputs the tool was generated with that fit its schema, as cases that must succeed. */
|
|
335
|
+
exampleTestCases(tool) {
|
|
336
|
+
const examples = tool.metadata?.examples;
|
|
337
|
+
if (!Array.isArray(examples))
|
|
338
|
+
return [];
|
|
339
|
+
return examples.flatMap((example) => {
|
|
340
|
+
if (!isRecord(example) || !isRecord(example.input))
|
|
341
|
+
return [];
|
|
342
|
+
return fitsSchema(example.input, tool.parameters) ? [{ input: example.input }] : [];
|
|
343
|
+
});
|
|
344
|
+
}
|
|
252
345
|
generateBasicTestCases(tool) {
|
|
253
346
|
const params = tool.parameters;
|
|
254
347
|
if (params.type !== 'object' || !params.properties || typeof params.properties !== 'object') {
|
|
@@ -260,11 +353,11 @@ Be thorough but practical - focus on real issues.`,
|
|
|
260
353
|
: []);
|
|
261
354
|
const entries = Object.entries(properties);
|
|
262
355
|
const testCases = [];
|
|
263
|
-
const
|
|
356
|
+
const sampleInput = {};
|
|
264
357
|
for (const [key, schema] of entries) {
|
|
265
|
-
|
|
358
|
+
sampleInput[key] = this.generateSampleValue(schema);
|
|
266
359
|
}
|
|
267
|
-
testCases.push({ input:
|
|
360
|
+
testCases.push({ input: sampleInput, allowThrow: true });
|
|
268
361
|
const hasOptional = entries.some(([key]) => !required.has(key));
|
|
269
362
|
if (required.size > 0 && hasOptional) {
|
|
270
363
|
const requiredOnlyInput = {};
|
|
@@ -273,11 +366,11 @@ Be thorough but practical - focus on real issues.`,
|
|
|
273
366
|
requiredOnlyInput[key] = this.generateSampleValue(schema);
|
|
274
367
|
}
|
|
275
368
|
}
|
|
276
|
-
testCases.push({ input: requiredOnlyInput });
|
|
369
|
+
testCases.push({ input: requiredOnlyInput, allowThrow: true });
|
|
277
370
|
}
|
|
278
371
|
const edgeInput = {};
|
|
279
372
|
for (const [key, schema] of entries) {
|
|
280
|
-
edgeInput[key] = this.generateEdgeValue(schema.type);
|
|
373
|
+
edgeInput[key] = this.generateEdgeValue(primaryType(schema.type));
|
|
281
374
|
}
|
|
282
375
|
testCases.push({ input: edgeInput, allowThrow: true });
|
|
283
376
|
if (required.size > 0) {
|
|
@@ -298,7 +391,7 @@ Be thorough but practical - focus on real issues.`,
|
|
|
298
391
|
return schema.examples[0];
|
|
299
392
|
if (Array.isArray(schema.enum) && schema.enum.length > 0)
|
|
300
393
|
return schema.enum[0];
|
|
301
|
-
switch (schema.type) {
|
|
394
|
+
switch (primaryType(schema.type)) {
|
|
302
395
|
case 'string':
|
|
303
396
|
return 'test';
|
|
304
397
|
case 'number':
|
|
@@ -337,7 +430,7 @@ Be thorough but practical - focus on real issues.`,
|
|
|
337
430
|
return 0;
|
|
338
431
|
let score = 1.0;
|
|
339
432
|
score -= logicCount * 0.2;
|
|
340
|
-
score -= edgeCaseCount * 0.05;
|
|
433
|
+
score -= Math.min(MAX_ADVISORY_PENALTY, edgeCaseCount * 0.05);
|
|
341
434
|
const totalTests = testsPassed + testsFailed;
|
|
342
435
|
if (totalTests > 0) {
|
|
343
436
|
const testScore = testsPassed / totalTests;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-validator.js","sourceRoot":"","sources":["../../src/tool-generation/tool-validator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAwB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAsBlE,MAAM,uBAAuB,GAAqB;IAChD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,mCAAmC;QACzC,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,aAAa,CAAC;YACnD,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,2BAA2B,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,uBAAuB,CAAC;YAC/D,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,gBAAgB,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,yBAAyB,CAAC;YAC/D,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,wBAAwB,CAAC;YAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,qBAAqB,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,OAAO,gBAAgB,CAAC;YACxD,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,oBAAoB,CAAC;YAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBAAE,OAAO,qBAAqB,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnE,OAAO,oCAAoC,CAAC;YAC9C,CAAC;YACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClE,OAAO,gCAAgC,CAAC;YAC1C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,MAAM,QAAQ,GAAG;gBACf,sCAAsC;gBACtC,uCAAuC;gBACvC,6CAA6C;gBAC7C,qCAAqC;gBACrC,+BAA+B;aAChC,CAAC;YACF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACxD,CAAC;KACF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACtC,IAAI,KAAK,GAAG,GAAG;gBAAE,OAAO,aAAa,KAAK,4BAA4B,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAE,OAAO,oBAAoB,CAAC;YAChE,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,aAAa,CAAC;YAC5D,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,cAAc,CAAC;YAC9D,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,4BAA4B,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,gBAAgB,CAAC;YACjD,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,+BAA+B,CAAC;YACpF,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,0BAA0B,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,OAAO,yCAAyC,CAAC;YACnD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF;CACF,CAAC;AAEF,MAAM,OAAO,aAAa;IACP,GAAG,CAAc;IACjB,MAAM,CAA2B;IACjC,KAAK,CAAS;IACd,OAAO,CAAc;IACrB,WAAW,GAAqB,EAAE,CAAC;IAEpD,YAAY,OAA6B;QACvC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAAmB,EACnB,SAA6B;QAE7B,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAClD,cAAc,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5C,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,cAAc;gBACd,WAAW;gBACX,SAAS;gBACT,WAAW;gBACX,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,CAAC;aAChB,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,SAAS,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAEjF,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;QAEJ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACnE,WAAW,CAAC,IAAI,CACd,GAAG,WAAW,CAAC,GAAG,CAChB,CAAC,CAAC,EAAE,EAAE,CACJ,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,mBAAmB,EAAE,CACxF,CACF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YACxE,IAAI,SAAS,EAAE,CAAC;gBACd,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;gBACjD,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC3C,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;gBACvC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAC/B,cAAc,CAAC,MAAM,EACrB,WAAW,CAAC,MAAM,EAClB,SAAS,CAAC,MAAM,EAChB,aAAa,CAAC,MAAM,EACpB,aAAa,CAAC,MAAM,CACrB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG;YAChF,cAAc,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5C,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;YACtC,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;YAClC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;YACtC,WAAW;YACX,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAoB;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,iBAAiB,CAAC,IAAmB;QAI3C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAEnE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,IAAmB,EACnB,SAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,yBAAyB,CACtC,IAAI,EACJ,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrB,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,gBAAgB,EAAE,EAAE,CAAC,cAAc;oBACjC,CAAC,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE;oBACtD,CAAC,CAAC,EAAE,CAAC,WAAW;wBACd,CAAC,CAAC,uBAAuB;wBACzB,CAAC,CAAC,EAAE,CAAC,UAAU;4BACb,CAAC,CAAC,4DAA4D;4BAC9D,CAAC,CAAC,6BAA6B;aACtC,CAAC,CAAC,CACJ,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,IAAI,CAAC,GAAG,EACR;gBACE;oBACE,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;;kDAE6B;iBACvC;gBACD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;aAClC,EACD,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,CACxC,CAAC;YAEF,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,IAAmB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAE/B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5F,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAgD,CAAC;QAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YACnE,CAAC,CAAC,EAAE,CACP,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAsB,EAAE,CAAC;QAExC,MAAM,UAAU,GAA4B,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,iBAAiB,GAA4B,EAAE,CAAC;YACtD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,iBAAiB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,eAAe,GAA4B,EAAE,CAAC;YACpD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,mBAAmB,CAAC,MAA0B;QACpD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC;QACxD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEhF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS;gBACZ,OAAO,EAAE,CAAC;YACZ,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC;YACd,KAAK,OAAO;gBACV,OAAO,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,OAAO,EAAE,CAAC;YACZ;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,IAAa;QACrC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,OAAO,CAAC,CAAC;YACX,KAAK,SAAS;gBACZ,OAAO,CAAC,CAAC,CAAC;YACZ,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,KAAK,QAAQ;gBACX,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC9B;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,cAAc,CACpB,aAAqB,EACrB,UAAkB,EAClB,aAAqB,EACrB,WAAmB,EACnB,WAAmB;QAEnB,IAAI,aAAa,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QAEhC,IAAI,KAAK,GAAG,GAAG,CAAC;QAEhB,KAAK,IAAI,UAAU,GAAG,GAAG,CAAC;QAC1B,KAAK,IAAI,aAAa,GAAG,IAAI,CAAC;QAE9B,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;QAC7C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;YAC3C,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"tool-validator.js","sourceRoot":"","sources":["../../src/tool-generation/tool-validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/self-modifying",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.3.1",
|
|
4
4
|
"description": "Self-modifying agent capabilities for Cogitator - tool generation, meta-reasoning, architecture evolution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"node": ">=22.12.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@cogitator-ai/types": "0.
|
|
23
|
+
"@cogitator-ai/types": "0.30.0",
|
|
24
24
|
"nanoid": "^6.0.1",
|
|
25
25
|
"zod": "^4.6.5"
|
|
26
26
|
},
|
|
@@ -134,6 +134,18 @@ describe('ToolSandbox.testWithCases', () => {
|
|
|
134
134
|
|
|
135
135
|
expect(results.map((r) => r.passed)).toEqual([true, true, true, false, false]);
|
|
136
136
|
});
|
|
137
|
+
|
|
138
|
+
it('does not count code that fails to compile as an error thrown by the tool', async () => {
|
|
139
|
+
const tool = makeTool(String.raw`async function execute(params) {\n return params.text;\n}`);
|
|
140
|
+
|
|
141
|
+
const { results } = await sandbox.testWithCases(tool, [
|
|
142
|
+
{ input: { text: 'a' }, allowThrow: true },
|
|
143
|
+
{ input: { text: 'a' }, shouldThrow: true },
|
|
144
|
+
]);
|
|
145
|
+
|
|
146
|
+
expect(results.map((r) => r.passed)).toEqual([false, false]);
|
|
147
|
+
expect(results[0]?.error).toMatch(/^Tool code does not compile/);
|
|
148
|
+
});
|
|
137
149
|
});
|
|
138
150
|
|
|
139
151
|
describe('ToolSandbox without isolation', () => {
|
|
@@ -497,6 +497,58 @@ describe('SelfModifyingAgent tool generation', () => {
|
|
|
497
497
|
expect.objectContaining({ success: false, error: 'Rejected by modification constraints' }),
|
|
498
498
|
]);
|
|
499
499
|
});
|
|
500
|
+
|
|
501
|
+
it('shows the next gap analysis what a generated tool does, and the agent instructions', async () => {
|
|
502
|
+
const gap = JSON.stringify({
|
|
503
|
+
hasGap: true,
|
|
504
|
+
gaps: [
|
|
505
|
+
{
|
|
506
|
+
id: 'gap_crc',
|
|
507
|
+
description: 'No available tool can compute a CRC-32 checksum',
|
|
508
|
+
requiredCapability: 'CRC-32 checksum of a text',
|
|
509
|
+
suggestedToolName: 'crc32_calculator',
|
|
510
|
+
complexity: 'simple',
|
|
511
|
+
confidence: 0.95,
|
|
512
|
+
},
|
|
513
|
+
],
|
|
514
|
+
canProceed: false,
|
|
515
|
+
});
|
|
516
|
+
const tool = JSON.stringify({
|
|
517
|
+
name: 'crc32_calculator',
|
|
518
|
+
description: 'No available tool can compute a CRC-32 checksum',
|
|
519
|
+
implementation:
|
|
520
|
+
"async function execute(params) { if (typeof params.text !== 'string') { throw new Error('text must be a string'); } return params.text.length; }",
|
|
521
|
+
parameters: { type: 'object', properties: { text: { type: 'string' } }, required: ['text'] },
|
|
522
|
+
});
|
|
523
|
+
const llm = routedLLM({ gap, tool, agent: () => chatResponse('done') });
|
|
524
|
+
const agent = {
|
|
525
|
+
...createMockAgent(),
|
|
526
|
+
instructions: 'Never compute checksums yourself: always call a tool.',
|
|
527
|
+
} as Agent;
|
|
528
|
+
const selfMod = new SelfModifyingAgent({
|
|
529
|
+
agent,
|
|
530
|
+
llm,
|
|
531
|
+
config: {
|
|
532
|
+
toolGeneration: { requireLLMValidation: false },
|
|
533
|
+
metaReasoning: { enabled: false },
|
|
534
|
+
architectureEvolution: { enabled: false },
|
|
535
|
+
maxInternalTokens: 800,
|
|
536
|
+
},
|
|
537
|
+
});
|
|
538
|
+
|
|
539
|
+
await selfMod.run('CRC-32 of "abc"?');
|
|
540
|
+
llm.chat.mockClear();
|
|
541
|
+
await selfMod.run('CRC-32 of "xyz"?');
|
|
542
|
+
|
|
543
|
+
const gapRequest = llm.chat.mock.calls
|
|
544
|
+
.map((call) => call[0] as ChatRequest)
|
|
545
|
+
.find((request) => String(request.messages[0]?.content).includes('capability analyzer'));
|
|
546
|
+
const prompt = String(gapRequest?.messages[1]?.content);
|
|
547
|
+
expect(prompt).toContain('- crc32_calculator: CRC-32 checksum of a text');
|
|
548
|
+
expect(prompt).not.toContain('crc32_calculator: No available tool');
|
|
549
|
+
expect(prompt).toContain('Never compute checksums yourself: always call a tool.');
|
|
550
|
+
expect(gapRequest?.maxTokens).toBe(800);
|
|
551
|
+
});
|
|
500
552
|
});
|
|
501
553
|
|
|
502
554
|
describe('SelfModifyingAgent meta-reasoning', () => {
|
|
@@ -498,4 +498,26 @@ describe('Parsing functions', () => {
|
|
|
498
498
|
expect(parsed).not.toBeNull();
|
|
499
499
|
expect(parsed?.name).toBe('calculator');
|
|
500
500
|
});
|
|
501
|
+
|
|
502
|
+
it('unescapes an implementation the model escaped twice', () => {
|
|
503
|
+
const escaped = String.raw`async function execute(params) {\n if (!params.text) throw new Error(\"text is required\");\n return params.text.split('').reverse().join('');\n}`;
|
|
504
|
+
|
|
505
|
+
const parsed = parseToolGenerationResponse(
|
|
506
|
+
JSON.stringify({ name: 'reverse_string', implementation: escaped })
|
|
507
|
+
);
|
|
508
|
+
|
|
509
|
+
expect(parsed?.implementation).toBe(
|
|
510
|
+
"async function execute(params) {\n if (!params.text) throw new Error(\"text is required\");\n return params.text.split('').reverse().join('');\n}"
|
|
511
|
+
);
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
it('keeps escape sequences that belong to valid code', () => {
|
|
515
|
+
const implementation = String.raw`async function execute(p) { return p.text.split('\n').length; }`;
|
|
516
|
+
|
|
517
|
+
const parsed = parseToolGenerationResponse(
|
|
518
|
+
JSON.stringify({ name: 'count_lines', implementation })
|
|
519
|
+
);
|
|
520
|
+
|
|
521
|
+
expect(parsed?.implementation).toBe(implementation);
|
|
522
|
+
});
|
|
501
523
|
});
|