fix: synthesize diff header when provider omits it

This commit is contained in:
rob 2025-11-01 23:39:06 -03:00
parent 01ead5754f
commit 25c04859e6
1 changed files with 16 additions and 4 deletions

View File

@ -506,10 +506,22 @@ def sanitize_unified_patch(patch: str) -> str:
# Look for the 'diff --git' header
diff_start = text.find("diff --git")
if diff_start == -1:
# Some providers omit diff header; synthesize one if we have +++ line.
plus_line = next((line for line in cleaned if line.startswith("+++ ")), None)
minus_line = next((line for line in cleaned if line.startswith("--- ")), None)
if plus_line:
plus_path = plus_line[4:].strip()
minus_path = minus_line[4:].strip() if minus_line else plus_path
if minus_path == "/dev/null":
minus_path = plus_path
text = f"diff --git {minus_path} {plus_path}\n{text}"
else:
# No diff header means AI chose not to generate a patch
# This is normal for gated outputs or when AI determines no changes needed
return ""
return text[diff_start:] + "\n"
else:
text = text[diff_start:]
return text + "\n"
def rewrite_patch_for_p0(patch: str) -> str: