use std::{collections::BTreeMap, ffi::OsString, path::PathBuf};
use getset::{CopyGetters, Getters};
use typed_builder::TypedBuilder;
use crate::domain::{agent_session::AgentSessionId, pty::PtySize, value::CommandLine};
#[derive(Clone, Debug, Getters, CopyGetters, TypedBuilder)]
pub struct SpawnRequest {
#[getset(get = "pub")]
#[builder(default)]
command: Option<CommandLine>,
#[getset(get = "pub")]
#[builder(default)]
working_dir: Option<PathBuf>,
#[getset(get = "pub")]
#[builder(default)]
project: Option<PathBuf>,
#[getset(get = "pub")]
#[builder(default)]
environment: BTreeMap<OsString, OsString>,
#[getset(get = "pub")]
#[builder(default)]
agent_session_id: Option<AgentSessionId>,
#[getset(get_copy = "pub")]
size: PtySize,
}