use std::path::{Path, PathBuf};
use anyhow::Result;
use config::UserConfig;
use objects::object::StateId;
use repo::Repository;
#[derive(Debug, Clone)]
pub struct RelayCapture {
pub intent: String,
pub provider: Option<String>,
pub model: Option<String>,
pub session: Option<String>,
}
pub trait HarnessCliBridge: Send + Sync {
fn capture_snapshot(
&self,
repo: &Repository,
user_config: &UserConfig,
capture: RelayCapture,
) -> Result<String>;
fn prepare_worktree_target(
&self,
repo: &Repository,
path: &Path,
self_thread: Option<&str>,
) -> Result<PathBuf>;
fn write_isolated_checkout(
&self,
repo: &Repository,
path: &Path,
base_state: &StateId,
thread: Option<&str>,
) -> Result<()>;
}