Recover from malformed agent edits
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-08-28 12:58:09 +02:00
parent e97cbd7698
commit 441c598890
6 changed files with 172 additions and 4 deletions

View File

@@ -5,7 +5,7 @@ import pwd
import shlex
import shutil
import subprocess
from collections.abc import Mapping
from collections.abc import Mapping, Sequence
from dataclasses import dataclass
from pathlib import Path
from urllib.parse import urlparse
@@ -48,6 +48,20 @@ class GitWorkspace:
check: bool = True,
username: str | None = None,
extra_environment: Mapping[str, str] | None = None,
) -> subprocess.CompletedProcess[str]:
return self.run_args(
shlex.split(command),
check=check,
username=username,
extra_environment=extra_environment,
)
def run_args(
self,
command: Sequence[str],
check: bool = True,
username: str | None = None,
extra_environment: Mapping[str, str] | None = None,
) -> subprocess.CompletedProcess[str]:
environment = dict(os.environ)
drop_privileges = None
@@ -66,7 +80,7 @@ class GitWorkspace:
environment.update(extra_environment or {})
return subprocess.run(
shlex.split(command),
command,
cwd=self.path,
env=environment,
text=True,
@@ -76,6 +90,10 @@ class GitWorkspace:
preexec_fn=drop_privileges,
)
def discard_changes(self) -> None:
self._git("reset", "--hard", "HEAD")
self._git("clean", "-fd")
def summary(self) -> ChangeSummary:
self._git("add", "-N", "--all")
output = self._git("diff", "--numstat").stdout