Remove trailing backticks when assistant ends with a trailing newline

Antonio Scandurra created

Change summary

crates/ai/src/assistant.rs | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

Detailed changes

crates/ai/src/assistant.rs 🔗

@@ -3216,7 +3216,8 @@ fn strip_markdown_codeblock(
 
         let text = if starts_with_fenced_code_block {
             buffer
-                .strip_suffix("\n```")
+                .strip_suffix("\n```\n")
+                .or_else(|| buffer.strip_suffix("\n```"))
                 .or_else(|| buffer.strip_suffix("\n``"))
                 .or_else(|| buffer.strip_suffix("\n`"))
                 .or_else(|| buffer.strip_suffix('\n'))
@@ -3636,6 +3637,13 @@ mod tests {
                 .await,
             "Lorem ipsum dolor"
         );
+        assert_eq!(
+            strip_markdown_codeblock(chunks("```\nLorem ipsum dolor\n```\n", 2))
+                .map(|chunk| chunk.unwrap())
+                .collect::<String>()
+                .await,
+            "Lorem ipsum dolor"
+        );
         assert_eq!(
             strip_markdown_codeblock(chunks("```html\n```js\nLorem ipsum dolor\n```\n```", 2))
                 .map(|chunk| chunk.unwrap())