fix: handle Windows CRLF line endings in grep tool (#5948)

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
lif
2025-12-23 12:26:15 +08:00
committed by GitHub
parent eab177f5e7
commit 5af35117db
3 changed files with 114 additions and 3 deletions

View File

@@ -240,7 +240,8 @@ export namespace Ripgrep {
if (done) break
buffer += decoder.decode(value, { stream: true })
const lines = buffer.split("\n")
// Handle both Unix (\n) and Windows (\r\n) line endings
const lines = buffer.split(/\r?\n/)
buffer = lines.pop() || ""
for (const line of lines) {
@@ -379,7 +380,8 @@ export namespace Ripgrep {
return []
}
const lines = result.text().trim().split("\n").filter(Boolean)
// Handle both Unix (\n) and Windows (\r\n) line endings
const lines = result.text().trim().split(/\r?\n/).filter(Boolean)
// Parse JSON lines from ripgrep output
return lines

View File

@@ -49,7 +49,8 @@ export const GrepTool = Tool.define("grep", {
throw new Error(`ripgrep failed: ${errorOutput}`)
}
const lines = output.trim().split("\n")
// Handle both Unix (\n) and Windows (\r\n) line endings
const lines = output.trim().split(/\r?\n/)
const matches = []
for (const line of lines) {