From af2b35a83ddbdcb3132c044b22696a386d3990cd Mon Sep 17 00:00:00 2001 From: Oleksiy Syvokon Date: Sun, 8 Mar 2026 11:27:10 +0200 Subject: [PATCH] ep: Make repair parser more robust (#51044) Release Notes: - N/A --- crates/edit_prediction_cli/src/repair.rs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/crates/edit_prediction_cli/src/repair.rs b/crates/edit_prediction_cli/src/repair.rs index b6ad41d553dabf1e49f261f4cc745395fdb1d1f6..9d891314bc62a44e730b584cea3423df665dc381 100644 --- a/crates/edit_prediction_cli/src/repair.rs +++ b/crates/edit_prediction_cli/src/repair.rs @@ -227,16 +227,17 @@ pub fn needs_repair(example: &Example, confidence_threshold: u8) -> bool { /// Handles the `KEEP_PREVIOUS` sentinel by copying the teacher's prediction, /// and delegates normal output to `TeacherPrompt::parse`. pub fn parse(example: &Example, actual_output: &str) -> Result<(String, Option)> { - if let Some(last_codeblock) = extract_last_codeblock(actual_output) { - if last_codeblock.trim() == KEEP_PREVIOUS { - let original = example - .predictions - .first() - .context("no original prediction to keep")?; - let patch = original.actual_patch.clone().unwrap_or_default(); - let cursor = original.actual_cursor.clone(); - return Ok((patch, cursor)); - } + let last_codeblock = + extract_last_codeblock(actual_output).unwrap_or_else(|| actual_output.to_string()); + + if last_codeblock.contains(KEEP_PREVIOUS) { + let original = example + .predictions + .first() + .context("no original prediction to keep")?; + let patch = original.actual_patch.clone().unwrap_or_default(); + let cursor = original.actual_cursor.clone(); + return Ok((patch, cursor)); } TeacherPrompt::parse(example, actual_output)