use super::{Error, Fx, Outcome};
use crate::prompt::dispatch::advance::cli::{self, AdvanceHandoff};
use std::path::PathBuf;
#[derive(clap::Args, Debug)]
pub struct Args {
pub workspace: PathBuf,
pub agent: String,
}
pub fn run(args: Args, fx: &mut Fx) -> Result<Outcome, Error> {
crate::name::require_agent_id(&args.agent).map_err(|e| Error::new("advance", e))?;
let handoff = cli::cli_run(
&args.workspace,
&args.agent,
&fx.driver_target,
fx.adapter_target.as_deref(),
fx.stop,
fx.tool_injection,
)
.map_err(|e| Error::new("advance", e))?;
Ok(outcome_of(handoff))
}
pub(crate) fn outcome_of(handoff: AdvanceHandoff) -> Outcome {
match handoff {
AdvanceHandoff::Exec(cmd) => Outcome::Exec(cmd),
AdvanceHandoff::Done => Outcome::Quiet,
}
}