@cogitator-ai/self-modifying 17.0.10 → 17.0.13
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/dist/architecture-evolution/capability-analyzer.d.ts +2 -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 +2 -0
- package/dist/architecture-evolution/parameter-optimizer.d.ts.map +1 -1
- package/dist/architecture-evolution/parameter-optimizer.js +4 -1
- package/dist/architecture-evolution/parameter-optimizer.js.map +1 -1
- package/dist/self-modifying-agent.d.ts +1 -0
- package/dist/self-modifying-agent.d.ts.map +1 -1
- package/dist/self-modifying-agent.js +81 -16
- package/dist/self-modifying-agent.js.map +1 -1
- package/dist/tool-generation/gap-analyzer.d.ts +2 -0
- package/dist/tool-generation/gap-analyzer.d.ts.map +1 -1
- package/dist/tool-generation/gap-analyzer.js +3 -1
- package/dist/tool-generation/gap-analyzer.js.map +1 -1
- package/dist/tool-generation/prompts.d.ts +1 -1
- package/dist/tool-generation/prompts.d.ts.map +1 -1
- package/dist/tool-generation/prompts.js +16 -12
- package/dist/tool-generation/prompts.js.map +1 -1
- package/dist/tool-generation/tool-generator.d.ts +2 -0
- package/dist/tool-generation/tool-generator.d.ts.map +1 -1
- package/dist/tool-generation/tool-generator.js +4 -1
- package/dist/tool-generation/tool-generator.js.map +1 -1
- package/dist/tool-generation/tool-validator.d.ts +2 -0
- package/dist/tool-generation/tool-validator.d.ts.map +1 -1
- package/dist/tool-generation/tool-validator.js +3 -4
- package/dist/tool-generation/tool-validator.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/self-modifying-agent.test.ts +197 -0
- package/src/architecture-evolution/capability-analyzer.ts +4 -1
- package/src/architecture-evolution/parameter-optimizer.ts +5 -1
- package/src/self-modifying-agent.ts +90 -16
- package/src/tool-generation/gap-analyzer.ts +4 -1
- package/src/tool-generation/prompts.ts +16 -12
- package/src/tool-generation/tool-generator.ts +5 -1
- package/src/tool-generation/tool-validator.ts +4 -6
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { extractJson } from '../utils';
|
|
2
|
-
export const TOOL_GENERATION_SYSTEM_PROMPT = `You are an expert
|
|
3
|
-
Your task is to generate safe, efficient
|
|
2
|
+
export const TOOL_GENERATION_SYSTEM_PROMPT = `You are an expert JavaScript developer specializing in creating tools for AI agents.
|
|
3
|
+
Your task is to generate safe, efficient tool implementations.
|
|
4
4
|
|
|
5
5
|
CRITICAL CONSTRAINTS:
|
|
6
|
-
1. Generate ONLY
|
|
7
|
-
2.
|
|
8
|
-
3.
|
|
9
|
-
4.
|
|
10
|
-
5.
|
|
11
|
-
6.
|
|
6
|
+
1. Generate ONLY plain JavaScript (ES2020+) - NO TypeScript syntax, NO type annotations, NO interfaces
|
|
7
|
+
2. No external dependencies - only built-in globals (Math, JSON, Date, Array, Object, String, Number, Boolean, RegExp, Map, Set, Error)
|
|
8
|
+
3. All generated code must be self-contained
|
|
9
|
+
4. Never generate code that accesses file system, network, or system resources
|
|
10
|
+
5. Always include proper error handling with try-catch
|
|
11
|
+
6. The implementation MUST define an async function called "execute" that takes a params object and returns a result
|
|
12
|
+
7. Do NOT use: eval, Function, import, require, process, global, fetch, setTimeout, setInterval, constructor
|
|
12
13
|
|
|
13
14
|
OUTPUT FORMAT:
|
|
14
15
|
Return a JSON object with:
|
|
15
16
|
{
|
|
16
17
|
"name": "tool_name",
|
|
17
18
|
"description": "Clear description of what the tool does",
|
|
18
|
-
"implementation": "
|
|
19
|
+
"implementation": "async function execute(params) { ... }",
|
|
19
20
|
"parameters": { "type": "object", "properties": {...}, "required": [...] },
|
|
20
21
|
"reasoning": "Why this implementation was chosen"
|
|
21
22
|
}`;
|
|
@@ -72,7 +73,7 @@ export function buildToolGenerationPrompt(gap, existingTools, constraints) {
|
|
|
72
73
|
};
|
|
73
74
|
const security = constraints?.securityLevel || 'strict';
|
|
74
75
|
const maxLines = constraints?.maxLines || 100;
|
|
75
|
-
return `Generate a
|
|
76
|
+
return `Generate a plain JavaScript tool implementation for the following capability gap.
|
|
76
77
|
|
|
77
78
|
CAPABILITY GAP:
|
|
78
79
|
- Description: ${gap.description}
|
|
@@ -86,6 +87,8 @@ ${existingTools.map((t) => `- ${t.name}: ${t.description}`).join('\n')}
|
|
|
86
87
|
CONSTRAINTS:
|
|
87
88
|
- Maximum ${maxLines} lines of code
|
|
88
89
|
- Security level: ${security}
|
|
90
|
+
- MUST use plain JavaScript (ES2020+), NO TypeScript syntax, NO type annotations, NO interfaces
|
|
91
|
+
- The "implementation" field must define an async function called "execute" that takes a plain object "params"
|
|
89
92
|
${securityRules[security]}
|
|
90
93
|
${constraints?.allowedModules ? `- Allowed modules: ${constraints.allowedModules.join(', ')}` : ''}
|
|
91
94
|
|
|
@@ -93,7 +96,7 @@ Generate a complete, self-contained tool following this exact structure:
|
|
|
93
96
|
{
|
|
94
97
|
"name": "${gap.suggestedToolName}",
|
|
95
98
|
"description": "Clear description",
|
|
96
|
-
"implementation": "async function execute(params
|
|
99
|
+
"implementation": "async function execute(params) { ... }",
|
|
97
100
|
"parameters": {
|
|
98
101
|
"type": "object",
|
|
99
102
|
"properties": { ... },
|
|
@@ -160,11 +163,12 @@ SUGGESTIONS:
|
|
|
160
163
|
${validationResult.suggestions.map((s, idx) => `${idx + 1}. ${s}`).join('\n')}
|
|
161
164
|
|
|
162
165
|
Generate an improved implementation that addresses ALL issues.
|
|
166
|
+
IMPORTANT: Use plain JavaScript only (NO TypeScript, NO type annotations). The execute function signature must be: async function execute(params) { ... }
|
|
163
167
|
Respond with the same JSON format as before:
|
|
164
168
|
{
|
|
165
169
|
"name": "${tool.name}",
|
|
166
170
|
"description": "Updated description if needed",
|
|
167
|
-
"implementation": "
|
|
171
|
+
"implementation": "async function execute(params) { ... }",
|
|
168
172
|
"parameters": { ... },
|
|
169
173
|
"reasoning": "What was changed and why"
|
|
170
174
|
}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/tool-generation/prompts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,6BAA6B,GAAG
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/tool-generation/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { Tool, LLMBackend, CapabilityGap, GeneratedTool, ToolValidationResu
|
|
|
2
2
|
export interface ToolGeneratorOptions {
|
|
3
3
|
llm: LLMBackend;
|
|
4
4
|
config: ToolSelfGenerationConfig;
|
|
5
|
+
model?: string;
|
|
5
6
|
}
|
|
6
7
|
export interface GenerationResult {
|
|
7
8
|
tool: GeneratedTool | null;
|
|
@@ -13,6 +14,7 @@ export interface GenerationResult {
|
|
|
13
14
|
export declare class ToolGenerator {
|
|
14
15
|
private readonly llm;
|
|
15
16
|
private readonly config;
|
|
17
|
+
private readonly model;
|
|
16
18
|
private readonly validator;
|
|
17
19
|
private readonly sandbox;
|
|
18
20
|
constructor(options: ToolGeneratorOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/tool-generation/tool-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAW7B,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/tool-generation/tool-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAW7B,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,OAAO,EAAE,oBAAoB;IAYnC,QAAQ,CACZ,GAAG,EAAE,aAAa,EAClB,aAAa,EAAE,IAAI,EAAE,EACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,GAC9D,OAAO,CAAC,gBAAgB,CAAC;IAsEtB,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAelB,eAAe;YAoCf,OAAO;IA+BrB,oBAAoB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;YA4BtC,OAAO;CAStB"}
|
|
@@ -5,14 +5,17 @@ import { TOOL_GENERATION_SYSTEM_PROMPT, buildToolGenerationPrompt, buildToolImpr
|
|
|
5
5
|
export class ToolGenerator {
|
|
6
6
|
llm;
|
|
7
7
|
config;
|
|
8
|
+
model;
|
|
8
9
|
validator;
|
|
9
10
|
sandbox;
|
|
10
11
|
constructor(options) {
|
|
11
12
|
this.llm = options.llm;
|
|
12
13
|
this.config = options.config;
|
|
14
|
+
this.model = options.model ?? 'default';
|
|
13
15
|
this.validator = new ToolValidator({
|
|
14
16
|
llm: options.llm,
|
|
15
17
|
config: options.config,
|
|
18
|
+
model: options.model,
|
|
16
19
|
});
|
|
17
20
|
this.sandbox = new ToolSandbox(options.config.sandboxConfig);
|
|
18
21
|
}
|
|
@@ -163,7 +166,7 @@ export class ToolGenerator {
|
|
|
163
166
|
if (this.llm.complete) {
|
|
164
167
|
return this.llm.complete({ messages, temperature });
|
|
165
168
|
}
|
|
166
|
-
return this.llm.chat({ model:
|
|
169
|
+
return this.llm.chat({ model: this.model, messages, temperature });
|
|
167
170
|
}
|
|
168
171
|
}
|
|
169
172
|
//# sourceMappingURL=tool-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/tool-generation/tool-generator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/tool-generation/tool-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { GeneratedTool, ToolValidationResult, LLMBackend, ToolSelfGeneratio
|
|
|
2
2
|
export interface ToolValidatorOptions {
|
|
3
3
|
llm?: LLMBackend;
|
|
4
4
|
config: ToolSelfGenerationConfig;
|
|
5
|
+
model?: string;
|
|
5
6
|
}
|
|
6
7
|
interface ValidationRule {
|
|
7
8
|
id: string;
|
|
@@ -12,6 +13,7 @@ interface ValidationRule {
|
|
|
12
13
|
export declare class ToolValidator {
|
|
13
14
|
private readonly llm?;
|
|
14
15
|
private readonly config;
|
|
16
|
+
private readonly model;
|
|
15
17
|
private readonly sandbox;
|
|
16
18
|
private readonly customRules;
|
|
17
19
|
constructor(options: ToolValidatorOptions);
|
|
@@ -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;AAI7B,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,wBAAwB,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;AAI7B,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,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;AAyHD,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,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;gBAExC,OAAO,EAAE,oBAAoB;IAOnC,QAAQ,CACZ,IAAI,EAAE,aAAa,EACnB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,GACrF,OAAO,CAAC,oBAAoB,CAAC;IAuEhC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAInC,OAAO,CAAC,iBAAiB;YAsBX,gBAAgB;IAsC9B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,cAAc;YAuBR,OAAO;CAUtB"}
|
|
@@ -139,11 +139,13 @@ const STATIC_VALIDATION_RULES = [
|
|
|
139
139
|
export class ToolValidator {
|
|
140
140
|
llm;
|
|
141
141
|
config;
|
|
142
|
+
model;
|
|
142
143
|
sandbox;
|
|
143
144
|
customRules = [];
|
|
144
145
|
constructor(options) {
|
|
145
146
|
this.llm = options.llm;
|
|
146
147
|
this.config = options.config;
|
|
148
|
+
this.model = options.model ?? 'default';
|
|
147
149
|
this.sandbox = new ToolSandbox(options.config.sandboxConfig);
|
|
148
150
|
}
|
|
149
151
|
async validate(tool, testCases) {
|
|
@@ -254,9 +256,6 @@ Be thorough but practical - focus on real issues.`,
|
|
|
254
256
|
validInput[key] = this.generateSampleValue(schema.type, schema.default);
|
|
255
257
|
}
|
|
256
258
|
testCases.push({ input: validInput });
|
|
257
|
-
const required = params.required;
|
|
258
|
-
testCases.push({ input: {}, shouldThrow: (required?.length ?? 0) > 0 });
|
|
259
|
-
testCases.push({ input: null, shouldThrow: true });
|
|
260
259
|
}
|
|
261
260
|
return testCases;
|
|
262
261
|
}
|
|
@@ -298,7 +297,7 @@ Be thorough but practical - focus on real issues.`,
|
|
|
298
297
|
if (this.llm.complete) {
|
|
299
298
|
return this.llm.complete({ messages, temperature });
|
|
300
299
|
}
|
|
301
|
-
return this.llm.chat({ model:
|
|
300
|
+
return this.llm.chat({ model: this.model, messages, temperature });
|
|
302
301
|
}
|
|
303
302
|
}
|
|
304
303
|
//# sourceMappingURL=tool-validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-validator.js","sourceRoot":"","sources":["../../src/tool-generation/tool-validator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;
|
|
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
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { SelfModifyingAgent } from '../self-modifying-agent';
|
|
3
|
+
import type { Agent, LLMBackend, Tool, ChatResponse, ToolCall } from '@cogitator-ai/types';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
|
|
6
|
+
function createMockAgent(tools: Tool[] = []): Agent {
|
|
7
|
+
return {
|
|
8
|
+
name: 'test-agent',
|
|
9
|
+
model: 'test-model',
|
|
10
|
+
instructions: 'You are a test assistant.',
|
|
11
|
+
tools,
|
|
12
|
+
config: { temperature: 0.5 },
|
|
13
|
+
} as Agent;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function createMockTool(name: string, result: unknown): Tool {
|
|
17
|
+
return {
|
|
18
|
+
name,
|
|
19
|
+
description: `Mock tool: ${name}`,
|
|
20
|
+
parameters: z.object({ input: z.string() }),
|
|
21
|
+
execute: vi.fn().mockResolvedValue(result),
|
|
22
|
+
toJSON: () => ({
|
|
23
|
+
name,
|
|
24
|
+
description: `Mock tool: ${name}`,
|
|
25
|
+
parameters: { type: 'object' as const, properties: { input: { type: 'string' } } },
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function chatResponse(content: string, toolCalls?: ToolCall[]): ChatResponse {
|
|
31
|
+
return {
|
|
32
|
+
content,
|
|
33
|
+
toolCalls,
|
|
34
|
+
finishReason: toolCalls?.length ? 'tool_calls' : 'stop',
|
|
35
|
+
usage: { inputTokens: 10, outputTokens: 10, totalTokens: 20 },
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
describe('SelfModifyingAgent tool execution', () => {
|
|
40
|
+
it('passes tools to LLM and returns response', async () => {
|
|
41
|
+
const calculator = createMockTool('calculator', { result: 42 });
|
|
42
|
+
|
|
43
|
+
const mockLLM: Partial<LLMBackend> = {
|
|
44
|
+
chat: vi.fn()
|
|
45
|
+
.mockResolvedValueOnce(chatResponse('', [
|
|
46
|
+
{ id: 'call_1', name: 'calculator', arguments: { input: '6*7' } },
|
|
47
|
+
]))
|
|
48
|
+
.mockResolvedValueOnce(chatResponse('The answer is 42.')),
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const agent = createMockAgent([calculator]);
|
|
52
|
+
const selfMod = new SelfModifyingAgent({
|
|
53
|
+
agent,
|
|
54
|
+
llm: mockLLM as LLMBackend,
|
|
55
|
+
config: {
|
|
56
|
+
toolGeneration: { enabled: false },
|
|
57
|
+
metaReasoning: { enabled: false },
|
|
58
|
+
architectureEvolution: { enabled: false },
|
|
59
|
+
constraints: { enabled: false },
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
const result = await selfMod.run('What is 6 times 7?');
|
|
64
|
+
|
|
65
|
+
expect(result.output).toBe('The answer is 42.');
|
|
66
|
+
expect(calculator.execute).toHaveBeenCalledOnce();
|
|
67
|
+
expect(calculator.execute).toHaveBeenCalledWith(
|
|
68
|
+
{ input: '6*7' },
|
|
69
|
+
expect.objectContaining({ agentId: 'test-agent' }),
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
const chatCalls = vi.mocked(mockLLM.chat!).mock.calls;
|
|
73
|
+
expect(chatCalls[0][0].tools).toBeDefined();
|
|
74
|
+
expect(chatCalls[0][0].tools).toHaveLength(1);
|
|
75
|
+
expect(chatCalls[0][0].tools![0].name).toBe('calculator');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('handles multiple sequential tool calls', async () => {
|
|
79
|
+
const search = createMockTool('search', { results: ['found it'] });
|
|
80
|
+
const format = createMockTool('format', { text: 'formatted result' });
|
|
81
|
+
|
|
82
|
+
const mockLLM: Partial<LLMBackend> = {
|
|
83
|
+
chat: vi.fn()
|
|
84
|
+
.mockResolvedValueOnce(chatResponse('', [
|
|
85
|
+
{ id: 'call_1', name: 'search', arguments: { input: 'test' } },
|
|
86
|
+
]))
|
|
87
|
+
.mockResolvedValueOnce(chatResponse('', [
|
|
88
|
+
{ id: 'call_2', name: 'format', arguments: { input: 'found it' } },
|
|
89
|
+
]))
|
|
90
|
+
.mockResolvedValueOnce(chatResponse('Here is your formatted result.')),
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const agent = createMockAgent([search, format]);
|
|
94
|
+
const selfMod = new SelfModifyingAgent({
|
|
95
|
+
agent,
|
|
96
|
+
llm: mockLLM as LLMBackend,
|
|
97
|
+
config: {
|
|
98
|
+
toolGeneration: { enabled: false },
|
|
99
|
+
metaReasoning: { enabled: false },
|
|
100
|
+
architectureEvolution: { enabled: false },
|
|
101
|
+
constraints: { enabled: false },
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const result = await selfMod.run('Search and format');
|
|
106
|
+
|
|
107
|
+
expect(result.output).toBe('Here is your formatted result.');
|
|
108
|
+
expect(search.execute).toHaveBeenCalledOnce();
|
|
109
|
+
expect(format.execute).toHaveBeenCalledOnce();
|
|
110
|
+
expect(vi.mocked(mockLLM.chat!)).toHaveBeenCalledTimes(3);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
it('handles tool execution errors gracefully', async () => {
|
|
114
|
+
const failTool = createMockTool('broken', null);
|
|
115
|
+
(failTool.execute as ReturnType<typeof vi.fn>).mockRejectedValue(new Error('tool crashed'));
|
|
116
|
+
|
|
117
|
+
const mockLLM: Partial<LLMBackend> = {
|
|
118
|
+
chat: vi.fn()
|
|
119
|
+
.mockResolvedValueOnce(chatResponse('', [
|
|
120
|
+
{ id: 'call_1', name: 'broken', arguments: { input: 'test' } },
|
|
121
|
+
]))
|
|
122
|
+
.mockResolvedValueOnce(chatResponse('The tool failed but I can help anyway.')),
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const agent = createMockAgent([failTool]);
|
|
126
|
+
const selfMod = new SelfModifyingAgent({
|
|
127
|
+
agent,
|
|
128
|
+
llm: mockLLM as LLMBackend,
|
|
129
|
+
config: {
|
|
130
|
+
toolGeneration: { enabled: false },
|
|
131
|
+
metaReasoning: { enabled: false },
|
|
132
|
+
architectureEvolution: { enabled: false },
|
|
133
|
+
constraints: { enabled: false },
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const result = await selfMod.run('Use the broken tool');
|
|
138
|
+
|
|
139
|
+
expect(result.output).toBe('The tool failed but I can help anyway.');
|
|
140
|
+
const secondCall = vi.mocked(mockLLM.chat!).mock.calls[1][0];
|
|
141
|
+
const toolMsg = secondCall.messages.find((m: { role: string }) => m.role === 'tool');
|
|
142
|
+
expect(toolMsg?.content).toContain('tool crashed');
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it('handles unknown tool calls', async () => {
|
|
146
|
+
const mockLLM: Partial<LLMBackend> = {
|
|
147
|
+
chat: vi.fn()
|
|
148
|
+
.mockResolvedValueOnce(chatResponse('', [
|
|
149
|
+
{ id: 'call_1', name: 'nonexistent', arguments: { input: 'x' } },
|
|
150
|
+
]))
|
|
151
|
+
.mockResolvedValueOnce(chatResponse('I could not find that tool.')),
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const agent = createMockAgent([]);
|
|
155
|
+
const selfMod = new SelfModifyingAgent({
|
|
156
|
+
agent,
|
|
157
|
+
llm: mockLLM as LLMBackend,
|
|
158
|
+
config: {
|
|
159
|
+
toolGeneration: { enabled: false },
|
|
160
|
+
metaReasoning: { enabled: false },
|
|
161
|
+
architectureEvolution: { enabled: false },
|
|
162
|
+
constraints: { enabled: false },
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
const result = await selfMod.run('Call a tool');
|
|
167
|
+
|
|
168
|
+
expect(result.output).toBe('I could not find that tool.');
|
|
169
|
+
const secondCall = vi.mocked(mockLLM.chat!).mock.calls[1][0];
|
|
170
|
+
const toolMsg = secondCall.messages.find((m: { role: string }) => m.role === 'tool');
|
|
171
|
+
expect(toolMsg?.content).toContain('not found');
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
it('works without any tools (no tools passed to LLM)', async () => {
|
|
175
|
+
const mockLLM: Partial<LLMBackend> = {
|
|
176
|
+
chat: vi.fn().mockResolvedValueOnce(chatResponse('Hello world')),
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
const agent = createMockAgent([]);
|
|
180
|
+
const selfMod = new SelfModifyingAgent({
|
|
181
|
+
agent,
|
|
182
|
+
llm: mockLLM as LLMBackend,
|
|
183
|
+
config: {
|
|
184
|
+
toolGeneration: { enabled: false },
|
|
185
|
+
metaReasoning: { enabled: false },
|
|
186
|
+
architectureEvolution: { enabled: false },
|
|
187
|
+
constraints: { enabled: false },
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
const result = await selfMod.run('Just say hi');
|
|
192
|
+
|
|
193
|
+
expect(result.output).toBe('Hello world');
|
|
194
|
+
const chatCall = vi.mocked(mockLLM.chat!).mock.calls[0][0];
|
|
195
|
+
expect(chatCall.tools).toBeUndefined();
|
|
196
|
+
});
|
|
197
|
+
});
|
|
@@ -4,6 +4,7 @@ import { buildTaskProfilePrompt, parseTaskProfileResponse } from './prompts';
|
|
|
4
4
|
export interface CapabilityAnalyzerOptions {
|
|
5
5
|
llm?: LLMBackend;
|
|
6
6
|
enableLLMAnalysis?: boolean;
|
|
7
|
+
model?: string;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
interface DomainKeywords {
|
|
@@ -126,12 +127,14 @@ const COMPLEXITY_INDICATORS = {
|
|
|
126
127
|
export class CapabilityAnalyzer {
|
|
127
128
|
private readonly llm?: LLMBackend;
|
|
128
129
|
private readonly enableLLMAnalysis: boolean;
|
|
130
|
+
private readonly model: string;
|
|
129
131
|
private readonly profileCache = new Map<string, { profile: TaskProfile; timestamp: number }>();
|
|
130
132
|
private readonly cacheTTL = 60000;
|
|
131
133
|
|
|
132
134
|
constructor(options: CapabilityAnalyzerOptions = {}) {
|
|
133
135
|
this.llm = options.llm;
|
|
134
136
|
this.enableLLMAnalysis = options.enableLLMAnalysis ?? false;
|
|
137
|
+
this.model = options.model ?? 'default';
|
|
135
138
|
}
|
|
136
139
|
|
|
137
140
|
async analyzeTask(
|
|
@@ -199,7 +202,7 @@ export class CapabilityAnalyzer {
|
|
|
199
202
|
temperature: 0.2,
|
|
200
203
|
})
|
|
201
204
|
: await llm.chat({
|
|
202
|
-
model:
|
|
205
|
+
model: this.model,
|
|
203
206
|
messages: [
|
|
204
207
|
{
|
|
205
208
|
role: 'system',
|
|
@@ -19,6 +19,7 @@ export interface ParameterOptimizerOptions {
|
|
|
19
19
|
llm: LLMBackend;
|
|
20
20
|
config: ArchitectureEvolutionConfig;
|
|
21
21
|
baseConfig: ArchitectureConfig;
|
|
22
|
+
model?: string;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
export interface OptimizationResult {
|
|
@@ -41,6 +42,7 @@ interface HistoricalRecord {
|
|
|
41
42
|
export class ParameterOptimizer {
|
|
42
43
|
private readonly llm: LLMBackend;
|
|
43
44
|
private readonly config: ArchitectureEvolutionConfig;
|
|
45
|
+
private readonly model: string;
|
|
44
46
|
private readonly baseConfig: ArchitectureConfig;
|
|
45
47
|
private readonly capabilityAnalyzer: CapabilityAnalyzer;
|
|
46
48
|
private readonly evolutionStrategy: EvolutionStrategy;
|
|
@@ -54,11 +56,13 @@ export class ParameterOptimizer {
|
|
|
54
56
|
constructor(options: ParameterOptimizerOptions) {
|
|
55
57
|
this.llm = options.llm;
|
|
56
58
|
this.config = options.config;
|
|
59
|
+
this.model = options.model ?? 'default';
|
|
57
60
|
this.baseConfig = options.baseConfig;
|
|
58
61
|
|
|
59
62
|
this.capabilityAnalyzer = new CapabilityAnalyzer({
|
|
60
63
|
llm: options.llm,
|
|
61
64
|
enableLLMAnalysis: true,
|
|
65
|
+
model: options.model,
|
|
62
66
|
});
|
|
63
67
|
|
|
64
68
|
this.evolutionStrategy = new EvolutionStrategy({
|
|
@@ -488,7 +492,7 @@ export class ParameterOptimizer {
|
|
|
488
492
|
if (this.llm.complete) {
|
|
489
493
|
return this.llm.complete({ messages, temperature });
|
|
490
494
|
}
|
|
491
|
-
return this.llm.chat({ model:
|
|
495
|
+
return this.llm.chat({ model: this.model, messages, temperature });
|
|
492
496
|
}
|
|
493
497
|
|
|
494
498
|
getCandidates(): EvolutionCandidate[] {
|