mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-24 00:51:19 +00:00
## Summary Implemented ACP support as a first-class Fabro backend alongside `api` and `cli`. This adds a new `fabro-acp` crate using the official ACP Rust crates, routes `backend=\"acp\"` for agent and prompt nodes, adds sandbox stdio support for local/Docker/test-support paths, emits ACP workflow events/projections, updates server steerability handling, validation, documentation, and black-box CLI coverage. ## Test Plan Passed strict non-live verification: - `ulimit -n 4096 && cargo nextest run -p fabro-workflow --run-ignored all --no-fail-fast` — 1162 passed, 0 skipped. - `ulimit -n 4096 && cargo nextest run -p fabro-acp -p fabro-sandbox -p fabro-workflow -p fabro-validate -p fabro-store -p fabro-server -p fabro-cli --run-ignored all --no-fail-fast -E 'not test(daytona_streaming_live_smoke)'` — 3125 passed. - `cargo build --workspace` — passed. - `ulimit -n 4096 && cargo nextest run --workspace --run-ignored all --no-fail-fast -E 'not test(daytona_streaming_live_smoke)'` — 5666 passed. - `cargo +nightly-2026-04-14 fmt --check --all` — passed. - `cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D warnings` — passed. Live-environment tests skipped/excluded under explicit user override: - `daytona_streaming_live_smoke` was excluded from final nextest runs because it requires live Daytona infrastructure and `DAYTONA_API_KEY`. - Confirmed with `env -u DAYTONA_API_KEY cargo test -p fabro-sandbox --features daytona --test daytona_streaming_live daytona_streaming_live::daytona_streaming_live_smoke -- --ignored --exact --nocapture`: failed fast with `DAYTONA_API_KEY must be set to run this live smoke test`.
84 lines
2.6 KiB
TOML
84 lines
2.6 KiB
TOML
[package]
|
|
name = "fabro-workflow"
|
|
edition.workspace = true
|
|
version.workspace = true
|
|
publish = false
|
|
license.workspace = true
|
|
description = "A DOT-based pipeline runner for multi-stage AI workflows"
|
|
repository = "https://github.com/brynary/arc"
|
|
keywords = ["llm", "ai", "pipeline", "workflow", "dot"]
|
|
categories = ["development-tools"]
|
|
readme = "README.md"
|
|
|
|
[lib]
|
|
doctest = false
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
fabro-auth = { path = "../fabro-auth" }
|
|
fabro-acp = { path = "../fabro-acp" }
|
|
fabro-agent = { path = "../fabro-agent" }
|
|
fabro-config = { path = "../fabro-config" }
|
|
fabro-graphviz = { path = "../fabro-graphviz" }
|
|
fabro-hooks = { path = "../fabro-hooks" }
|
|
fabro-validate = { path = "../fabro-validate" }
|
|
fabro-devcontainer = { path = "../fabro-devcontainer" }
|
|
fabro-dump = { path = "../fabro-dump" }
|
|
fabro-sandbox = { path = "../fabro-sandbox", features = ["daytona"] }
|
|
fabro-mcp = { path = "../fabro-mcp" }
|
|
fabro-github = { path = "../fabro-github" }
|
|
fabro-interview = { path = "../fabro-interview" }
|
|
fabro-template = { path = "../fabro-template" }
|
|
fabro-util = { path = "../fabro-util" }
|
|
fabro-redact.workspace = true
|
|
fabro-checkpoint = { path = "../fabro-checkpoint" }
|
|
fabro-llm = { path = "../fabro-llm" }
|
|
fabro-model = { path = "../fabro-model" }
|
|
fabro-core = { path = "../fabro-core" }
|
|
fabro-store = { path = "../fabro-store" }
|
|
fabro-static.workspace = true
|
|
fabro-types = { path = "../fabro-types" }
|
|
fabro-http.workspace = true
|
|
thiserror.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
tokio.workspace = true
|
|
bytes.workspace = true
|
|
object_store.workspace = true
|
|
ulid.workspace = true
|
|
uuid.workspace = true
|
|
rand.workspace = true
|
|
async-trait.workspace = true
|
|
futures.workspace = true
|
|
chrono = { workspace = true, features = ["serde"] }
|
|
dirs = "6"
|
|
regex.workspace = true
|
|
scopeguard = "1"
|
|
md5.workspace = true
|
|
hex.workspace = true
|
|
sha2 = { workspace = true }
|
|
mime_guess.workspace = true
|
|
shlex = "1"
|
|
git2.workspace = true
|
|
tokio-util.workspace = true
|
|
tracing.workspace = true
|
|
walkdir.workspace = true
|
|
tempfile = "3"
|
|
toml.workspace = true
|
|
fabro-vault = { path = "../fabro-vault" }
|
|
[dev-dependencies]
|
|
base64.workspace = true
|
|
fabro-acp = { path = "../fabro-acp", features = ["test-support"] }
|
|
fabro-sandbox = { path = "../fabro-sandbox", features = ["daytona", "docker", "test-support"] }
|
|
fabro-mcp = { path = "../fabro-mcp" }
|
|
tokio = { workspace = true, features = ["test-util", "macros"] }
|
|
object_store.workspace = true
|
|
assert_cmd = "2"
|
|
predicates = "3"
|
|
httpmock = "0.8"
|
|
fabro-macros = { path = "../fabro-macros" }
|
|
fabro-test = { workspace = true }
|
|
fabro-types = { path = "../fabro-types", features = ["test-support"] }
|