diff --git a/lib/crates/fabro-workflows/src/cli/rewind.rs b/lib/crates/fabro-workflows/src/cli/rewind.rs index d8e45ceee..f5b39eabe 100644 --- a/lib/crates/fabro-workflows/src/cli/rewind.rs +++ b/lib/crates/fabro-workflows/src/cli/rewind.rs @@ -11,7 +11,7 @@ use git2::{Oid, Repository, Signature}; use crate::checkpoint::Checkpoint; use crate::git::MetadataStore; -use fabro_graphviz::graph::types::Graph; +use fabro_graphviz::graph::Graph; /// Rewind a workflow run to an earlier checkpoint. #[derive(Debug, Args)] @@ -708,50 +708,50 @@ mod tests { #[test] fn parallel_interior_detection() { let mut graph = Graph::new("test"); - let mut parallel_node = fabro_graphviz::graph::types::Node::new("parallel1"); + let mut parallel_node = fabro_graphviz::graph::Node::new("parallel1"); parallel_node.attrs.insert( "shape".to_string(), - fabro_graphviz::graph::types::AttrValue::String("component".to_string()), + fabro_graphviz::graph::AttrValue::String("component".to_string()), ); graph.nodes.insert("parallel1".to_string(), parallel_node); - let mut fan_in = fabro_graphviz::graph::types::Node::new("fan_in1"); + let mut fan_in = fabro_graphviz::graph::Node::new("fan_in1"); fan_in.attrs.insert( "shape".to_string(), - fabro_graphviz::graph::types::AttrValue::String("tripleoctagon".to_string()), + fabro_graphviz::graph::AttrValue::String("tripleoctagon".to_string()), ); graph.nodes.insert("fan_in1".to_string(), fan_in); - let mut a = fabro_graphviz::graph::types::Node::new("a"); + let mut a = fabro_graphviz::graph::Node::new("a"); a.attrs.insert( "shape".to_string(), - fabro_graphviz::graph::types::AttrValue::String("box".to_string()), + fabro_graphviz::graph::AttrValue::String("box".to_string()), ); graph.nodes.insert("a".to_string(), a); - let mut b = fabro_graphviz::graph::types::Node::new("b"); + let mut b = fabro_graphviz::graph::Node::new("b"); b.attrs.insert( "shape".to_string(), - fabro_graphviz::graph::types::AttrValue::String("box".to_string()), + fabro_graphviz::graph::AttrValue::String("box".to_string()), ); graph.nodes.insert("b".to_string(), b); - graph.edges.push(fabro_graphviz::graph::types::Edge { + graph.edges.push(fabro_graphviz::graph::Edge { from: "parallel1".to_string(), to: "a".to_string(), attrs: HashMap::new(), }); - graph.edges.push(fabro_graphviz::graph::types::Edge { + graph.edges.push(fabro_graphviz::graph::Edge { from: "parallel1".to_string(), to: "b".to_string(), attrs: HashMap::new(), }); - graph.edges.push(fabro_graphviz::graph::types::Edge { + graph.edges.push(fabro_graphviz::graph::Edge { from: "a".to_string(), to: "fan_in1".to_string(), attrs: HashMap::new(), }); - graph.edges.push(fabro_graphviz::graph::types::Edge { + graph.edges.push(fabro_graphviz::graph::Edge { from: "b".to_string(), to: "fan_in1".to_string(), attrs: HashMap::new(), diff --git a/lib/crates/fabro-workflows/src/cli/run.rs b/lib/crates/fabro-workflows/src/cli/run.rs index 5943ec3e7..d85a52468 100644 --- a/lib/crates/fabro-workflows/src/cli/run.rs +++ b/lib/crates/fabro-workflows/src/cli/run.rs @@ -59,7 +59,7 @@ fn resolve_cli_goal( /// Apply goal to the graph from TOML config or CLI flag. /// Precedence: CLI `--goal` / `--goal-file` > TOML `goal` > DOT `graph [goal="..."]`. fn apply_goal_override( - graph: &mut fabro_graphviz::graph::types::Graph, + graph: &mut fabro_graphviz::graph::Graph, cli_goal: Option<&str>, toml_goal: Option<&str>, ) { @@ -68,7 +68,7 @@ fn apply_goal_override( debug!(goal = %goal, "overriding graph goal"); graph.attrs.insert( "goal".to_string(), - fabro_graphviz::graph::types::AttrValue::String(goal.to_string()), + fabro_graphviz::graph::AttrValue::String(goal.to_string()), ); } } @@ -81,7 +81,7 @@ fn resolve_model_provider( cli_provider: Option<&str>, run_cfg: Option<&WorkflowRunConfig>, run_defaults: &RunDefaults, - graph: &fabro_graphviz::graph::types::Graph, + graph: &fabro_graphviz::graph::Graph, ) -> (String, Option) { let toml_model = run_cfg .and_then(|c| c.llm.as_ref()) @@ -403,13 +403,13 @@ pub async fn run_command( apply_goal_override(&mut graph, cli_goal.as_deref(), toml_goal); // Inline @file references in the (possibly overridden) goal - if let Some(fabro_graphviz::graph::types::AttrValue::String(goal)) = graph.attrs.get("goal") { + if let Some(fabro_graphviz::graph::AttrValue::String(goal)) = graph.attrs.get("goal") { let fallback = dirs::home_dir().map(|h| h.join(".fabro")); let resolved = crate::transform::resolve_file_ref(goal, dot_dir, fallback.as_deref()); if resolved != *goal { graph.attrs.insert( "goal".to_string(), - fabro_graphviz::graph::types::AttrValue::String(resolved), + fabro_graphviz::graph::AttrValue::String(resolved), ); } } @@ -1928,7 +1928,7 @@ fn print_assets(run_dir: &std::path::Path, styles: &Styles) { /// a styled check report. #[allow(clippy::too_many_arguments)] async fn run_preflight( - graph: &fabro_graphviz::graph::types::Graph, + graph: &fabro_graphviz::graph::Graph, run_cfg: &Option, args: &RunArgs, run_defaults: &RunDefaults, @@ -2113,7 +2113,7 @@ async fn run_preflight( // Collect all distinct (model, provider) pairs from LLM nodes let mut model_providers = std::collections::BTreeSet::new(); for node in graph.nodes.values() { - if !fabro_graphviz::graph::types::is_llm_handler_type(node.handler_type()) { + if !fabro_graphviz::graph::is_llm_handler_type(node.handler_type()) { continue; } let node_model = node.model().unwrap_or(&model); @@ -2501,7 +2501,7 @@ mod tests { #[test] fn apply_goal_override_cli_wins_over_toml() { - use fabro_graphviz::graph::types::{AttrValue, Graph}; + use fabro_graphviz::graph::{AttrValue, Graph}; let mut graph = Graph::new("test"); graph.attrs.insert( "goal".to_string(), @@ -2513,7 +2513,7 @@ mod tests { #[test] fn apply_goal_override_toml_wins_over_dot() { - use fabro_graphviz::graph::types::{AttrValue, Graph}; + use fabro_graphviz::graph::{AttrValue, Graph}; let mut graph = Graph::new("test"); graph.attrs.insert( "goal".to_string(), @@ -2525,7 +2525,7 @@ mod tests { #[test] fn apply_goal_override_noop_when_none() { - use fabro_graphviz::graph::types::{AttrValue, Graph}; + use fabro_graphviz::graph::{AttrValue, Graph}; let mut graph = Graph::new("test"); graph.attrs.insert( "goal".to_string(), @@ -2558,7 +2558,7 @@ mod tests { #[test] fn resolve_model_provider_defaults() { - let graph = fabro_graphviz::graph::types::Graph::new("test"); + let graph = fabro_graphviz::graph::Graph::new("test"); let defaults = RunDefaults::default(); let (model, provider) = resolve_model_provider(None, None, None, &defaults, &graph); assert_eq!(model, "claude-opus-4-6"); @@ -2568,7 +2568,7 @@ mod tests { #[test] fn resolve_model_provider_cli_overrides_toml() { - let graph = fabro_graphviz::graph::types::Graph::new("test"); + let graph = fabro_graphviz::graph::Graph::new("test"); let defaults = RunDefaults::default(); let cfg = run_config::WorkflowRunConfig { version: 1, @@ -2603,8 +2603,8 @@ mod tests { #[test] fn resolve_model_provider_toml_overrides_graph() { - use fabro_graphviz::graph::types::AttrValue; - let mut graph = fabro_graphviz::graph::types::Graph::new("test"); + use fabro_graphviz::graph::AttrValue; + let mut graph = fabro_graphviz::graph::Graph::new("test"); graph.attrs.insert( "default_model".to_string(), AttrValue::String("graph-model".to_string()), @@ -2642,8 +2642,8 @@ mod tests { #[test] fn resolve_model_provider_graph_attrs_used_as_fallback() { - use fabro_graphviz::graph::types::AttrValue; - let mut graph = fabro_graphviz::graph::types::Graph::new("test"); + use fabro_graphviz::graph::AttrValue; + let mut graph = fabro_graphviz::graph::Graph::new("test"); graph.attrs.insert( "default_model".to_string(), AttrValue::String("gpt-5.2".to_string()), @@ -2661,7 +2661,7 @@ mod tests { #[test] fn resolve_model_provider_alias_expansion() { - let graph = fabro_graphviz::graph::types::Graph::new("test"); + let graph = fabro_graphviz::graph::Graph::new("test"); let defaults = RunDefaults::default(); let (model, provider) = resolve_model_provider(Some("opus"), None, None, &defaults, &graph); assert_eq!(model, "claude-opus-4-6"); @@ -2670,7 +2670,7 @@ mod tests { #[test] fn resolve_model_provider_run_defaults_used() { - let graph = fabro_graphviz::graph::types::Graph::new("test"); + let graph = fabro_graphviz::graph::Graph::new("test"); let defaults = RunDefaults { llm: Some(run_config::LlmConfig { model: Some("default-model".to_string()), @@ -2686,7 +2686,7 @@ mod tests { #[test] fn resolve_model_provider_toml_overrides_run_defaults() { - let graph = fabro_graphviz::graph::types::Graph::new("test"); + let graph = fabro_graphviz::graph::Graph::new("test"); let defaults = RunDefaults { llm: Some(run_config::LlmConfig { model: Some("default-model".to_string()), diff --git a/lib/crates/fabro-workflows/src/error.rs b/lib/crates/fabro-workflows/src/error.rs index f085486ed..948ea74e6 100644 --- a/lib/crates/fabro-workflows/src/error.rs +++ b/lib/crates/fabro-workflows/src/error.rs @@ -419,9 +419,8 @@ impl From for FabroError { impl From for FabroError { fn from(e: fabro_graphviz::error::GraphvizError) -> Self { - match e { - fabro_graphviz::error::GraphvizError::Parse(msg) => FabroError::Parse(msg), - } + let fabro_graphviz::error::GraphvizError::Parse(msg) = e; + Self::Parse(msg) } } diff --git a/lib/crates/fabro-workflows/src/handler/manager_loop.rs b/lib/crates/fabro-workflows/src/handler/manager_loop.rs index c416147c7..57b22ebb0 100644 --- a/lib/crates/fabro-workflows/src/handler/manager_loop.rs +++ b/lib/crates/fabro-workflows/src/handler/manager_loop.rs @@ -95,7 +95,7 @@ impl Handler for SubWorkflowHandler { let poll_interval = node .attrs .get("manager.poll_interval") - .and_then(fabro_graphviz::graph::types::AttrValue::as_duration) + .and_then(fabro_graphviz::graph::AttrValue::as_duration) .unwrap_or_else(|| { let raw = node .attrs @@ -108,7 +108,7 @@ impl Handler for SubWorkflowHandler { let max_cycles = node .attrs .get("manager.max_cycles") - .and_then(fabro_graphviz::graph::types::AttrValue::as_i64) + .and_then(fabro_graphviz::graph::AttrValue::as_i64) .unwrap_or(1000); let max_cycles = u64::try_from(max_cycles).unwrap_or(1000).max(1); diff --git a/lib/crates/fabro-workflows/src/handler/parallel.rs b/lib/crates/fabro-workflows/src/handler/parallel.rs index d09454f0e..a40b6f4b6 100644 --- a/lib/crates/fabro-workflows/src/handler/parallel.rs +++ b/lib/crates/fabro-workflows/src/handler/parallel.rs @@ -312,7 +312,7 @@ impl Handler for ParallelHandler { let max_parallel = node .attrs .get("max_parallel") - .and_then(fabro_graphviz::graph::types::AttrValue::as_i64) + .and_then(fabro_graphviz::graph::AttrValue::as_i64) .unwrap_or(4); let max_parallel = usize::try_from(max_parallel).unwrap_or(4).max(1); diff --git a/lib/crates/fabro-workflows/src/stylesheet.rs b/lib/crates/fabro-workflows/src/stylesheet.rs index 099b3a153..8d3869372 100644 --- a/lib/crates/fabro-workflows/src/stylesheet.rs +++ b/lib/crates/fabro-workflows/src/stylesheet.rs @@ -1,5 +1,5 @@ use crate::error::FabroError; -use fabro_graphviz::graph::types::{AttrValue, Graph}; +use fabro_graphviz::graph::{AttrValue, Graph}; /// A parsed stylesheet selector. #[derive(Debug, Clone, PartialEq, Eq)] @@ -235,7 +235,7 @@ pub fn apply_stylesheet(stylesheet: &Stylesheet, graph: &mut Graph) { #[cfg(test)] mod tests { use super::*; - use fabro_graphviz::graph::types::Node; + use fabro_graphviz::graph::Node; #[test] fn parse_empty_stylesheet() { diff --git a/lib/crates/fabro-workflows/tests/attractor_compat.rs b/lib/crates/fabro-workflows/tests/attractor_compat.rs index 926fbc986..14e94edee 100644 --- a/lib/crates/fabro-workflows/tests/attractor_compat.rs +++ b/lib/crates/fabro-workflows/tests/attractor_compat.rs @@ -2,7 +2,7 @@ use std::path::Path; use fabro_graphviz::parser::parse; -fn parse_attractor_dot(filename: &str) -> Result { +fn parse_attractor_dot(filename: &str) -> Result { let path = Path::new(env!("CARGO_MANIFEST_DIR")) .join("../../../test/attractor") .join(filename);