From 50ca4e44980f942aae0622db6eff89bbfc56a40f Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Wed, 1 Apr 2026 22:24:57 -0400 Subject: [PATCH] Use store-backed run discovery for asset commands --- lib/crates/fabro-cli/src/commands/asset/cp.rs | 8 +++++--- lib/crates/fabro-cli/src/commands/asset/list.rs | 8 +++++--- lib/crates/fabro-cli/src/commands/asset/mod.rs | 6 +++--- lib/crates/fabro-cli/src/main.rs | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/crates/fabro-cli/src/commands/asset/cp.rs b/lib/crates/fabro-cli/src/commands/asset/cp.rs index edae3d399..a68b0e5e6 100644 --- a/lib/crates/fabro-cli/src/commands/asset/cp.rs +++ b/lib/crates/fabro-cli/src/commands/asset/cp.rs @@ -4,17 +4,19 @@ use anyhow::{Context, Result, bail}; use fabro_config::FabroSettingsExt; use fabro_store::RuntimeState; use fabro_workflow::assets::{AssetEntry, scan_assets}; -use fabro_workflow::run_lookup::{resolve_run, runs_base}; +use fabro_workflow::run_lookup::{resolve_run_combined, runs_base}; use crate::args::{AssetCpArgs, GlobalArgs}; use crate::shared::{print_json_pretty, split_run_path}; +use crate::store; use crate::user_config::load_user_settings_with_globals; -pub(super) fn cp_command(args: &AssetCpArgs, globals: &GlobalArgs) -> Result<()> { +pub(super) async fn cp_command(args: &AssetCpArgs, globals: &GlobalArgs) -> Result<()> { let cli_settings = load_user_settings_with_globals(globals)?; let base = runs_base(&cli_settings.storage_dir()); + let store = store::build_store(&cli_settings.storage_dir())?; let (run_id, asset_path) = parse_source(&args.source); - let run = resolve_run(&base, run_id)?; + let run = resolve_run_combined(store.as_ref(), &base, run_id).await?; let runtime_state = RuntimeState::new(&run.path); let entries = scan_assets( &runtime_state.assets_dir(), diff --git a/lib/crates/fabro-cli/src/commands/asset/list.rs b/lib/crates/fabro-cli/src/commands/asset/list.rs index dca6faa45..1d4a5b121 100644 --- a/lib/crates/fabro-cli/src/commands/asset/list.rs +++ b/lib/crates/fabro-cli/src/commands/asset/list.rs @@ -2,16 +2,18 @@ use anyhow::Result; use fabro_config::FabroSettingsExt; use fabro_store::RuntimeState; use fabro_workflow::assets::scan_assets; -use fabro_workflow::run_lookup::{resolve_run, runs_base}; +use fabro_workflow::run_lookup::{resolve_run_combined, runs_base}; use crate::args::{AssetListArgs, GlobalArgs}; use crate::shared::format_size; +use crate::store; use crate::user_config::load_user_settings_with_globals; -pub(super) fn list_command(args: &AssetListArgs, globals: &GlobalArgs) -> Result<()> { +pub(super) async fn list_command(args: &AssetListArgs, globals: &GlobalArgs) -> Result<()> { let cli_settings = load_user_settings_with_globals(globals)?; let base = runs_base(&cli_settings.storage_dir()); - let run = resolve_run(&base, &args.run_id)?; + let store = store::build_store(&cli_settings.storage_dir())?; + let run = resolve_run_combined(store.as_ref(), &base, &args.run_id).await?; let runtime_state = RuntimeState::new(&run.path); let entries = scan_assets( &runtime_state.assets_dir(), diff --git a/lib/crates/fabro-cli/src/commands/asset/mod.rs b/lib/crates/fabro-cli/src/commands/asset/mod.rs index aae4f1101..f567f5516 100644 --- a/lib/crates/fabro-cli/src/commands/asset/mod.rs +++ b/lib/crates/fabro-cli/src/commands/asset/mod.rs @@ -5,9 +5,9 @@ use anyhow::Result; use crate::args::{AssetCommand, AssetNamespace, GlobalArgs}; -pub(crate) fn dispatch(ns: AssetNamespace, globals: &GlobalArgs) -> Result<()> { +pub(crate) async fn dispatch(ns: AssetNamespace, globals: &GlobalArgs) -> Result<()> { match ns.command { - AssetCommand::List(args) => list::list_command(&args, globals), - AssetCommand::Cp(args) => cp::cp_command(&args, globals), + AssetCommand::List(args) => list::list_command(&args, globals).await, + AssetCommand::Cp(args) => cp::cp_command(&args, globals).await, } } diff --git a/lib/crates/fabro-cli/src/main.rs b/lib/crates/fabro-cli/src/main.rs index 8dbfffec2..879f3fa2a 100644 --- a/lib/crates/fabro-cli/src/main.rs +++ b/lib/crates/fabro-cli/src/main.rs @@ -182,7 +182,7 @@ async fn main_inner() -> (String, Result<()>) { Commands::Parse(args) => { commands::parse::run(&args, &globals)?; } - Commands::Asset(ns) => commands::asset::dispatch(ns, &globals)?, + Commands::Asset(ns) => commands::asset::dispatch(ns, &globals).await?, Commands::Store(ns) => commands::store::dispatch(ns, &globals).await?, Commands::RunsCmd(cmd) => commands::runs::dispatch(cmd, &globals).await?, Commands::Model { command } => commands::model::execute(command, &globals).await?,