fabro/lib/components
Bryan Helmkamp ab3ef9371a
Let the driver strip terminal control sequences from command output
fabro-sandbox kept its own sanitize_exec_output, a character walker that
removed ANSI escape sequences and control characters from a command's
output tail after redaction. The sandbox driver already offers this as
ExecSpec::output_sanitization, applied chunk-safely to buffered and
streaming output, so fabro carried a second, weaker copy of the same
logic that only ran on the rendered tail and never on the streams the
agent, the command stage, or the sink consumers read.

SandboxExec::apply_policy now sets OutputSanitization::StripAll on any
spec still at the driver's raw default, so every run and run_streaming
call through fabro's exec policy returns text with escape sequences and
stray control characters already removed. A caller that chose another
policy keeps it. spawn_stdio is untouched: long-lived stdio processes
stay raw, as the driver requires. redacted_tail now only redacts secrets
and applies the byte cap, which remain fabro's knowledge, and the
private sanitizer is gone. The tail test that built an ExecResult by
hand now runs a printf through the Host provider and checks that the
stripped output reaches both the result and the tail, and a new test
pins the policy's default and its respect for an explicit choice.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 14:48:51 -06:00
..
fabro-acp Speak the driver's exec vocabulary instead of mirroring it 2026-09-10 16:11:45 -06:00
fabro-agent Run the agent's MCP servers and the service listing through the driver's services facet 2026-09-11 13:18:02 -06:00
fabro-automation Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
fabro-checkpoint refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-dump Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
fabro-environment Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
fabro-github Tighten automation Git validation types 2026-08-31 18:02:08 -04:00
fabro-graphviz Merge pull request #686 from fabro-sh/fix/space-separated-node-classes 2026-07-29 22:31:48 -04:00
fabro-hooks Speak the driver's exec vocabulary instead of mirroring it 2026-09-10 16:11:45 -06:00
fabro-install Open sandbox provider identity to plugin kinds 2026-09-09 15:17:32 -06:00
fabro-interview refactor: remove duplicated review target rendering and validation 2026-07-28 15:14:23 -04:00
fabro-llm Import lithos-llm types directly instead of through fabro-types 2026-09-10 10:03:08 -06:00
fabro-manifest Port fabro-workflow, hooks, validate, and store to the lithos types 2026-09-09 17:26:57 -06:00
fabro-mcp refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-mcp-store refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-sandbox Let the driver strip terminal control sequences from command output 2026-09-11 14:48:51 -06:00
fabro-slack fix: stop a pipe in a link label from splitting Slack link markup 2026-07-28 15:31:20 -04:00
fabro-store Finish the merge with the fixes the merge commit left out 2026-09-10 13:41:35 -06:00
fabro-tool Move input scalar coercion to shared types 2026-08-03 19:17:03 -04:00
fabro-tracker refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-validate Answer catalog questions with the lithos catalog queries 2026-09-10 09:26:40 -06:00
fabro-variable refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-workflow Redact the driver's event ids in CLI snapshots and leave a local sandbox unnamed 2026-09-11 13:55:45 -06:00
fabro-workflow-version Simplify automation workflow-version packaging 2026-08-27 16:29:45 -04:00