use crate::domain::launch_blueprint::LaunchTarget;
pub trait ProfileGateway {
fn resolve_target(&self, profile: &str) -> anyhow::Result<LaunchTarget>;
}
pub trait SecretGateway {
fn build_provider_env(&self, target: &LaunchTarget) -> anyhow::Result<Vec<String>>;
}
pub trait BinaryLookupPort {
fn locate_claude_binary(&self) -> anyhow::Result<std::path::PathBuf>;
}
pub trait ProcessSpawnPort {
fn spawn_claude(
&self,
binary: &std::path::Path,
args: &[String],
env: &[String],
) -> anyhow::Result<i32>;
}
pub trait RuntimeGateway: BinaryLookupPort + ProcessSpawnPort {
fn run_target(
&self,
target: &LaunchTarget,
forwarded_args: &[String],
env: &[String],
hide_banner: bool,
mode: Option<&str>,
) -> anyhow::Result<i32>;
}