claude-evolve 1.5.1 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/bin/claude-evolve-analyze +6 -3
- package/bin/claude-evolve-autostatus +2 -2
- package/bin/claude-evolve-ideate +423 -282
- package/bin/claude-evolve-run +15 -3
- package/bin/claude-evolve-status +3 -1
- package/bin/claude-evolve-worker +19 -215
- package/lib/ai-cli.sh +221 -0
- package/lib/config.sh +71 -1
- package/package.json +1 -1
- package/templates/config.yaml +17 -1
package/README.md
CHANGED
|
@@ -30,14 +30,29 @@ Evolution runs indefinitely until you stop it. Perfect for overnight optimizatio
|
|
|
30
30
|
|
|
31
31
|
## Commands
|
|
32
32
|
|
|
33
|
+
### Core Commands
|
|
33
34
|
```bash
|
|
34
35
|
claude-evolve # Interactive menu
|
|
35
36
|
claude-evolve setup # Initialize workspace
|
|
36
37
|
claude-evolve ideate # Generate new algorithm ideas
|
|
37
38
|
claude-evolve run # Start evolution loop (runs forever)
|
|
38
|
-
claude-evolve analyze # View results and progress
|
|
39
|
+
claude-evolve analyze # View results and progress with charts
|
|
39
40
|
claude-evolve status # Quick progress overview
|
|
41
|
+
claude-evolve autostatus # Live auto-updating status display
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Management Commands
|
|
45
|
+
```bash
|
|
40
46
|
claude-evolve edit # Manage candidate statuses
|
|
47
|
+
claude-evolve config # View/edit configuration
|
|
48
|
+
claude-evolve cleanup # Clean up old lock files
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Maintenance Commands
|
|
52
|
+
```bash
|
|
53
|
+
claude-evolve clean-invalid # Remove invalid candidates
|
|
54
|
+
claude-evolve cleanup-duplicates # Remove duplicate entries
|
|
55
|
+
claude-evolve csv-fix # Fix CSV formatting issues
|
|
41
56
|
```
|
|
42
57
|
|
|
43
58
|
## Working with Multiple Projects
|
|
@@ -246,7 +246,8 @@ with open('$csv_file', 'r') as f:
|
|
|
246
246
|
"
|
|
247
247
|
|
|
248
248
|
# Process generation stats
|
|
249
|
-
|
|
249
|
+
# Sort generations numerically
|
|
250
|
+
for gen in $(cut -d' ' -f1 "$gen_stats_file" | sort -u | awk '{print substr($0,4), $0}' | sort -n | cut -d' ' -f2 || echo ""); do
|
|
250
251
|
[[ -z "$gen" ]] && continue
|
|
251
252
|
total_in_gen=$(grep -c "^$gen " "$gen_stats_file" 2>/dev/null || echo "0")
|
|
252
253
|
completed_in_gen=$(grep -c "^$gen completed" "$gen_stats_file" 2>/dev/null || echo "0")
|
|
@@ -461,7 +462,8 @@ print(f'max_desc=\"{desc_escaped}\"')
|
|
|
461
462
|
# Create generation averages file and track max generation
|
|
462
463
|
gen_index=1
|
|
463
464
|
max_gen_num=0
|
|
464
|
-
|
|
465
|
+
# Sort generations numerically for graph
|
|
466
|
+
for gen in $(cut -d' ' -f1 "$gen_data_temp" | sort -u | awk '{print substr($0,4), $0}' | sort -n | cut -d' ' -f2); do
|
|
465
467
|
if grep -q "^$gen " "$gen_data_temp"; then
|
|
466
468
|
# Calculate median for this generation
|
|
467
469
|
# AIDEV-NOTE: Changed from mean to median to be more robust to outliers
|
|
@@ -568,7 +570,8 @@ print(f'max_desc=\"{desc_escaped}\"')
|
|
|
568
570
|
# Build x-axis labels for generation chart (include all generations from data)
|
|
569
571
|
xtics_labels=""
|
|
570
572
|
label_index=1
|
|
571
|
-
|
|
573
|
+
# Sort generations numerically for graph
|
|
574
|
+
for gen in $(cut -d' ' -f1 "$gen_data_temp" | sort -u | awk '{print substr($0,4), $0}' | sort -n | cut -d' ' -f2); do
|
|
572
575
|
if [[ -n $gen ]]; then
|
|
573
576
|
gen_display=$(echo "$gen" | sed 's/gen0*//')
|
|
574
577
|
if [[ -n $xtics_labels ]]; then
|
|
@@ -246,8 +246,8 @@ class AutoStatus:
|
|
|
246
246
|
print("-" * min(self.display.cols, len(header_fmt)))
|
|
247
247
|
row += 1
|
|
248
248
|
|
|
249
|
-
# Sort generations
|
|
250
|
-
sorted_gens = sorted(generations.keys())
|
|
249
|
+
# Sort generations numerically by extracting the number after 'gen'
|
|
250
|
+
sorted_gens = sorted(generations.keys(), key=lambda g: int(g[3:]) if g.startswith("gen") and g[3:].isdigit() else 0)
|
|
251
251
|
|
|
252
252
|
# Calculate how many generations we can show
|
|
253
253
|
available_rows = self.display.rows - row - 1 # Leave room at bottom
|