darwin-agents 0.4.9 → 0.5.0-alpha.2
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/CHANGELOG.md +85 -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 +75 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.js +255 -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 +326 -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 +153 -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/src/core/trace-capture.d.ts +107 -0
- package/dist/src/core/trace-capture.d.ts.map +1 -0
- package/dist/src/core/trace-capture.js +183 -0
- package/dist/src/core/trace-capture.js.map +1 -0
- package/dist/src/evolution/optimizer-gepa.d.ts +149 -0
- package/dist/src/evolution/optimizer-gepa.d.ts.map +1 -0
- package/dist/src/evolution/optimizer-gepa.js +198 -0
- package/dist/src/evolution/optimizer-gepa.js.map +1 -0
- package/dist/src/evolution/pareto.d.ts +116 -0
- package/dist/src/evolution/pareto.d.ts.map +1 -0
- package/dist/src/evolution/pareto.js +140 -0
- package/dist/src/evolution/pareto.js.map +1 -0
- package/dist/src/evolution/reflector.d.ts +107 -0
- package/dist/src/evolution/reflector.d.ts.map +1 -0
- package/dist/src/evolution/reflector.js +158 -0
- package/dist/src/evolution/reflector.js.map +1 -0
- package/dist/src/evolution/run-prompt-fn.d.ts +11 -0
- package/dist/src/evolution/run-prompt-fn.d.ts.map +1 -0
- package/dist/src/evolution/run-prompt-fn.js +11 -0
- package/dist/src/evolution/run-prompt-fn.js.map +1 -0
- package/dist/src/index.d.ts +7 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/memory/postgres-memory.d.ts.map +1 -1
- package/dist/src/memory/postgres-memory.js +38 -3
- package/dist/src/memory/postgres-memory.js.map +1 -1
- package/dist/src/memory/sqlite-memory.d.ts.map +1 -1
- package/dist/src/memory/sqlite-memory.js +47 -2
- package/dist/src/memory/sqlite-memory.js.map +1 -1
- package/dist/src/types.d.ts +136 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- 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 +1 -1
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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* darwin status [agent]
|
|
3
|
+
*
|
|
4
|
+
* Shows evolution status, metrics, and patterns for an agent (or all agents).
|
|
5
|
+
*/
|
|
6
|
+
import { createMemory } from '../memory/index.js';
|
|
7
|
+
import { loadConfig } from '../core/agent.js';
|
|
8
|
+
import { builtinAgents } from '../agents/index.js';
|
|
9
|
+
export async function statusCommand(args) {
|
|
10
|
+
const agentName = args[0];
|
|
11
|
+
const config = await loadConfig();
|
|
12
|
+
const memory = createMemory(config);
|
|
13
|
+
await memory.init();
|
|
14
|
+
const state = await memory.getState();
|
|
15
|
+
if (agentName) {
|
|
16
|
+
// Show status for specific agent
|
|
17
|
+
await showAgentStatus(agentName, state, memory);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
// Show overview of all agents
|
|
21
|
+
console.log('\n╔═══════════════════════════════════════════════════════╗');
|
|
22
|
+
console.log('║ DARWIN STATUS ║');
|
|
23
|
+
console.log('╠═══════════════════════════════════════════════════════╣');
|
|
24
|
+
const agents = Object.keys({ ...builtinAgents, ...state.experimentCounts });
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
for (const name of agents) {
|
|
27
|
+
if (seen.has(name))
|
|
28
|
+
continue;
|
|
29
|
+
seen.add(name);
|
|
30
|
+
const count = state.experimentCounts[name] ?? 0;
|
|
31
|
+
if (count === 0 && !builtinAgents[name])
|
|
32
|
+
continue;
|
|
33
|
+
const version = state.activeVersions[name] ?? 'v1';
|
|
34
|
+
const failures = state.consecutiveFailures[name] ?? 0;
|
|
35
|
+
const abTest = state.abTests[name];
|
|
36
|
+
const bar = count > 0 ? '█'.repeat(Math.min(count, 20)) + '░'.repeat(Math.max(0, 20 - count)) : '░'.repeat(20);
|
|
37
|
+
const statusIcon = failures > 2 ? '⚠' : abTest ? '🔄' : count > 0 ? '✓' : '·';
|
|
38
|
+
console.log(`║ ${statusIcon} ${name.padEnd(15)} ${version.padEnd(4)} ${bar} ${String(count).padStart(3)} runs ║`);
|
|
39
|
+
}
|
|
40
|
+
if (seen.size === 0) {
|
|
41
|
+
console.log('║ No experiments yet. Run: darwin run writer "Hello" ║');
|
|
42
|
+
}
|
|
43
|
+
console.log('╚═══════════════════════════════════════════════════════╝');
|
|
44
|
+
}
|
|
45
|
+
await memory.close();
|
|
46
|
+
}
|
|
47
|
+
async function showAgentStatus(agentName, state, memory) {
|
|
48
|
+
const typedState = state;
|
|
49
|
+
const experiments = await memory.loadExperiments(agentName, 50);
|
|
50
|
+
const versions = await memory.getAllPromptVersions(agentName);
|
|
51
|
+
const activeVersion = typedState.activeVersions[agentName] ?? 'v1';
|
|
52
|
+
const abTest = typedState.abTests[agentName];
|
|
53
|
+
const totalRuns = typedState.experimentCounts[agentName] ?? 0;
|
|
54
|
+
// Calculate metrics
|
|
55
|
+
const scored = experiments.filter(e => e.metrics.qualityScore !== null);
|
|
56
|
+
const avgQuality = scored.length > 0
|
|
57
|
+
? scored.reduce((sum, e) => sum + (e.metrics.qualityScore ?? 0), 0) / scored.length
|
|
58
|
+
: 0;
|
|
59
|
+
const avgSources = experiments.length > 0
|
|
60
|
+
? experiments.reduce((sum, e) => sum + e.metrics.sourceCount, 0) / experiments.length
|
|
61
|
+
: 0;
|
|
62
|
+
const avgDuration = experiments.length > 0
|
|
63
|
+
? experiments.reduce((sum, e) => sum + e.metrics.durationMs, 0) / experiments.length / 1000
|
|
64
|
+
: 0;
|
|
65
|
+
const successRate = experiments.length > 0
|
|
66
|
+
? experiments.filter(e => e.success).length / experiments.length * 100
|
|
67
|
+
: 0;
|
|
68
|
+
// Calculate improvement since v1
|
|
69
|
+
const v1Exps = experiments.filter(e => e.promptVersion === 'v1');
|
|
70
|
+
const latestExps = experiments.filter(e => e.promptVersion === activeVersion);
|
|
71
|
+
const v1Quality = v1Exps.filter(e => e.metrics.qualityScore !== null).length > 0
|
|
72
|
+
? v1Exps.reduce((s, e) => s + (e.metrics.qualityScore ?? 0), 0) / v1Exps.filter(e => e.metrics.qualityScore !== null).length
|
|
73
|
+
: 0;
|
|
74
|
+
// Quality bar
|
|
75
|
+
const qualityBar = avgQuality > 0
|
|
76
|
+
? '█'.repeat(Math.round(avgQuality)) + '░'.repeat(10 - Math.round(avgQuality))
|
|
77
|
+
: '░'.repeat(10);
|
|
78
|
+
console.log('');
|
|
79
|
+
console.log('╔══════════════════════════════════════════════════════════╗');
|
|
80
|
+
console.log(`║ DARWIN STATUS: ${agentName.padEnd(40)} ║`);
|
|
81
|
+
console.log('╠══════════════════════════════════════════════════════════╣');
|
|
82
|
+
console.log('║ ║');
|
|
83
|
+
console.log(`║ Prompt Version: ${activeVersion.padEnd(5)} (${versions.length} total versions)${' '.repeat(Math.max(0, 18 - String(versions.length).length))}║`);
|
|
84
|
+
console.log(`║ Total Runs: ${String(totalRuns).padEnd(43)} ║`);
|
|
85
|
+
console.log('║ ║');
|
|
86
|
+
console.log(`║ Quality Score ${qualityBar} ${avgQuality.toFixed(1)}/10${v1Quality > 0 && activeVersion !== 'v1' ? ` (+${(avgQuality - v1Quality).toFixed(1)} since v1)` : ''}${' '.repeat(Math.max(0, 16 - (v1Quality > 0 && activeVersion !== 'v1' ? ` (+${(avgQuality - v1Quality).toFixed(1)} since v1)`.length : 0)))}║`);
|
|
87
|
+
console.log(`║ Success Rate ${String(successRate.toFixed(0)).padStart(3)}%${' '.repeat(35)}║`);
|
|
88
|
+
console.log(`║ Avg Duration ${avgDuration.toFixed(1)}s${' '.repeat(Math.max(0, 36 - String(avgDuration.toFixed(1)).length))}║`);
|
|
89
|
+
console.log(`║ Avg Sources ${avgSources.toFixed(1)}${' '.repeat(Math.max(0, 37 - String(avgSources.toFixed(1)).length))}║`);
|
|
90
|
+
console.log('║ ║');
|
|
91
|
+
// A/B Test status
|
|
92
|
+
if (abTest) {
|
|
93
|
+
console.log(`║ A/B Test: ${abTest.versionA} vs ${abTest.versionB} (${abTest.runsA}/${abTest.runsB} runs)${' '.repeat(Math.max(0, 20))}║`);
|
|
94
|
+
}
|
|
95
|
+
// Version history
|
|
96
|
+
if (versions.length > 1) {
|
|
97
|
+
console.log('║ Evolution History: ║');
|
|
98
|
+
for (const v of versions.slice(-3)) {
|
|
99
|
+
const marker = v.active ? '→' : ' ';
|
|
100
|
+
console.log(`║ ${marker} ${v.version}: ${v.changeReason.slice(0, 45).padEnd(45)}${v.stats.totalRuns > 0 ? ` (${v.stats.avgQuality.toFixed(1)})` : ''} ║`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Task type breakdown
|
|
104
|
+
const taskTypes = new Map();
|
|
105
|
+
for (const exp of experiments) {
|
|
106
|
+
const existing = taskTypes.get(exp.taskType) ?? { count: 0, avgQuality: 0 };
|
|
107
|
+
existing.count++;
|
|
108
|
+
if (exp.metrics.qualityScore !== null) {
|
|
109
|
+
existing.avgQuality = (existing.avgQuality * (existing.count - 1) + exp.metrics.qualityScore) / existing.count;
|
|
110
|
+
}
|
|
111
|
+
taskTypes.set(exp.taskType, existing);
|
|
112
|
+
}
|
|
113
|
+
if (taskTypes.size > 1) {
|
|
114
|
+
console.log('║ ║');
|
|
115
|
+
console.log('║ Performance by Task Type: ║');
|
|
116
|
+
for (const [type, data] of taskTypes) {
|
|
117
|
+
console.log(`║ ${type.padEnd(15)} ${data.avgQuality.toFixed(1)}/10 (${data.count} runs)${' '.repeat(Math.max(0, 20 - type.length))}║`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
console.log('║ ║');
|
|
121
|
+
console.log('╚══════════════════════════════════════════════════════════╝');
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Darwin — Agent Definition & Config
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating validated agent definitions
|
|
5
|
+
* and merging config with sensible defaults.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentDefinition, DarwinConfig } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Define and validate an agent definition.
|
|
10
|
+
* Returns the definition with defaults applied for optional fields.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const researcher = defineAgent({
|
|
15
|
+
* name: 'researcher',
|
|
16
|
+
* role: 'Deep Research Agent',
|
|
17
|
+
* description: 'Researches topics with web sources',
|
|
18
|
+
* systemPrompt: 'You are a research agent...',
|
|
19
|
+
* mcp: ['tavily', 'memory'],
|
|
20
|
+
* tools: ['Read', 'Glob', 'Grep'],
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function defineAgent(def: AgentDefinition): AgentDefinition;
|
|
25
|
+
/**
|
|
26
|
+
* Define a Darwin configuration by merging partial overrides with defaults.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* const config = defineConfig({
|
|
31
|
+
* memory: 'postgres',
|
|
32
|
+
* postgresUrl: 'postgresql://...',
|
|
33
|
+
* evolution: { enabled: true },
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function defineConfig(config: Partial<DarwinConfig>): DarwinConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Load config from darwin.config.ts in the current working directory.
|
|
40
|
+
* Falls back to defaults if no config file is found.
|
|
41
|
+
*
|
|
42
|
+
* Also checks for DARWIN_POSTGRES_URL env var and auto-sets
|
|
43
|
+
* memory: 'postgres' + postgresUrl when present.
|
|
44
|
+
*/
|
|
45
|
+
export declare function loadConfig(): Promise<DarwinConfig>;
|
|
46
|
+
/**
|
|
47
|
+
* Synchronous config loader — returns defaults only.
|
|
48
|
+
* Used by callers that cannot await (kept for backward compatibility).
|
|
49
|
+
*
|
|
50
|
+
* @deprecated Use loadConfig() (async) instead.
|
|
51
|
+
*/
|
|
52
|
+
export declare function loadConfigSync(): DarwinConfig;
|
|
53
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoEjE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAsBjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAWxE;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CA0BxD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAW7C"}
|