darwin-agents 0.4.4
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/LICENSE +21 -0
- package/README.md +245 -0
- package/dist/agents/analyst.d.ts +11 -0
- package/dist/agents/analyst.d.ts.map +1 -0
- package/dist/agents/analyst.js +78 -0
- package/dist/agents/analyst.js.map +1 -0
- package/dist/agents/blog-writer.d.ts +13 -0
- package/dist/agents/blog-writer.d.ts.map +1 -0
- package/dist/agents/blog-writer.js +59 -0
- package/dist/agents/blog-writer.js.map +1 -0
- package/dist/agents/critic.d.ts +11 -0
- package/dist/agents/critic.d.ts.map +1 -0
- package/dist/agents/critic.js +57 -0
- package/dist/agents/critic.js.map +1 -0
- package/dist/agents/index.d.ts +15 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +31 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/investigator-critic.d.ts +10 -0
- package/dist/agents/investigator-critic.d.ts.map +1 -0
- package/dist/agents/investigator-critic.js +78 -0
- package/dist/agents/investigator-critic.js.map +1 -0
- package/dist/agents/investigator.d.ts +13 -0
- package/dist/agents/investigator.d.ts.map +1 -0
- package/dist/agents/investigator.js +105 -0
- package/dist/agents/investigator.js.map +1 -0
- package/dist/agents/marketing.d.ts +13 -0
- package/dist/agents/marketing.d.ts.map +1 -0
- package/dist/agents/marketing.js +59 -0
- package/dist/agents/marketing.js.map +1 -0
- package/dist/agents/researcher.d.ts +11 -0
- package/dist/agents/researcher.d.ts.map +1 -0
- package/dist/agents/researcher.js +68 -0
- package/dist/agents/researcher.js.map +1 -0
- package/dist/agents/writer.d.ts +9 -0
- package/dist/agents/writer.d.ts.map +1 -0
- package/dist/agents/writer.js +47 -0
- package/dist/agents/writer.js.map +1 -0
- package/dist/cli/create.d.ts +11 -0
- package/dist/cli/create.d.ts.map +1 -0
- package/dist/cli/create.js +104 -0
- package/dist/cli/create.js.map +1 -0
- package/dist/cli/evolve.d.ts +13 -0
- package/dist/cli/evolve.d.ts.map +1 -0
- package/dist/cli/evolve.js +69 -0
- package/dist/cli/evolve.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +84 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +12 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +68 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/run.d.ts +7 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +371 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/status.d.ts +7 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +123 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/core/agent.d.ts +53 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +172 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/runner.d.ts +64 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.js +203 -0
- package/dist/core/runner.js.map +1 -0
- package/dist/evolution/loop.d.ts +100 -0
- package/dist/evolution/loop.d.ts.map +1 -0
- package/dist/evolution/loop.js +424 -0
- package/dist/evolution/loop.js.map +1 -0
- package/dist/evolution/multi-critic.d.ts +58 -0
- package/dist/evolution/multi-critic.d.ts.map +1 -0
- package/dist/evolution/multi-critic.js +324 -0
- package/dist/evolution/multi-critic.js.map +1 -0
- package/dist/evolution/notifications.d.ts +32 -0
- package/dist/evolution/notifications.d.ts.map +1 -0
- package/dist/evolution/notifications.js +92 -0
- package/dist/evolution/notifications.js.map +1 -0
- package/dist/evolution/optimizer.d.ts +64 -0
- package/dist/evolution/optimizer.d.ts.map +1 -0
- package/dist/evolution/optimizer.js +223 -0
- package/dist/evolution/optimizer.js.map +1 -0
- package/dist/evolution/patterns.d.ts +63 -0
- package/dist/evolution/patterns.d.ts.map +1 -0
- package/dist/evolution/patterns.js +297 -0
- package/dist/evolution/patterns.js.map +1 -0
- package/dist/evolution/safety.d.ts +76 -0
- package/dist/evolution/safety.d.ts.map +1 -0
- package/dist/evolution/safety.js +182 -0
- package/dist/evolution/safety.js.map +1 -0
- package/dist/evolution/tracker.d.ts +48 -0
- package/dist/evolution/tracker.d.ts.map +1 -0
- package/dist/evolution/tracker.js +163 -0
- package/dist/evolution/tracker.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +49 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/postgres-memory.d.ts +52 -0
- package/dist/memory/postgres-memory.d.ts.map +1 -0
- package/dist/memory/postgres-memory.js +515 -0
- package/dist/memory/postgres-memory.js.map +1 -0
- package/dist/memory/sqlite-memory.d.ts +36 -0
- package/dist/memory/sqlite-memory.d.ts.map +1 -0
- package/dist/memory/sqlite-memory.js +380 -0
- package/dist/memory/sqlite-memory.js.map +1 -0
- package/dist/providers/anthropic.d.ts +20 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +82 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/claude-cli.d.ts +35 -0
- package/dist/providers/claude-cli.d.ts.map +1 -0
- package/dist/providers/claude-cli.js +143 -0
- package/dist/providers/claude-cli.js.map +1 -0
- package/dist/providers/index.d.ts +39 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +58 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama.d.ts +17 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +64 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +19 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +75 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +62 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +9 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/types.d.ts +221 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Darwin CLI — AI agents that improve themselves.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* darwin run <agent> "task description"
|
|
7
|
+
* darwin evolve <agent> --enable
|
|
8
|
+
* darwin status [agent]
|
|
9
|
+
* darwin create <name>
|
|
10
|
+
* darwin init
|
|
11
|
+
*/
|
|
12
|
+
import { runCommand } from './run.js';
|
|
13
|
+
import { statusCommand } from './status.js';
|
|
14
|
+
import { evolveCommand } from './evolve.js';
|
|
15
|
+
import { initCommand } from './init.js';
|
|
16
|
+
import { createCommand } from './create.js';
|
|
17
|
+
const HELP = `
|
|
18
|
+
darwin — AI agents that improve themselves.
|
|
19
|
+
|
|
20
|
+
Usage:
|
|
21
|
+
darwin run <agent> "task" Run an agent on a task
|
|
22
|
+
darwin status [agent] Show evolution status & metrics
|
|
23
|
+
darwin evolve <agent> Manage evolution settings
|
|
24
|
+
darwin create <name> Scaffold a new agent
|
|
25
|
+
darwin init Initialize darwin in current project
|
|
26
|
+
|
|
27
|
+
Agents:
|
|
28
|
+
writer Content writer (zero-config, no API keys)
|
|
29
|
+
researcher Web research (needs TAVILY_API_KEY)
|
|
30
|
+
critic Quality evaluator (used by Darwin internally)
|
|
31
|
+
analyst Code analysis (filesystem access)
|
|
32
|
+
|
|
33
|
+
Examples:
|
|
34
|
+
darwin run writer "Explain the CAP theorem"
|
|
35
|
+
darwin run researcher "AI Agent frameworks 2026"
|
|
36
|
+
darwin run analyst --path ./src
|
|
37
|
+
darwin status researcher
|
|
38
|
+
darwin evolve researcher --enable
|
|
39
|
+
|
|
40
|
+
Options:
|
|
41
|
+
--task-type <type> Categorize the task (tech, webdesign, market, general)
|
|
42
|
+
--no-evolve Skip evolution check after run
|
|
43
|
+
--no-critic Skip automatic critic evaluation
|
|
44
|
+
--model <model> Override LLM model
|
|
45
|
+
--verbose Show detailed output
|
|
46
|
+
--help Show this help
|
|
47
|
+
`;
|
|
48
|
+
async function main() {
|
|
49
|
+
const args = process.argv.slice(2);
|
|
50
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
51
|
+
console.log(HELP);
|
|
52
|
+
process.exit(0);
|
|
53
|
+
}
|
|
54
|
+
const command = args[0];
|
|
55
|
+
try {
|
|
56
|
+
switch (command) {
|
|
57
|
+
case 'run':
|
|
58
|
+
await runCommand(args.slice(1));
|
|
59
|
+
break;
|
|
60
|
+
case 'status':
|
|
61
|
+
await statusCommand(args.slice(1));
|
|
62
|
+
break;
|
|
63
|
+
case 'evolve':
|
|
64
|
+
await evolveCommand(args.slice(1));
|
|
65
|
+
break;
|
|
66
|
+
case 'create':
|
|
67
|
+
await createCommand(args.slice(1));
|
|
68
|
+
break;
|
|
69
|
+
case 'init':
|
|
70
|
+
await initCommand();
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
console.error(`Unknown command: ${command}`);
|
|
74
|
+
console.log(HELP);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
console.error(`\n[darwin] Error: ${err.message}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
main();
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BZ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,KAAK;gBACR,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* darwin init
|
|
3
|
+
*
|
|
4
|
+
* Initializes Darwin in the current project.
|
|
5
|
+
* Creates .darwin/ directory, darwin.config.ts template, and .gitignore.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Initialize Darwin in the current working directory.
|
|
9
|
+
* Creates .darwin/ dir, darwin.config.ts, and .gitignore if they don't exist.
|
|
10
|
+
*/
|
|
11
|
+
export declare function initCommand(): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCjD"}
|
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* darwin init
|
|
3
|
+
*
|
|
4
|
+
* Initializes Darwin in the current project.
|
|
5
|
+
* Creates .darwin/ directory, darwin.config.ts template, and .gitignore.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
const CONFIG_TEMPLATE = `import { defineConfig } from 'darwin-agents';
|
|
10
|
+
|
|
11
|
+
export default defineConfig({
|
|
12
|
+
provider: 'claude-cli',
|
|
13
|
+
memory: 'sqlite',
|
|
14
|
+
evolution: {
|
|
15
|
+
enabled: true,
|
|
16
|
+
minRuns: 5,
|
|
17
|
+
safetyGate: true,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
`;
|
|
21
|
+
const GITIGNORE_TEMPLATE = `.darwin/
|
|
22
|
+
node_modules/
|
|
23
|
+
`;
|
|
24
|
+
/**
|
|
25
|
+
* Initialize Darwin in the current working directory.
|
|
26
|
+
* Creates .darwin/ dir, darwin.config.ts, and .gitignore if they don't exist.
|
|
27
|
+
*/
|
|
28
|
+
export async function initCommand() {
|
|
29
|
+
const cwd = process.cwd();
|
|
30
|
+
const darwinDir = join(cwd, '.darwin');
|
|
31
|
+
const configPath = join(cwd, 'darwin.config.ts');
|
|
32
|
+
const gitignorePath = join(cwd, '.gitignore');
|
|
33
|
+
// Create .darwin/ directory
|
|
34
|
+
if (existsSync(darwinDir)) {
|
|
35
|
+
console.log('[darwin] .darwin/ directory already exists — skipping');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
mkdirSync(darwinDir, { recursive: true });
|
|
39
|
+
console.log('[darwin] Created .darwin/ directory');
|
|
40
|
+
}
|
|
41
|
+
// Create darwin.config.ts
|
|
42
|
+
if (existsSync(configPath)) {
|
|
43
|
+
console.log('[darwin] darwin.config.ts already exists — skipping');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
writeFileSync(configPath, CONFIG_TEMPLATE, 'utf-8');
|
|
47
|
+
console.log('[darwin] Created darwin.config.ts');
|
|
48
|
+
}
|
|
49
|
+
// Create .gitignore
|
|
50
|
+
if (existsSync(gitignorePath)) {
|
|
51
|
+
console.log('[darwin] .gitignore already exists — skipping');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
writeFileSync(gitignorePath, GITIGNORE_TEMPLATE, 'utf-8');
|
|
55
|
+
console.log('[darwin] Created .gitignore');
|
|
56
|
+
}
|
|
57
|
+
console.log(`
|
|
58
|
+
[darwin] Initialized! Next steps:
|
|
59
|
+
|
|
60
|
+
1. Edit darwin.config.ts to configure your setup
|
|
61
|
+
2. Create your first agent:
|
|
62
|
+
darwin create my-agent
|
|
63
|
+
|
|
64
|
+
3. Run it:
|
|
65
|
+
darwin run my-agent "your task here"
|
|
66
|
+
`);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,eAAe,GAAG;;;;;;;;;;;CAWvB,CAAC;AAEF,MAAM,kBAAkB,GAAG;;CAE1B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE9C,4BAA4B;IAC5B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,0BAA0B;IAC1B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,aAAa,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;;;;;;;;;CASb,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuJH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9D"}
|
package/dist/cli/run.js
ADDED
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* darwin run <agent> "task"
|
|
3
|
+
*
|
|
4
|
+
* Runs an agent, optionally evaluates with critic, triggers Darwin evolution.
|
|
5
|
+
*/
|
|
6
|
+
import { builtinAgents } from '../agents/index.js';
|
|
7
|
+
import { createMemory } from '../memory/index.js';
|
|
8
|
+
import { runAgent } from '../core/runner.js';
|
|
9
|
+
import { loadConfig } from '../core/agent.js';
|
|
10
|
+
import { DarwinLoop } from '../evolution/loop.js';
|
|
11
|
+
import { ExperimentTracker } from '../evolution/tracker.js';
|
|
12
|
+
import { PatternDetector } from '../evolution/patterns.js';
|
|
13
|
+
import { PromptOptimizer } from '../evolution/optimizer.js';
|
|
14
|
+
import { SafetyGate } from '../evolution/safety.js';
|
|
15
|
+
import { runMultiCritic, getCriticPrompts } from '../evolution/multi-critic.js';
|
|
16
|
+
import { loadNotificationConfig } from '../evolution/notifications.js';
|
|
17
|
+
import { createProvider } from '../providers/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Auto-detect available API keys and assign different providers to critics.
|
|
20
|
+
* Reduces LLM-as-judge bias by using multiple model families.
|
|
21
|
+
*
|
|
22
|
+
* Uses the agent's critic prompt set to determine critic names, then distributes
|
|
23
|
+
* providers across them by index position:
|
|
24
|
+
* - Critic[0] → GPT-5.4 (if OPENAI_API_KEY, different model family)
|
|
25
|
+
* - Critic[1] → Claude Sonnet API (if ANTHROPIC_API_KEY, faster than CLI)
|
|
26
|
+
* - Critic[2] → Claude CLI (always free in Max Plan)
|
|
27
|
+
*/
|
|
28
|
+
function resolveCriticProviders(agentName) {
|
|
29
|
+
const prompts = getCriticPrompts(agentName);
|
|
30
|
+
const defaults = {};
|
|
31
|
+
// Initialize all critics with CLI default
|
|
32
|
+
for (const { name } of prompts) {
|
|
33
|
+
defaults[name] = { model: 'claude-sonnet-4-20250514', label: 'claude-cli' };
|
|
34
|
+
}
|
|
35
|
+
const criticNames = prompts.map(p => p.name);
|
|
36
|
+
// GPT-5.4 for first critic (model diversity — different training, different biases)
|
|
37
|
+
if (process.env.OPENAI_API_KEY && criticNames[0]) {
|
|
38
|
+
try {
|
|
39
|
+
const openaiProvider = createProvider({ type: 'openai' });
|
|
40
|
+
defaults[criticNames[0]] = {
|
|
41
|
+
provider: openaiProvider,
|
|
42
|
+
model: 'gpt-5.4',
|
|
43
|
+
label: 'openai/gpt-5.4',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// No valid key — stay on Claude CLI
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Anthropic API for second critic (same model family but 10-100x faster than CLI)
|
|
51
|
+
if (process.env.ANTHROPIC_API_KEY && criticNames[1]) {
|
|
52
|
+
try {
|
|
53
|
+
const anthropicProvider = createProvider({ type: 'anthropic-api' });
|
|
54
|
+
defaults[criticNames[1]] = {
|
|
55
|
+
provider: anthropicProvider,
|
|
56
|
+
model: 'claude-sonnet-4-20250514',
|
|
57
|
+
label: 'anthropic-api',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// No valid key — stay on CLI
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return defaults;
|
|
65
|
+
}
|
|
66
|
+
function parseRunArgs(args) {
|
|
67
|
+
const flags = {
|
|
68
|
+
agentName: '',
|
|
69
|
+
task: '',
|
|
70
|
+
taskType: 'general',
|
|
71
|
+
noEvolve: false,
|
|
72
|
+
noCritic: false,
|
|
73
|
+
verbose: false,
|
|
74
|
+
};
|
|
75
|
+
const positional = [];
|
|
76
|
+
for (let i = 0; i < args.length; i++) {
|
|
77
|
+
const arg = args[i];
|
|
78
|
+
switch (arg) {
|
|
79
|
+
case '--task-type':
|
|
80
|
+
flags.taskType = args[++i] ?? 'general';
|
|
81
|
+
break;
|
|
82
|
+
case '--no-evolve':
|
|
83
|
+
flags.noEvolve = true;
|
|
84
|
+
break;
|
|
85
|
+
case '--no-critic':
|
|
86
|
+
flags.noCritic = true;
|
|
87
|
+
break;
|
|
88
|
+
case '--model':
|
|
89
|
+
flags.model = args[++i];
|
|
90
|
+
break;
|
|
91
|
+
case '--path':
|
|
92
|
+
flags.path = args[++i];
|
|
93
|
+
break;
|
|
94
|
+
case '--provider':
|
|
95
|
+
flags.provider = args[++i];
|
|
96
|
+
break;
|
|
97
|
+
case '--base-url':
|
|
98
|
+
flags.baseUrl = args[++i];
|
|
99
|
+
break;
|
|
100
|
+
case '--verbose':
|
|
101
|
+
case '-v':
|
|
102
|
+
flags.verbose = true;
|
|
103
|
+
break;
|
|
104
|
+
default:
|
|
105
|
+
positional.push(arg);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
flags.agentName = positional[0] ?? '';
|
|
109
|
+
flags.task = positional.slice(1).join(' ');
|
|
110
|
+
return flags;
|
|
111
|
+
}
|
|
112
|
+
function resolveAgent(name) {
|
|
113
|
+
const agent = builtinAgents[name];
|
|
114
|
+
if (!agent) {
|
|
115
|
+
const available = Object.keys(builtinAgents).join(', ');
|
|
116
|
+
throw new Error(`Unknown agent: "${name}". Available: ${available}`);
|
|
117
|
+
}
|
|
118
|
+
return agent;
|
|
119
|
+
}
|
|
120
|
+
export async function runCommand(args) {
|
|
121
|
+
const flags = parseRunArgs(args);
|
|
122
|
+
if (!flags.agentName) {
|
|
123
|
+
throw new Error('Usage: darwin run <agent> "task description"');
|
|
124
|
+
}
|
|
125
|
+
if (!flags.task && !flags.path) {
|
|
126
|
+
throw new Error('Provide a task: darwin run writer "Explain async/await"');
|
|
127
|
+
}
|
|
128
|
+
const agent = resolveAgent(flags.agentName);
|
|
129
|
+
const config = await loadConfig();
|
|
130
|
+
const memory = createMemory(config);
|
|
131
|
+
await memory.init();
|
|
132
|
+
try {
|
|
133
|
+
return await runCommandInner(flags, agent, config, memory);
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
await memory.close();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async function runCommandInner(flags, agent, config, memory) {
|
|
140
|
+
// Build task string
|
|
141
|
+
let task = flags.task;
|
|
142
|
+
if (flags.path) {
|
|
143
|
+
task = task
|
|
144
|
+
? `${task}\n\nAnalyze path: ${flags.path}`
|
|
145
|
+
: `Analyze the codebase at: ${flags.path}`;
|
|
146
|
+
}
|
|
147
|
+
// Resolve provider (CLI flag > config > default)
|
|
148
|
+
let provider;
|
|
149
|
+
if (flags.provider) {
|
|
150
|
+
provider = createProvider({
|
|
151
|
+
type: flags.provider,
|
|
152
|
+
baseUrl: flags.baseUrl,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
console.log(`\n[darwin] Running ${agent.name} (${agent.role})`);
|
|
156
|
+
console.log(`[darwin] Task: ${task.slice(0, 100)}${task.length > 100 ? '...' : ''}`);
|
|
157
|
+
console.log(`[darwin] Type: ${flags.taskType}`);
|
|
158
|
+
if (flags.model)
|
|
159
|
+
console.log(`[darwin] Model: ${flags.model}`);
|
|
160
|
+
if (provider)
|
|
161
|
+
console.log(`[darwin] Provider: ${provider.name}`);
|
|
162
|
+
console.log('');
|
|
163
|
+
// A/B test routing: check if there's an active test and pick a version
|
|
164
|
+
let activePromptVersion = 'v1';
|
|
165
|
+
let agentToRun = agent;
|
|
166
|
+
{
|
|
167
|
+
const preState = await memory.getState();
|
|
168
|
+
const abTest = preState.abTests[agent.name] ?? null;
|
|
169
|
+
if (abTest) {
|
|
170
|
+
// Round-robin: pick whichever version has fewer runs
|
|
171
|
+
activePromptVersion = abTest.runsA <= abTest.runsB ? abTest.versionA : abTest.versionB;
|
|
172
|
+
// If using a non-v1 prompt, load it from DB and override systemPrompt
|
|
173
|
+
if (activePromptVersion !== 'v1') {
|
|
174
|
+
const allVersions = await memory.getAllPromptVersions(agent.name);
|
|
175
|
+
const targetVersion = allVersions.find(v => v.version === activePromptVersion);
|
|
176
|
+
if (targetVersion) {
|
|
177
|
+
agentToRun = { ...agent, systemPrompt: targetVersion.promptText };
|
|
178
|
+
console.log(`[darwin] A/B test: Using prompt ${activePromptVersion}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
console.log(`[darwin] A/B test: Using prompt ${activePromptVersion}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const startTime = Date.now();
|
|
187
|
+
// Run the agent (with potentially overridden prompt for A/B testing)
|
|
188
|
+
const result = await runAgent(agentToRun, task, {
|
|
189
|
+
config,
|
|
190
|
+
taskType: flags.taskType,
|
|
191
|
+
model: flags.model,
|
|
192
|
+
promptVersion: activePromptVersion,
|
|
193
|
+
autonomous: true,
|
|
194
|
+
provider,
|
|
195
|
+
});
|
|
196
|
+
const duration = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
197
|
+
// Show result summary
|
|
198
|
+
console.log(`\n[darwin] Run complete (${duration}s)`);
|
|
199
|
+
console.log(`[darwin] Output: ${result.output.length} chars`);
|
|
200
|
+
if (result.reportPath) {
|
|
201
|
+
console.log(`[darwin] Report: ${result.reportPath}`);
|
|
202
|
+
}
|
|
203
|
+
// Seed v1 prompt version if it doesn't exist yet
|
|
204
|
+
const existingVersions = await memory.getAllPromptVersions(agent.name);
|
|
205
|
+
if (existingVersions.length === 0) {
|
|
206
|
+
const v1 = {
|
|
207
|
+
version: 'v1',
|
|
208
|
+
agentName: agent.name,
|
|
209
|
+
promptText: agent.systemPrompt,
|
|
210
|
+
createdAt: new Date().toISOString(),
|
|
211
|
+
parentVersion: null,
|
|
212
|
+
changeReason: 'Initial prompt',
|
|
213
|
+
active: true,
|
|
214
|
+
stats: { totalRuns: 0, avgQuality: 0, avgDuration: 0, successRate: 0, avgSourceCount: 0 },
|
|
215
|
+
};
|
|
216
|
+
await memory.savePromptVersion(v1);
|
|
217
|
+
console.log(`[darwin] Seeded v1 prompt for ${agent.name}`);
|
|
218
|
+
}
|
|
219
|
+
// Save experiment to DB + update state
|
|
220
|
+
// Skip saving if output is too short (incomplete run — avoid poisoning data)
|
|
221
|
+
// Use agent-specific threshold (e.g., marketing content is naturally shorter than research reports)
|
|
222
|
+
const MIN_SAVE_OUTPUT = agent.evolution?.minOutputLength ?? 2000;
|
|
223
|
+
if (result.experiment.metrics.outputLength < MIN_SAVE_OUTPUT) {
|
|
224
|
+
console.log(`\n[darwin] Output too short (${result.experiment.metrics.outputLength} chars < ${MIN_SAVE_OUTPUT}). Skipping DB save.`);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
// Save experiment — tracker.recordExperiment() handles this for evolution-enabled agents.
|
|
228
|
+
// Only save here for non-evolution agents to avoid double-save.
|
|
229
|
+
if (!agent.evolution?.enabled) {
|
|
230
|
+
await memory.saveExperiment(result.experiment);
|
|
231
|
+
await memory.updateState((state) => {
|
|
232
|
+
state.experimentCounts[agent.name] = (state.experimentCounts[agent.name] ?? 0) + 1;
|
|
233
|
+
if (!state.activeVersions[agent.name]) {
|
|
234
|
+
state.activeVersions[agent.name] = 'v1';
|
|
235
|
+
}
|
|
236
|
+
return state;
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
// Run critic evaluation (unless skipped)
|
|
240
|
+
if (!flags.noCritic && agent.name !== 'critic' && agent.name !== 'investigator-critic' && agent.name !== 'multi-critic' && agent.evolution?.enabled) {
|
|
241
|
+
const evaluatorName = agent.evolution.evaluator ?? 'critic';
|
|
242
|
+
if (evaluatorName === 'multi-critic') {
|
|
243
|
+
// ── Multi-Critic Mode — Multi-Model ───────────
|
|
244
|
+
const criticProviders = resolveCriticProviders(agent.name);
|
|
245
|
+
const providerLabels = Object.entries(criticProviders)
|
|
246
|
+
.map(([name, info]) => `${name}→${info.label}`)
|
|
247
|
+
.join(', ');
|
|
248
|
+
console.log(`\n[darwin] Evaluating with 3 critics (${providerLabels})...`);
|
|
249
|
+
const multiResult = await runMultiCritic(result.output, task, async (systemPrompt, criticTask, criticName) => {
|
|
250
|
+
const criticInfo = criticProviders[criticName];
|
|
251
|
+
const criticRun = await runAgent({
|
|
252
|
+
name: 'multi-critic',
|
|
253
|
+
role: 'Specialized Critic',
|
|
254
|
+
description: 'One of 3 specialized critics for multi-critic evaluation',
|
|
255
|
+
type: 'llm',
|
|
256
|
+
systemPrompt,
|
|
257
|
+
maxTurns: 3,
|
|
258
|
+
model: criticInfo?.model ?? 'claude-sonnet-4-20250514',
|
|
259
|
+
}, criticTask, {
|
|
260
|
+
config,
|
|
261
|
+
taskType: 'evaluation',
|
|
262
|
+
autonomous: true,
|
|
263
|
+
provider: criticInfo?.provider,
|
|
264
|
+
});
|
|
265
|
+
return criticRun.output;
|
|
266
|
+
}, agent.name);
|
|
267
|
+
if (multiResult.medianScore > 0) {
|
|
268
|
+
result.experiment.metrics.qualityScore = multiResult.medianScore;
|
|
269
|
+
result.experiment.feedback = {
|
|
270
|
+
score: multiResult.medianScore,
|
|
271
|
+
report: multiResult.combinedReport,
|
|
272
|
+
evaluator: 'multi-critic',
|
|
273
|
+
};
|
|
274
|
+
await memory.saveExperiment(result.experiment);
|
|
275
|
+
console.log(`[darwin] Multi-Critic scores:`);
|
|
276
|
+
for (const c of multiResult.critics) {
|
|
277
|
+
console.log(` ${c.critic}: ${c.score > 0 ? `${c.score}/10` : 'FAILED'}`);
|
|
278
|
+
}
|
|
279
|
+
console.log(`[darwin] Median score: ${multiResult.medianScore}/10`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
// ── Single Critic Mode (legacy) ───────────────
|
|
284
|
+
console.log(`\n[darwin] Evaluating with ${evaluatorName}...`);
|
|
285
|
+
const criticAgent = resolveAgent(evaluatorName);
|
|
286
|
+
const criticTask = `Evaluate the following ${agent.role} output for the task "${task}":\n\n${result.output}`;
|
|
287
|
+
const criticResult = await runAgent(criticAgent, criticTask, {
|
|
288
|
+
config,
|
|
289
|
+
taskType: 'evaluation',
|
|
290
|
+
autonomous: true,
|
|
291
|
+
});
|
|
292
|
+
// Parse critic score (primary: ===SCORE=== format, fallback: "X/10" pattern)
|
|
293
|
+
const scoreMatch = criticResult.output.match(/===SCORE===\s*(\d+(?:\.\d+)?)/);
|
|
294
|
+
let score = scoreMatch ? parseFloat(scoreMatch[1]) : null;
|
|
295
|
+
if (score === null) {
|
|
296
|
+
const fallback = criticResult.output.match(/\b(\d+(?:\.\d+)?)\s*\/\s*10\b/);
|
|
297
|
+
if (fallback) {
|
|
298
|
+
score = parseFloat(fallback[1]);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
if (score !== null) {
|
|
302
|
+
score = Math.max(1, Math.min(10, score));
|
|
303
|
+
}
|
|
304
|
+
if (score !== null) {
|
|
305
|
+
result.experiment.metrics.qualityScore = score;
|
|
306
|
+
result.experiment.feedback = {
|
|
307
|
+
score,
|
|
308
|
+
report: criticResult.output,
|
|
309
|
+
evaluator: evaluatorName,
|
|
310
|
+
};
|
|
311
|
+
await memory.saveExperiment(result.experiment);
|
|
312
|
+
console.log(`[darwin] Critic score: ${score}/10`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// Darwin evolution loop (unless skipped)
|
|
317
|
+
if (!flags.noEvolve && agent.evolution?.enabled) {
|
|
318
|
+
const tracker = new ExperimentTracker(memory);
|
|
319
|
+
const patterns = new PatternDetector(memory);
|
|
320
|
+
const safety = new SafetyGate();
|
|
321
|
+
// The optimizer uses Claude CLI to generate improved prompts
|
|
322
|
+
const optimizer = new PromptOptimizer(async (metaPrompt) => {
|
|
323
|
+
const optimizerResult = await runAgent({
|
|
324
|
+
name: 'optimizer',
|
|
325
|
+
role: 'Prompt Optimizer',
|
|
326
|
+
description: 'Generates improved prompt variants',
|
|
327
|
+
type: 'llm',
|
|
328
|
+
systemPrompt: 'You are a prompt optimization expert. Return ONLY the improved prompt text.',
|
|
329
|
+
maxTurns: 3,
|
|
330
|
+
model: 'claude-sonnet-4-20250514',
|
|
331
|
+
}, metaPrompt, { config, taskType: 'optimization', autonomous: true });
|
|
332
|
+
return optimizerResult.output;
|
|
333
|
+
});
|
|
334
|
+
const notifications = loadNotificationConfig();
|
|
335
|
+
const loop = new DarwinLoop({ memory, tracker, optimizer, safety, patterns, agent, notifications });
|
|
336
|
+
console.log(`\n[darwin] Evolution: Running Darwin loop...`);
|
|
337
|
+
const evoResult = await loop.afterRun(result.experiment);
|
|
338
|
+
if (evoResult.rolledBack) {
|
|
339
|
+
console.log(`[darwin] ROLLBACK: ${evoResult.message}`);
|
|
340
|
+
}
|
|
341
|
+
else if (evoResult.abTestStarted) {
|
|
342
|
+
console.log(`[darwin] EVOLVED: ${evoResult.message}`);
|
|
343
|
+
}
|
|
344
|
+
else if (evoResult.abTestCompleted) {
|
|
345
|
+
console.log(`[darwin] A/B TEST COMPLETE: ${evoResult.message}`);
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
console.log(`[darwin] ${evoResult.message}`);
|
|
349
|
+
}
|
|
350
|
+
if (evoResult.patternsFound.length > 0) {
|
|
351
|
+
console.log(`[darwin] Patterns detected:`);
|
|
352
|
+
for (const p of evoResult.patternsFound.slice(0, 5)) {
|
|
353
|
+
console.log(` ${p.type}: ${p.description}`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
// Print composite score
|
|
358
|
+
const metrics = result.experiment.metrics;
|
|
359
|
+
if (metrics.qualityScore !== null) {
|
|
360
|
+
console.log(`\n╔═══════════════════════════════════════╗`);
|
|
361
|
+
console.log(`║ ${agent.name.toUpperCase().padEnd(35)} ║`);
|
|
362
|
+
console.log(`╠═══════════════════════════════════════╣`);
|
|
363
|
+
console.log(`║ Score: ${String(metrics.qualityScore).padEnd(5)}/10 ║`);
|
|
364
|
+
console.log(`║ Sources: ${String(metrics.sourceCount).padEnd(28)} ║`);
|
|
365
|
+
console.log(`║ Length: ${String(metrics.outputLength).padEnd(22)} chars ║`);
|
|
366
|
+
console.log(`║ Duration: ${duration.padEnd(24)} s ║`);
|
|
367
|
+
console.log(`╚═══════════════════════════════════════╝`);
|
|
368
|
+
}
|
|
369
|
+
// memory.close() handled by try/finally in runCommand()
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CjE"}
|