Fix: Add language check before calling adaptive_optimize for JS/TS#1995
Fix: Add language check before calling adaptive_optimize for JS/TS#1995mohammedahmed18 wants to merge 1 commit intomainfrom
Conversation
**Issue #8: CLI incorrectly calls adaptive_optimize for JavaScript/TypeScript** **Problem:** When a refined candidate (source=REFINE) succeeds for JS/TS, the next iteration calls adaptive_optimize (Python-only endpoint) instead of optimize_code_refinement (all languages). This results in "422 - Invalid code generated" from the AI service because adaptive_optimize tries to parse JS/TS code using libcst (Python AST parser). **Root Cause:** File: codeflash/languages/function_optimizer.py (line 1266) The code checked if a REFINE candidate existed but did not check the language before calling adaptive_optimize. **Evidence:** - Trace ID: 1417a6da-796c-4a38-8c44-00401dbab6c7 - Function: formatBytes (TypeScript) - Error: "POST /ai/adaptive_optimize HTTP/1.1" 422 36 - AI service logs: "adaptive_optimize invalid code" **Fix:** Added language check at line 1266: ```python if is_candidate_refined_before and self.function_to_optimize.language == "python": # Call adaptive_optimize (Python-only) else: # Call optimize_code_refinement (all languages) ``` **Testing:** - Added 4 regression tests in test_adaptive_optimize_language_bug.py - All tests pass - No linting errors from `uv run prek` **Impact:** - Fixes systematic bug affecting JS/TS optimizations with successful REFINE candidates - Allows second refinement iteration to proceed for JS/TS - Python behavior unchanged (still uses adaptive_optimize after REFINE) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
Claude finished @mohammedahmed18's task in 3m 3s —— View job PR Review SummaryPrek ChecksAll checks pass (ruff, format). The mypy errors near the changed lines (1274, 1281) are pre-existing and unrelated to this PR. Code ReviewFix is correct. Adding Minor concern — misleading comment ( else:
# Refinement for all languages (Python, JavaScript, TypeScript)This comment is inaccurate. The Test quality concerns:
Duplicate DetectionNo duplicates detected. The language guard is a one-line change with no equivalent logic elsewhere. Last updated: 2026-04-04T10:51 UTC |
**Problem:** The `maybe_repair_optimization()` method called `/ai/code_repair` (a Python-only endpoint) without checking if the language is Python first. This would cause errors when JavaScript/TypeScript optimizations reach the repair stage. **Root Cause:** File: codeflash/languages/function_optimizer.py (line 2957) - `repair_optimization()` calls `/ai/code_repair` endpoint - `/ai/code_repair` uses Python-specific tools (libcst for AST manipulation) - No language check before calling repair **Impact:** - Latent bug (not yet triggered in production) - Would block JS/TS optimization success once candidates reach repair stage - Severity: MEDIUM **Fix:** Added language guard at line 2948: - Check `self.function_to_optimize.language != "python"` - Skip repair for JavaScript/TypeScript/Java - Log debug message explaining why repair was skipped **Testing:** - Added tests/test_languages/test_code_repair_language_guard.py - Documents expected behavior for language checks - All existing tests pass - No linting/type errors **Trace IDs:** N/A (latent bug, not yet triggered) **Related Issues:** - Similar pattern to Issue #8 (adaptive_optimize) - PR #1995 - Similar pattern to Issue #9 (get_new_explanation, get_optimization_review) - PR #1997 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Issue #8: CLI incorrectly calls adaptive_optimize for JavaScript/TypeScript
Problem
When a refined candidate (source=REFINE) succeeds for JS/TS, the next iteration calls
adaptive_optimize(Python-only endpoint) instead ofoptimize_code_refinement(all languages). This results in "422 - Invalid code generated" from the AI service becauseadaptive_optimizetries to parse JS/TS code using libcst (Python AST parser).Root Cause
File:
codeflash/languages/function_optimizer.py(line 1266)The code checked if a REFINE candidate existed but did not check the language before calling
adaptive_optimize.Flow:
optimize_code_refinement()called (works for all languages)OptimizedCandidateSource.REFINEis_candidate_refined_beforecheck returns Truecall_adaptive_optimize()(Python-only!)Evidence
POST /ai/adaptive_optimize HTTP/1.1 422 36Fix
Added language check at line 1266:
Testing
test_adaptive_optimize_language_bug.pyuv run prekImpact
Related