claude-evolve 1.5.29 → 1.5.31

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.
@@ -40,6 +40,7 @@ SELECTORS:
40
40
  pending Target all candidates with pending status
41
41
  running Target all candidates with running status
42
42
  skipped Target all candidates with skipped status
43
+ 0perf Target all candidates with 0 performance score
43
44
 
44
45
  ACTIONS:
45
46
  failed Mark candidates as failed (keeps scores)
@@ -50,6 +51,7 @@ ACTIONS:
50
51
  failed-retry2 Mark candidates for retry attempt 2 (bug fixing)
51
52
  failed-retry3 Mark candidates for retry attempt 3 (bug fixing)
52
53
  reboot Reset completely (delete .py files, clear scores, set pending)
54
+ reset Same as reboot (synonym)
53
55
  delete Delete candidates from CSV and remove .py files (asks confirmation)
54
56
 
55
57
  EXAMPLES:
@@ -62,6 +64,8 @@ EXAMPLES:
62
64
  claude-evolve edit complete failed # Mark all complete as failed for re-run
63
65
  claude-evolve edit all pending # Mark everything as pending for re-run
64
66
  claude-evolve edit gen02 reboot # Full reset of gen02 (delete files + clear data)
67
+ claude-evolve edit gen02 reset # Same as reboot (synonym)
68
+ claude-evolve edit 0perf pending # Reset all candidates with 0 performance
65
69
  claude-evolve edit gen02 delete # Delete gen02 from CSV and remove .py files
66
70
 
67
71
  DESCRIPTION:
@@ -112,16 +116,16 @@ if ! validate_config; then
112
116
  fi
113
117
 
114
118
  # Validate selector format
115
- if [[ "$SELECTOR" != "all" && ! "$SELECTOR" =~ ^gen[0-9]+$ && "$SELECTOR" != "failed" && "$SELECTOR" != "complete" && "$SELECTOR" != "pending" && "$SELECTOR" != "running" && "$SELECTOR" != "skipped" ]]; then
116
- echo "[ERROR] Selector must be 'all', 'genXX' (e.g., gen01), or status ('failed', 'complete', 'pending', 'running', 'skipped')" >&2
119
+ if [[ "$SELECTOR" != "all" && ! "$SELECTOR" =~ ^gen[0-9]+$ && "$SELECTOR" != "failed" && "$SELECTOR" != "complete" && "$SELECTOR" != "pending" && "$SELECTOR" != "running" && "$SELECTOR" != "skipped" && "$SELECTOR" != "0perf" ]]; then
120
+ echo "[ERROR] Selector must be 'all', 'genXX' (e.g., gen01), or status ('failed', 'complete', 'pending', 'running', 'skipped', '0perf')" >&2
117
121
  exit 1
118
122
  fi
119
123
 
120
124
  # Validate action
121
125
  case "$ACTION" in
122
- failed|complete|pending|skipped|failed-retry1|failed-retry2|failed-retry3|reboot|delete) ;;
126
+ failed|complete|pending|skipped|failed-retry1|failed-retry2|failed-retry3|reboot|reset|delete) ;;
123
127
  *)
124
- echo "[ERROR] Action must be one of: failed, complete, pending, skipped, failed-retry1, failed-retry2, failed-retry3, reboot, delete" >&2
128
+ echo "[ERROR] Action must be one of: failed, complete, pending, skipped, failed-retry1, failed-retry2, failed-retry3, reboot, reset, delete" >&2
125
129
  exit 1
126
130
  ;;
127
131
  esac
@@ -213,12 +217,16 @@ try:
213
217
  elif selector.startswith('gen') and '-' in candidate_id:
214
218
  # Generation selector (e.g., gen01, gen02)
215
219
  matches = candidate_id.startswith(selector + '-')
216
- elif selector in ['failed', 'complete', 'pending', 'running', 'skipped']:
220
+ elif selector in ['failed', 'complete', 'pending', 'running', 'skipped', '0perf']:
217
221
  # Status selector
218
222
  if selector == 'pending':
219
223
  matches = current_status == '' or current_status == 'pending'
220
224
  elif selector == 'failed':
221
225
  matches = current_status.startswith('failed')
226
+ elif selector == '0perf':
227
+ # Select candidates with performance == 0
228
+ performance = row[3] if len(row) > 3 else ''
229
+ matches = performance == '0' or performance == '0.0'
222
230
  else:
223
231
  matches = current_status == selector
224
232
 
@@ -367,6 +375,10 @@ try:
367
375
  matches = current_status.startswith('failed')
368
376
  elif selector == 'skipped':
369
377
  matches = current_status == 'skipped'
378
+ elif selector == '0perf':
379
+ # Select candidates with performance == 0
380
+ performance = row[3] if len(row) > 3 else ''
381
+ matches = performance == '0' or performance == '0.0'
370
382
  else:
371
383
  matches = current_status == selector
372
384
 
@@ -487,6 +499,10 @@ with EvolutionCSV('$FULL_CSV_PATH') as csv:
487
499
  matches = current_status.startswith('failed')
488
500
  elif selector == 'skipped':
489
501
  matches = current_status == 'skipped'
502
+ elif selector == '0perf':
503
+ # Select candidates with performance == 0
504
+ performance = row[3] if len(row) > 3 else ''
505
+ matches = performance == '0' or performance == '0.0'
490
506
  else:
491
507
  matches = current_status == selector
492
508
 
@@ -544,7 +560,7 @@ case "$ACTION" in
544
560
  failed-retry3)
545
561
  update_candidates_status "$SELECTOR" "failed-retry3" "false"
546
562
  ;;
547
- reboot)
563
+ reboot|reset)
548
564
  echo "[INFO] Performing full reboot of '$SELECTOR'..."
549
565
  delete_evolution_files "$SELECTOR"
550
566
  update_candidates_status "$SELECTOR" "" "true" # Clear scores and set pending
@@ -260,11 +260,13 @@ with EvolutionCSV('$FULL_CSV_PATH') as csv:
260
260
  # Use relative path for AI prompt
261
261
  local target_basename=$(basename "$target_file")
262
262
  local evolution_prompt="Modify the algorithm in $target_basename based on this description: $description
263
-
263
+
264
264
  The modification should be substantial and follow the description exactly. Make sure the algorithm still follows all interface requirements and can run properly.
265
265
 
266
266
  Important: Make meaningful changes that match the description. Don't just add comments or make trivial adjustments.
267
267
 
268
+ CRITICAL: If you do not know how to implement what was asked for, or if the requested change is unclear or not feasible, you MUST refuse to make any changes. DO NOT modify the code if you are uncertain about the implementation. Simply respond that you cannot implement the requested change and explain why. It is better to refuse than to make incorrect or random changes.
269
+
268
270
  CRITICAL: Do NOT use any git commands (git add, git commit, git reset, etc.). Only modify the file directly."
269
271
 
270
272
  if [[ "$is_baseline" != "true" ]]; then
package/lib/ai-cli.sh CHANGED
@@ -81,6 +81,11 @@ $prompt"
81
81
  ai_output=$(timeout 300 opencode -m openrouter/z-ai/glm-4.6 run "$prompt" 2>&1)
82
82
  local ai_exit_code=$?
83
83
  ;;
84
+ deepseek)
85
+ local ai_output
86
+ ai_output=$(timeout 300 opencode -m openrouter/deepseek/deepseek-v3.1-terminus run "$prompt" 2>&1)
87
+ local ai_exit_code=$?
88
+ ;;
84
89
  *)
85
90
  echo "[ERROR] Unknown model: $model_name" >&2
86
91
  return 1
package/lib/config.sh CHANGED
@@ -54,8 +54,8 @@ DEFAULT_MAX_RETRIES=3
54
54
  DEFAULT_MEMORY_LIMIT_MB=12288
55
55
 
56
56
  # Default LLM CLI configuration - use simple variables instead of arrays
57
- DEFAULT_LLM_RUN="sonnet gpt5 cursor-sonnet glm"
58
- DEFAULT_LLM_IDEATE="gemini sonnet-think sonnet-think gpt5high sonnet-think o3high"
57
+ DEFAULT_LLM_RUN="sonnet gpt5 cursor-sonnet glm deepseek"
58
+ DEFAULT_LLM_IDEATE="gemini sonnet-think sonnet-think gpt5high sonnet-think o3high glm"
59
59
 
60
60
  # Load configuration from config file
61
61
  load_config() {
@@ -109,6 +109,7 @@ load_config() {
109
109
  LLM_CLI_cursor_sonnet='cursor-agent sonnet -p "{{PROMPT}}"'
110
110
  LLM_CLI_cursor_opus='cursor-agent opus -p "{{PROMPT}}"'
111
111
  LLM_CLI_glm='opencode -m openrouter/z-ai/glm-4.6 run "{{PROMPT}}"'
112
+ LLM_CLI_deepseek='opencode -m openrouter/deepseek/deepseek-v3.1-terminus run "{{PROMPT}}"'
112
113
  LLM_RUN="$DEFAULT_LLM_RUN"
113
114
  LLM_IDEATE="$DEFAULT_LLM_IDEATE"
114
115
 
@@ -328,7 +329,7 @@ show_config() {
328
329
  echo " Memory limit: ${MEMORY_LIMIT_MB}MB"
329
330
  echo " LLM configuration:"
330
331
  # Show LLM configurations using dynamic variable names
331
- for model in gpt5high o3high codex gemini opus opus_think sonnet sonnet_think cursor_sonnet cursor_opus glm; do
332
+ for model in gpt5high o3high codex gemini opus opus_think sonnet sonnet_think cursor_sonnet cursor_opus glm deepseek; do
332
333
  var_name="LLM_CLI_${model}"
333
334
  var_value=$(eval echo "\$$var_name")
334
335
  if [[ -n "$var_value" ]]; then
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-evolve",
3
- "version": "1.5.29",
3
+ "version": "1.5.31",
4
4
  "bin": {
5
5
  "claude-evolve": "./bin/claude-evolve",
6
6
  "claude-evolve-main": "./bin/claude-evolve-main",