fabro/lib/crates
Bryan Helmkamp 66519ee12a
feat(errors): add structured failure diagnostics (#277)
## Summary
- Make `FailureDetail` the canonical rich diagnostic shape for stage and
terminal failures, with terminal `RunFailure` carrying `{ reason, detail
}`.
- Preserve cause chains and move process stdout/stderr diagnostics into
sanitized `exec_output_tail` instead of embedding them in messages or
causes.
- Update ACP error plumbing, CLI/server/store rendering, OpenAPI, and
the generated TypeScript API client for the nested failure contract.

Closes #273

## Test Plan
- `cargo nextest run -p fabro-types -p fabro-core -p fabro-acp -p
fabro-api -p fabro-store -p fabro-server -p fabro-workflow -p fabro-cli
--no-fail-fast -E 'not test(/returns_svg/)' --status-level fail
--final-status-level fail`
- `cargo +nightly-2026-04-14 fmt --check --all`
- `cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D
warnings`
- `bun run typecheck` in `lib/packages/fabro-api-client`
- `bun run typecheck` in `apps/fabro-web`
2026-05-16 13:25:07 -04:00
..
build-support fix(build): refresh embedded git sha on branch commits 2026-05-09 14:10:04 -04:00
fabro-acp feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-agent refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-api feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-auth refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-checkpoint Make git metadata sandbox-native 2026-04-27 21:43:15 -07:00
fabro-cli feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-client feat(pr): support GitHub pull request associations (#270) 2026-05-16 12:47:27 -04:00
fabro-config refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-core feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-dev refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-devcontainer refactor(static): centralize env var names 2026-04-24 12:29:51 -04:00
fabro-dump feat(sandbox): prepare clone layout for multi-repo runs (#250) 2026-05-14 09:38:20 -04:00
fabro-github fix(github): refresh installation tokens during workflows 2026-05-06 07:15:18 -04:00
fabro-graphviz fix(graphviz): accept multi-line DOT attribute blocks without commas (#255) 2026-05-13 08:29:09 -04:00
fabro-hooks refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-http refactor(static): centralize env var names 2026-04-24 12:29:51 -04:00
fabro-install fix(server): default foreground logs to stdout 2026-05-06 12:41:52 -04:00
fabro-interview Wire end-to-end steering for running agents (#209) 2026-05-05 15:34:16 -04:00
fabro-llm refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-macros refactor(dev): simplify generated docs tooling 2026-04-24 18:41:00 -04:00
fabro-manifest feat(manifest): support path-based Daytona Dockerfiles (#258) 2026-05-13 12:32:15 -04:00
fabro-mcp feat(cli): add Fabro MCP server (#236) 2026-05-11 18:20:50 -04:00
fabro-mcp-server feat(llm): add catalog controls and speed billing (#249) 2026-05-13 14:12:16 -04:00
fabro-model refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-oauth fix(error): preserve remaining error context 2026-05-02 10:51:15 -04:00
fabro-options-metadata refactor(dev): simplify generated docs tooling 2026-04-24 18:41:00 -04:00
fabro-proc refactor(static): centralize env var names 2026-04-24 12:29:51 -04:00
fabro-redact refactor(integrations): make chat integrations Slack-only 2026-05-09 11:43:16 -04:00
fabro-sandbox feat(sandbox): surface provider links and network policy (#275) 2026-05-16 10:16:18 -04:00
fabro-server feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-slack feat(slack): render plan summary + run link in interview messages (re #253, stacked on #252) (#254) 2026-05-13 07:41:54 -04:00
fabro-spa feat(dev): gitignore embedded spa assets 2026-04-26 21:31:11 -04:00
fabro-static refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-store feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-telemetry refactor(workflow): remove retro stage (#230) 2026-05-09 10:18:20 -04:00
fabro-template fix(validate): pick up sibling workflow.toml inputs for bare .fabro path (#242) 2026-05-12 12:05:21 -04:00
fabro-test feat(cli): add Fabro MCP server (#236) 2026-05-11 18:20:50 -04:00
fabro-tracker fix(github): refresh installation tokens during workflows 2026-05-06 07:15:18 -04:00
fabro-types feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-util feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00
fabro-validate refactor(llm): split provider identity from adapters (#280) 2026-05-16 13:13:41 -04:00
fabro-vault refactor(api): unify secret metadata types 2026-04-29 20:26:13 -04:00
fabro-workflow feat(errors): add structured failure diagnostics (#277) 2026-05-16 13:25:07 -04:00