diff --git a/lib/crates/fabro-config/src/lib.rs b/lib/crates/fabro-config/src/lib.rs index c00f31dd8..3f683b55e 100644 --- a/lib/crates/fabro-config/src/lib.rs +++ b/lib/crates/fabro-config/src/lib.rs @@ -37,9 +37,8 @@ pub use load::{ pub use parse::{ParseError, parse_settings_layer}; pub use resolve::{ ResolveError, dev_token_auth_enabled, resolve_cli, resolve_cli_from_file, resolve_features, - resolve_features_from_file, resolve_project, resolve_project_from_file, resolve_run, - resolve_run_from_file, resolve_server, resolve_server_from_file, resolve_workflow, - resolve_workflow_from_file, + resolve_features_from_file, resolve_project, resolve_run, resolve_server, + resolve_server_from_file, resolve_workflow, }; use serde::de::DeserializeOwned; pub use storage::{RunScratch, RuntimeDirectory, Storage}; diff --git a/lib/crates/fabro-config/src/resolve/mod.rs b/lib/crates/fabro-config/src/resolve/mod.rs index 088a8f530..ab9af90ae 100644 --- a/lib/crates/fabro-config/src/resolve/mod.rs +++ b/lib/crates/fabro-config/src/resolve/mod.rs @@ -9,8 +9,7 @@ mod workflow; pub use cli::resolve_cli; pub use error::ResolveError; use fabro_types::settings::{ - CliNamespace, FeaturesNamespace, InterpString, ProjectNamespace, RunNamespace, ServerNamespace, - SettingsLayer, WorkflowNamespace, + CliNamespace, FeaturesNamespace, InterpString, ServerNamespace, SettingsLayer, }; pub use features::resolve_features; pub use project::resolve_project; @@ -36,15 +35,6 @@ pub fn resolve_server_from_file( finish(value, errors) } -pub fn resolve_project_from_file( - file: &SettingsLayer, -) -> Result> { - let layer = apply_builtin_defaults(file.clone()); - let mut errors = Vec::new(); - let value = resolve_project(&layer.project.clone().unwrap_or_default(), &mut errors); - finish(value, errors) -} - pub fn resolve_features_from_file( file: &SettingsLayer, ) -> Result> { @@ -54,22 +44,6 @@ pub fn resolve_features_from_file( finish(value, errors) } -pub fn resolve_run_from_file(file: &SettingsLayer) -> Result> { - let layer = apply_builtin_defaults(file.clone()); - let mut errors = Vec::new(); - let value = resolve_run(&layer.run.clone().unwrap_or_default(), &mut errors); - finish(value, errors) -} - -pub fn resolve_workflow_from_file( - file: &SettingsLayer, -) -> Result> { - let layer = apply_builtin_defaults(file.clone()); - let mut errors = Vec::new(); - let value = resolve_workflow(&layer.workflow.clone().unwrap_or_default(), &mut errors); - finish(value, errors) -} - pub(crate) fn require_interp( value: Option<&InterpString>, path: &str, @@ -119,8 +93,7 @@ mod tests { use fabro_types::settings::run::{HookType, McpTransport, TlsMode}; - use super::resolve_run_from_file; - use crate::parse_settings_layer; + use crate::{WorkflowSettingsBuilder, parse_settings_layer}; #[test] fn resolve_preserves_source_templates_for_mcp_and_hook_strings() { @@ -164,7 +137,9 @@ Authorization = "Bearer {{ env.HOOK_TOKEN }}" ) .expect("settings fixture should parse"); - let resolved = resolve_run_from_file(&settings).expect("run settings should resolve"); + let resolved = WorkflowSettingsBuilder::from_layer(&settings) + .expect("run settings should resolve") + .run; let mcps = &resolved.agent.mcps; assert_eq!( diff --git a/lib/crates/fabro-config/tests/resolve_root.rs b/lib/crates/fabro-config/tests/resolve_root.rs index 56e33a0bc..6e39856ed 100644 --- a/lib/crates/fabro-config/tests/resolve_root.rs +++ b/lib/crates/fabro-config/tests/resolve_root.rs @@ -48,8 +48,9 @@ provider = "not-a-provider" .map(|error| error.to_string()), ); rendered.extend( - fabro_config::resolve_run_from_file(&settings) + fabro_config::WorkflowSettingsBuilder::from_layer(&settings) .expect_err("invalid run settings should fail") + .into_inner() .into_iter() .map(|error| error.to_string()), );