mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-16 23:43:10 +00:00
Fabro kept its own ExecResult, streaming request and result, output capture stats, stdio process types, and an Error::Exec variant, each a field-for-field copy of a sandbox-driver type with a translation layer between them. Every command a tool, a stage, or a hook ran crossed that layer twice. The driver's types are now the ones fabro uses. SandboxExec applies fabro's policy to an ExecSpec (stop grace, the run's working directory, the explicit-env filter, the Bash helper's BASH_ENV blank winning over a caller value) and returns the driver's ExecResult and ExecStreamingResult as they are. Callers that stream build an ExecSpec and ExecControls; the buffered exec_command keeps its signature. ExecResultExt adds fabro's reading of a result: the event-facing duration, the exit code only when the command exited on its own, the redacted output tail, and the ExecFailure a non-zero exit becomes. The three-way termination collapse the run events use lives in one function, command_termination, called where events are built. Error::Exec and the git-shaped stderr hint table are gone; a failed command is the driver's ExecFailure, whose Display carries the label and the classified metadata and never the raw output. OutputCaptureStats moves to fabro-agent, whose tool output accounting it belongs to, and converts from the driver's CaptureStats at the exec boundary. The stdio process the ACP transport drives is the driver's own, so the cancel-token bridge and StderrCollector go too. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| tests | ||
| Cargo.toml | ||