claude-mycelium 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-meta/_inhibitors.ndjson +1287 -0
- package/.agent-meta/_quarantine.json +45 -0
- package/.agent-meta/config.json +9 -0
- package/.claude/memory.db +0 -0
- package/.claude/settings.local.json +4 -1
- package/README.md +81 -235
- package/SECURITY.md +145 -0
- package/dist/agent/worker.d.ts +8 -0
- package/dist/agent/worker.d.ts.map +1 -0
- package/dist/agent/worker.js +97 -0
- package/dist/agent/worker.js.map +1 -0
- package/dist/bin.d.ts +7 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +11 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/cost.d.ts +10 -0
- package/dist/cli/cost.d.ts.map +1 -0
- package/dist/cli/cost.js +163 -0
- package/dist/cli/cost.js.map +1 -0
- package/dist/cli/gc.d.ts +10 -0
- package/dist/cli/gc.d.ts.map +1 -0
- package/dist/cli/gc.js +108 -0
- package/dist/cli/gc.js.map +1 -0
- package/dist/cli/gradients.d.ts +10 -0
- package/dist/cli/gradients.d.ts.map +1 -0
- package/dist/cli/gradients.js +69 -0
- package/dist/cli/gradients.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +72 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +11 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +97 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/status.d.ts +10 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +191 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/coordination/file-locks.d.ts +42 -0
- package/dist/coordination/file-locks.d.ts.map +1 -0
- package/dist/coordination/file-locks.js +269 -0
- package/dist/coordination/file-locks.js.map +1 -0
- package/dist/coordination/index.d.ts +4 -0
- package/dist/coordination/index.d.ts.map +1 -1
- package/dist/coordination/index.js +4 -0
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/inhibitors.d.ts +84 -0
- package/dist/coordination/inhibitors.d.ts.map +1 -0
- package/dist/coordination/inhibitors.js +290 -0
- package/dist/coordination/inhibitors.js.map +1 -0
- package/dist/coordination/process-manager.d.ts +73 -0
- package/dist/coordination/process-manager.d.ts.map +1 -0
- package/dist/coordination/process-manager.js +144 -0
- package/dist/coordination/process-manager.js.map +1 -0
- package/dist/core/agent-executor.d.ts.map +1 -1
- package/dist/core/agent-executor.js +28 -10
- package/dist/core/agent-executor.js.map +1 -1
- package/dist/core/change-applier.d.ts +29 -5
- package/dist/core/change-applier.d.ts.map +1 -1
- package/dist/core/change-applier.js +254 -24
- package/dist/core/change-applier.js.map +1 -1
- package/dist/core/signals/churn.d.ts.map +1 -1
- package/dist/core/signals/churn.js +6 -4
- package/dist/core/signals/churn.js.map +1 -1
- package/dist/core/signals/debt.d.ts.map +1 -1
- package/dist/core/signals/debt.js +4 -3
- package/dist/core/signals/debt.js.map +1 -1
- package/dist/cost/cost-tracker.d.ts.map +1 -1
- package/dist/cost/cost-tracker.js +2 -0
- package/dist/cost/cost-tracker.js.map +1 -1
- package/dist/gc/index.d.ts +17 -0
- package/dist/gc/index.d.ts.map +1 -0
- package/dist/gc/index.js +17 -0
- package/dist/gc/index.js.map +1 -0
- package/dist/gc/runner.d.ts +39 -0
- package/dist/gc/runner.d.ts.map +1 -0
- package/dist/gc/runner.js +277 -0
- package/dist/gc/runner.js.map +1 -0
- package/dist/gc/trace-compactor.d.ts +31 -0
- package/dist/gc/trace-compactor.d.ts.map +1 -0
- package/dist/gc/trace-compactor.js +162 -0
- package/dist/gc/trace-compactor.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/quarantine/explorer.d.ts +65 -0
- package/dist/quarantine/explorer.d.ts.map +1 -0
- package/dist/quarantine/explorer.js +175 -0
- package/dist/quarantine/explorer.js.map +1 -0
- package/dist/quarantine/index.d.ts +7 -0
- package/dist/quarantine/index.d.ts.map +1 -0
- package/dist/quarantine/index.js +7 -0
- package/dist/quarantine/index.js.map +1 -0
- package/dist/quarantine/manager.d.ts +75 -0
- package/dist/quarantine/manager.d.ts.map +1 -0
- package/dist/quarantine/manager.js +275 -0
- package/dist/quarantine/manager.js.map +1 -0
- package/dist/task/acceptance.d.ts +29 -0
- package/dist/task/acceptance.d.ts.map +1 -0
- package/dist/task/acceptance.js +228 -0
- package/dist/task/acceptance.js.map +1 -0
- package/dist/task/executor.d.ts +30 -0
- package/dist/task/executor.d.ts.map +1 -0
- package/dist/task/executor.js +429 -0
- package/dist/task/executor.js.map +1 -0
- package/dist/task/index.d.ts +12 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +12 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/planner.d.ts +21 -0
- package/dist/task/planner.d.ts.map +1 -0
- package/dist/task/planner.js +253 -0
- package/dist/task/planner.js.map +1 -0
- package/dist/task/storage.d.ts +46 -0
- package/dist/task/storage.d.ts.map +1 -0
- package/dist/task/storage.js +266 -0
- package/dist/task/storage.js.map +1 -0
- package/dist/trace/trace-event.d.ts +2 -18
- package/dist/trace/trace-event.d.ts.map +1 -1
- package/dist/trace/trace-event.js +6 -6
- package/dist/trace/trace-event.js.map +1 -1
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +54 -15
- package/dist/utils/file-utils.js.map +1 -1
- package/docs/PHASE5_IMPLEMENTATION.md +237 -0
- package/docs/PHASES-3-7-COMPLETE.md +177 -0
- package/docs/PHASE_4_COMPLETE.md +135 -0
- package/docs/PHASE_7_DELIVERABLES.md +295 -0
- package/docs/PHASE_7_IMPLEMENTATION.md +306 -0
- package/docs/PHASE_7_SUMMARY.txt +195 -0
- package/docs/RELEASE-NOTES-v2.1.md +213 -0
- package/docs/ROADMAP.md +64 -57
- package/docs/SECURITY-AUDIT.md +387 -0
- package/docs/SNAPSHOT.md +59 -32
- package/docs/implementation/phase3-summary.md +220 -0
- package/package.json +19 -11
- package/src/agent/worker.ts +111 -0
- package/src/bin.ts +13 -0
- package/src/cli/cost.ts +210 -0
- package/src/cli/gc.ts +138 -0
- package/src/cli/gradients.ts +95 -0
- package/src/cli/index.ts +79 -0
- package/src/cli/init.ts +139 -0
- package/src/cli/status.ts +218 -0
- package/src/coordination/file-locks.ts +300 -0
- package/src/coordination/index.ts +4 -0
- package/src/coordination/inhibitors.ts +345 -0
- package/src/coordination/process-manager.ts +199 -0
- package/src/core/agent-executor.ts +20 -4
- package/src/core/signals/churn.ts +8 -5
- package/src/core/signals/debt.ts +4 -3
- package/src/cost/cost-tracker.ts +2 -0
- package/src/gc/index.ts +17 -0
- package/src/gc/runner.ts +314 -0
- package/src/gc/trace-compactor.ts +187 -0
- package/src/index.ts +7 -1
- package/src/prompts/index.ts +2 -1
- package/src/quarantine/explorer.ts +234 -0
- package/src/quarantine/index.ts +7 -0
- package/src/quarantine/manager.ts +336 -0
- package/src/task/acceptance.ts +267 -0
- package/src/task/executor.ts +538 -0
- package/src/task/index.ts +38 -0
- package/src/task/planner.ts +294 -0
- package/src/task/storage.ts +332 -0
- package/src/trace/trace-event.ts +7 -26
- package/src/utils/file-utils.ts +61 -15
- package/tests/cli/gc.test.ts +206 -0
- package/tests/cli/init.test.ts +181 -0
- package/tests/cli/status.test.ts +282 -0
- package/tests/coordination/file-locks.test.ts +196 -0
- package/tests/coordination/inhibitors.test.ts +459 -0
- package/tests/coordination/integration.test.ts +195 -0
- package/tests/coordination/process-manager.test.ts +165 -0
- package/tests/gc/trace-compactor.test.ts +245 -0
- package/tests/integration/phase-7.test.ts +145 -0
- package/tests/quarantine/explorer.test.ts +381 -0
- package/tests/quarantine/manager.test.ts +399 -0
- package/tests/security/command-injection.test.ts +88 -0
- package/tests/security/path-traversal.test.ts +103 -0
- package/tests/task/acceptance.test.ts +411 -0
- package/tests/task/executor.test.ts +421 -0
- package/tests/task/planner.test.ts +359 -0
- package/tsconfig.json +2 -2
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Execution Implementation
|
|
3
|
+
* Per second-spec §12.2: Task Step Execution
|
|
4
|
+
*
|
|
5
|
+
* Executes task steps in dependency order, tracking progress
|
|
6
|
+
* and handling create mode appropriately.
|
|
7
|
+
*/
|
|
8
|
+
import { callLLM, calculateCost } from '../llm/anthropic-client.js';
|
|
9
|
+
import { logDebug, logError } from '../utils/logger.js';
|
|
10
|
+
import { fileExists, readFile, writeFile } from '../utils/file-utils.js';
|
|
11
|
+
import { ciProvider } from '../utils/ci-provider.js';
|
|
12
|
+
import { createTraceEvent, recordTraceEvent } from '../trace/index.js';
|
|
13
|
+
import { calculateGradient } from '../core/gradient.js';
|
|
14
|
+
/**
|
|
15
|
+
* Execute a complete task by running all steps in dependency order
|
|
16
|
+
*/
|
|
17
|
+
export async function executeTask(task) {
|
|
18
|
+
logDebug('Executing task', { taskId: task.id, steps: task.plan?.steps.length });
|
|
19
|
+
if (!task.plan) {
|
|
20
|
+
throw new Error('Cannot execute task without a plan');
|
|
21
|
+
}
|
|
22
|
+
const waves = getParallelizableSteps(task.plan.steps);
|
|
23
|
+
for (let waveIndex = 0; waveIndex < waves.length; waveIndex++) {
|
|
24
|
+
const wave = waves[waveIndex];
|
|
25
|
+
logDebug('Executing wave', { wave: waveIndex + 1, steps: wave.length });
|
|
26
|
+
// Execute all steps in this wave (they have no dependencies on each other)
|
|
27
|
+
const results = await Promise.all(wave.map(step => executeStep(task, step)));
|
|
28
|
+
// Check for failures
|
|
29
|
+
const failed = results.find(r => !r.success);
|
|
30
|
+
if (failed) {
|
|
31
|
+
task.status = 'failed';
|
|
32
|
+
task.error = failed.error;
|
|
33
|
+
logError('Task step failed', new Error(failed.error), { taskId: task.id });
|
|
34
|
+
return task;
|
|
35
|
+
}
|
|
36
|
+
// Update completed steps
|
|
37
|
+
for (let i = 0; i < wave.length; i++) {
|
|
38
|
+
wave[i].completed = true;
|
|
39
|
+
wave[i].trace_id = results[i].trace_id;
|
|
40
|
+
task.steps_completed++;
|
|
41
|
+
}
|
|
42
|
+
// Track file changes
|
|
43
|
+
for (let i = 0; i < wave.length; i++) {
|
|
44
|
+
if (wave[i].mode === 'create') {
|
|
45
|
+
task.files_created.push(wave[i].target_file);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (!task.files_modified.includes(wave[i].target_file)) {
|
|
49
|
+
task.files_modified.push(wave[i].target_file);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const traceId = results[i].trace_id;
|
|
53
|
+
if (traceId !== undefined) {
|
|
54
|
+
task.traces.push(traceId);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
task.status = 'completed';
|
|
59
|
+
logDebug('Task execution completed', { taskId: task.id });
|
|
60
|
+
return task;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Execute a single task step
|
|
64
|
+
*/
|
|
65
|
+
export async function executeStep(task, step) {
|
|
66
|
+
logDebug('Executing step', {
|
|
67
|
+
taskId: task.id,
|
|
68
|
+
stepOrder: step.order,
|
|
69
|
+
mode: step.mode,
|
|
70
|
+
file: step.target_file,
|
|
71
|
+
});
|
|
72
|
+
try {
|
|
73
|
+
if (step.mode === 'create') {
|
|
74
|
+
return await executeCreateStep(task, step);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return await executeModifyStep(task, step);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
82
|
+
const errorObj = error instanceof Error ? error : new Error(String(error));
|
|
83
|
+
logError('Step execution failed', errorObj, {
|
|
84
|
+
taskId: task.id,
|
|
85
|
+
stepOrder: step.order,
|
|
86
|
+
});
|
|
87
|
+
return { success: false, error: errorMsg };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Track progress of task execution
|
|
92
|
+
*/
|
|
93
|
+
export function trackProgress(task) {
|
|
94
|
+
const percentage = task.steps_total > 0
|
|
95
|
+
? Math.round((task.steps_completed / task.steps_total) * 100)
|
|
96
|
+
: 0;
|
|
97
|
+
return {
|
|
98
|
+
percentage,
|
|
99
|
+
completed: task.steps_completed,
|
|
100
|
+
total: task.steps_total,
|
|
101
|
+
status: task.status,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Execute a create mode step (new file)
|
|
106
|
+
*/
|
|
107
|
+
async function executeCreateStep(task, step) {
|
|
108
|
+
// Check if file already exists
|
|
109
|
+
if (fileExists(step.target_file)) {
|
|
110
|
+
return {
|
|
111
|
+
success: false,
|
|
112
|
+
error: `Cannot create file ${step.target_file} - already exists`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Build prompt for file creation
|
|
116
|
+
const systemPrompt = buildCreateSystemPrompt();
|
|
117
|
+
const userPrompt = buildCreateUserPrompt(task, step);
|
|
118
|
+
// Call LLM to generate file content
|
|
119
|
+
const response = await callLLM({
|
|
120
|
+
prompt: userPrompt,
|
|
121
|
+
systemPrompt,
|
|
122
|
+
temperature: 0.5,
|
|
123
|
+
maxTokens: 4000,
|
|
124
|
+
});
|
|
125
|
+
// Extract code from response
|
|
126
|
+
const fileContent = extractCodeFromResponse(response.content);
|
|
127
|
+
if (!fileContent) {
|
|
128
|
+
return {
|
|
129
|
+
success: false,
|
|
130
|
+
error: 'Failed to extract code from LLM response',
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// Write the file
|
|
134
|
+
writeFile(step.target_file, fileContent);
|
|
135
|
+
// Run CI to validate
|
|
136
|
+
const ciResult = await ciProvider.run({
|
|
137
|
+
additions: fileContent.split('\n').length,
|
|
138
|
+
deletions: 0,
|
|
139
|
+
files_touched: [step.target_file],
|
|
140
|
+
});
|
|
141
|
+
if (!ciResult.passed) {
|
|
142
|
+
// Revert - delete the file
|
|
143
|
+
try {
|
|
144
|
+
const fs = await import('fs');
|
|
145
|
+
fs.unlinkSync(step.target_file);
|
|
146
|
+
}
|
|
147
|
+
catch { }
|
|
148
|
+
return {
|
|
149
|
+
success: false,
|
|
150
|
+
error: `CI failed: ${ciResult.output}`,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
// Record trace
|
|
154
|
+
const traceId = await recordCreateTrace(step.target_file, fileContent, response.usage, response.model, task.id);
|
|
155
|
+
logDebug('Create step completed', {
|
|
156
|
+
file: step.target_file,
|
|
157
|
+
lines: fileContent.split('\n').length,
|
|
158
|
+
traceId,
|
|
159
|
+
});
|
|
160
|
+
return { success: true, trace_id: traceId };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Execute a modify mode step (existing file)
|
|
164
|
+
*/
|
|
165
|
+
async function executeModifyStep(task, step) {
|
|
166
|
+
if (!fileExists(step.target_file)) {
|
|
167
|
+
return {
|
|
168
|
+
success: false,
|
|
169
|
+
error: `Cannot modify file ${step.target_file} - does not exist`,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const originalContent = readFile(step.target_file);
|
|
173
|
+
const gradientBefore = await calculateGradient(step.target_file);
|
|
174
|
+
// Build prompt for modification
|
|
175
|
+
const systemPrompt = buildModifySystemPrompt(step.mode);
|
|
176
|
+
const userPrompt = buildModifyUserPrompt(task, step, originalContent);
|
|
177
|
+
// Call LLM to generate changes
|
|
178
|
+
const response = await callLLM({
|
|
179
|
+
prompt: userPrompt,
|
|
180
|
+
systemPrompt,
|
|
181
|
+
temperature: 0.5,
|
|
182
|
+
maxTokens: 4000,
|
|
183
|
+
});
|
|
184
|
+
// Extract modified content
|
|
185
|
+
const modifiedContent = extractCodeFromResponse(response.content);
|
|
186
|
+
if (!modifiedContent) {
|
|
187
|
+
return {
|
|
188
|
+
success: false,
|
|
189
|
+
error: 'Failed to extract modified code from LLM response',
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Apply changes
|
|
193
|
+
writeFile(step.target_file, modifiedContent);
|
|
194
|
+
// Calculate change stats
|
|
195
|
+
const changeSet = calculateChanges(originalContent, modifiedContent, step.target_file);
|
|
196
|
+
// Run CI
|
|
197
|
+
const ciResult = await ciProvider.run(changeSet);
|
|
198
|
+
if (!ciResult.passed) {
|
|
199
|
+
// Revert changes
|
|
200
|
+
writeFile(step.target_file, originalContent);
|
|
201
|
+
return {
|
|
202
|
+
success: false,
|
|
203
|
+
error: `CI failed: ${ciResult.output}`,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// Calculate metrics after
|
|
207
|
+
const gradientAfter = await calculateGradient(step.target_file);
|
|
208
|
+
// Record trace
|
|
209
|
+
const traceId = await recordModifyTrace(step.target_file, step.mode, gradientBefore, gradientAfter, changeSet, response.usage, response.model, task.id);
|
|
210
|
+
logDebug('Modify step completed', {
|
|
211
|
+
file: step.target_file,
|
|
212
|
+
mode: step.mode,
|
|
213
|
+
gradientDelta: gradientBefore.score - gradientAfter.score,
|
|
214
|
+
traceId,
|
|
215
|
+
});
|
|
216
|
+
return { success: true, trace_id: traceId };
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Helper to calculate file metrics (not used in current implementation)
|
|
220
|
+
*/
|
|
221
|
+
/*
|
|
222
|
+
async function calculateFileMetrics(filePath: string, allFiles: string[]): Promise<FileMetrics> {
|
|
223
|
+
const [complexity, churn, errorRate, debt, centrality] = await Promise.all([
|
|
224
|
+
calculateComplexity(filePath),
|
|
225
|
+
calculateChurn(filePath),
|
|
226
|
+
calculateErrorRate(filePath),
|
|
227
|
+
calculateDebt(filePath),
|
|
228
|
+
calculateCentrality(filePath),
|
|
229
|
+
]);
|
|
230
|
+
|
|
231
|
+
return {
|
|
232
|
+
path: filePath,
|
|
233
|
+
complexity: complexity.normalized,
|
|
234
|
+
churn: churn.normalized,
|
|
235
|
+
error_rate: errorRate.normalized,
|
|
236
|
+
debt: debt.normalized,
|
|
237
|
+
centrality: centrality.normalized,
|
|
238
|
+
loc: getLineCount(filePath),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
*/
|
|
242
|
+
/**
|
|
243
|
+
* Get steps grouped by waves (parallelizable groups)
|
|
244
|
+
*/
|
|
245
|
+
function getParallelizableSteps(steps) {
|
|
246
|
+
const waves = [];
|
|
247
|
+
const completed = new Set();
|
|
248
|
+
while (completed.size < steps.length) {
|
|
249
|
+
// Find steps whose dependencies are all completed
|
|
250
|
+
const ready = steps.filter(step => !completed.has(step.order) &&
|
|
251
|
+
step.depends_on.every(dep => completed.has(dep)));
|
|
252
|
+
if (ready.length === 0) {
|
|
253
|
+
throw new Error('Circular dependency detected in task steps');
|
|
254
|
+
}
|
|
255
|
+
waves.push(ready);
|
|
256
|
+
ready.forEach(step => completed.add(step.order));
|
|
257
|
+
}
|
|
258
|
+
return waves;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Build system prompt for create mode
|
|
262
|
+
*/
|
|
263
|
+
function buildCreateSystemPrompt() {
|
|
264
|
+
return `You are creating a new file as part of a larger task.
|
|
265
|
+
|
|
266
|
+
Output the complete file content wrapped in triple backticks with the language identifier.
|
|
267
|
+
|
|
268
|
+
Example:
|
|
269
|
+
\`\`\`typescript
|
|
270
|
+
// File content here
|
|
271
|
+
\`\`\`
|
|
272
|
+
|
|
273
|
+
Requirements:
|
|
274
|
+
- Include all necessary imports
|
|
275
|
+
- Add appropriate error handling
|
|
276
|
+
- Include JSDoc comments for exported functions
|
|
277
|
+
- Follow TypeScript best practices`;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Build user prompt for create mode
|
|
281
|
+
*/
|
|
282
|
+
function buildCreateUserPrompt(task, step) {
|
|
283
|
+
return `## Overall Task
|
|
284
|
+
${task.description}
|
|
285
|
+
|
|
286
|
+
## This Step
|
|
287
|
+
${step.description}
|
|
288
|
+
|
|
289
|
+
## File to Create
|
|
290
|
+
${step.target_file}
|
|
291
|
+
|
|
292
|
+
## Requirements
|
|
293
|
+
- Create a working implementation
|
|
294
|
+
- Include basic error handling
|
|
295
|
+
- Add type annotations
|
|
296
|
+
- Follow existing project patterns
|
|
297
|
+
|
|
298
|
+
Generate the complete file content.`;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Build system prompt for modify mode
|
|
302
|
+
*/
|
|
303
|
+
function buildModifySystemPrompt(mode) {
|
|
304
|
+
const modeInstructions = {
|
|
305
|
+
error_reducer: 'Focus on fixing bugs and adding error handling. Do not refactor for style.',
|
|
306
|
+
complexity_reducer: 'Focus on simplifying code structure. Extract functions, reduce nesting.',
|
|
307
|
+
debt_payer: 'Focus on fixing lint issues and improving types. Do not change logic.',
|
|
308
|
+
stabilizer: 'Focus on adding tests and documentation. Do not change implementation.',
|
|
309
|
+
explorer: 'You may challenge assumptions and propose larger changes within constraints.',
|
|
310
|
+
};
|
|
311
|
+
return `You are modifying an existing file in ${mode} mode.
|
|
312
|
+
|
|
313
|
+
${modeInstructions[mode]}
|
|
314
|
+
|
|
315
|
+
Output the complete modified file content wrapped in triple backticks.`;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Build user prompt for modify mode
|
|
319
|
+
*/
|
|
320
|
+
function buildModifyUserPrompt(task, step, currentContent) {
|
|
321
|
+
return `## Overall Task
|
|
322
|
+
${task.description}
|
|
323
|
+
|
|
324
|
+
## This Step
|
|
325
|
+
${step.description}
|
|
326
|
+
|
|
327
|
+
## Current File Content
|
|
328
|
+
\`\`\`typescript
|
|
329
|
+
${currentContent}
|
|
330
|
+
\`\`\`
|
|
331
|
+
|
|
332
|
+
Modify the file according to the step description and mode constraints.
|
|
333
|
+
Output the complete modified file.`;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Extract code from LLM response (handle markdown code blocks)
|
|
337
|
+
*/
|
|
338
|
+
function extractCodeFromResponse(content) {
|
|
339
|
+
// Try to find code in triple backticks
|
|
340
|
+
const codeBlockMatch = content.match(/```(?:typescript|ts|javascript|js)?\n([\s\S]*?)\n```/);
|
|
341
|
+
if (codeBlockMatch) {
|
|
342
|
+
return codeBlockMatch[1];
|
|
343
|
+
}
|
|
344
|
+
// If no code block found, check if entire content looks like code
|
|
345
|
+
if (content.includes('import') || content.includes('export') || content.includes('function')) {
|
|
346
|
+
return content.trim();
|
|
347
|
+
}
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Calculate changes between original and modified content
|
|
352
|
+
*/
|
|
353
|
+
function calculateChanges(original, modified, filePath) {
|
|
354
|
+
const originalLines = original.split('\n');
|
|
355
|
+
const modifiedLines = modified.split('\n');
|
|
356
|
+
// Simple diff: count added and removed lines
|
|
357
|
+
const additions = modifiedLines.length > originalLines.length
|
|
358
|
+
? modifiedLines.length - originalLines.length
|
|
359
|
+
: 0;
|
|
360
|
+
const deletions = originalLines.length > modifiedLines.length
|
|
361
|
+
? originalLines.length - modifiedLines.length
|
|
362
|
+
: 0;
|
|
363
|
+
return {
|
|
364
|
+
additions,
|
|
365
|
+
deletions,
|
|
366
|
+
files_touched: [filePath],
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Record trace for create step
|
|
371
|
+
*/
|
|
372
|
+
async function recordCreateTrace(filePath, content, usage, model, taskId) {
|
|
373
|
+
const cost = {
|
|
374
|
+
tokens_in: usage.inputTokens,
|
|
375
|
+
tokens_out: usage.outputTokens,
|
|
376
|
+
model,
|
|
377
|
+
estimated_usd: calculateCost(model, usage.inputTokens, usage.outputTokens),
|
|
378
|
+
};
|
|
379
|
+
// For create mode, gradient goes from 0 to 0 (no improvement measured)
|
|
380
|
+
const trace = createTraceEvent({
|
|
381
|
+
filePath,
|
|
382
|
+
mode: 'debt_payer', // Create is treated as debt_payer for metrics
|
|
383
|
+
gradientBefore: 0,
|
|
384
|
+
gradientAfter: 0,
|
|
385
|
+
metabolicCost: cost.estimated_usd * 100, // Normalize
|
|
386
|
+
efficiency: 0,
|
|
387
|
+
ciPassed: true,
|
|
388
|
+
changes: {
|
|
389
|
+
additions: content.split('\n').length,
|
|
390
|
+
deletions: 0,
|
|
391
|
+
files_touched: [filePath],
|
|
392
|
+
},
|
|
393
|
+
costRecord: cost,
|
|
394
|
+
notes: ['File created as part of task'],
|
|
395
|
+
taskId,
|
|
396
|
+
});
|
|
397
|
+
await recordTraceEvent(trace);
|
|
398
|
+
return trace.id;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Record trace for modify step
|
|
402
|
+
*/
|
|
403
|
+
async function recordModifyTrace(filePath, mode, gradientBefore, gradientAfter, changes, usage, model, taskId) {
|
|
404
|
+
const cost = {
|
|
405
|
+
tokens_in: usage.inputTokens,
|
|
406
|
+
tokens_out: usage.outputTokens,
|
|
407
|
+
model,
|
|
408
|
+
estimated_usd: calculateCost(model, usage.inputTokens, usage.outputTokens),
|
|
409
|
+
};
|
|
410
|
+
const gradientDelta = gradientBefore.score - gradientAfter.score;
|
|
411
|
+
const metabolicCost = cost.estimated_usd * 100; // Normalize
|
|
412
|
+
const efficiency = metabolicCost > 0 ? gradientDelta / metabolicCost : 0;
|
|
413
|
+
const trace = createTraceEvent({
|
|
414
|
+
filePath,
|
|
415
|
+
mode,
|
|
416
|
+
gradientBefore: gradientBefore.score,
|
|
417
|
+
gradientAfter: gradientAfter.score,
|
|
418
|
+
metabolicCost,
|
|
419
|
+
efficiency,
|
|
420
|
+
ciPassed: true,
|
|
421
|
+
changes,
|
|
422
|
+
costRecord: cost,
|
|
423
|
+
notes: ['Modified as part of task'],
|
|
424
|
+
taskId,
|
|
425
|
+
});
|
|
426
|
+
await recordTraceEvent(trace);
|
|
427
|
+
return trace.id;
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/task/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task System Module
|
|
3
|
+
* Phase 5: Task Planning & Execution
|
|
4
|
+
*
|
|
5
|
+
* Exports all task-related functionality for LLM-based task decomposition,
|
|
6
|
+
* execution tracking, and acceptance criteria validation.
|
|
7
|
+
*/
|
|
8
|
+
export { planTask, analyzeDependencies, identifyRisks, } from './planner.js';
|
|
9
|
+
export { executeTask, executeStep, trackProgress, } from './executor.js';
|
|
10
|
+
export { validateAcceptance, checkFileExists, runTests, generateDefaultCriteria, canCompleteTask, } from './acceptance.js';
|
|
11
|
+
export { storeTask, loadTask, listTasks, listActiveTasks, deleteTask, updateTaskStatus, getTaskHistoryForFile, getTaskStatistics, } from './storage.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,uBAAuB,EACvB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task System Module
|
|
3
|
+
* Phase 5: Task Planning & Execution
|
|
4
|
+
*
|
|
5
|
+
* Exports all task-related functionality for LLM-based task decomposition,
|
|
6
|
+
* execution tracking, and acceptance criteria validation.
|
|
7
|
+
*/
|
|
8
|
+
export { planTask, analyzeDependencies, identifyRisks, } from './planner.js';
|
|
9
|
+
export { executeTask, executeStep, trackProgress, } from './executor.js';
|
|
10
|
+
export { validateAcceptance, checkFileExists, runTests, generateDefaultCriteria, canCompleteTask, } from './acceptance.js';
|
|
11
|
+
export { storeTask, loadTask, listTasks, listActiveTasks, deleteTask, updateTaskStatus, getTaskHistoryForFile, getTaskStatistics, } from './storage.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,uBAAuB,EACvB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Planning Implementation
|
|
3
|
+
* Per second-spec §12.1: Task Planning
|
|
4
|
+
*
|
|
5
|
+
* LLM-based task decomposition that generates a TaskPlan with steps,
|
|
6
|
+
* dependency analysis, and risk identification.
|
|
7
|
+
*/
|
|
8
|
+
import { Task, TaskPlan, TaskStep } from '../types/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Plan a task by using LLM to decompose it into steps
|
|
11
|
+
*/
|
|
12
|
+
export declare function planTask(task: Task): Promise<TaskPlan>;
|
|
13
|
+
/**
|
|
14
|
+
* Analyze dependencies between task steps
|
|
15
|
+
*/
|
|
16
|
+
export declare function analyzeDependencies(steps: TaskStep[]): Map<number, number[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Identify potential risks in the task plan
|
|
19
|
+
*/
|
|
20
|
+
export declare function identifyRisks(plan: TaskPlan): string[];
|
|
21
|
+
//# sourceMappingURL=planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/task/planner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7D;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkC5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAc5E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CA0BtD"}
|