mod keys;
mod session;
pub use keys::encode_key;
pub use session::{AgentSession, GridSnapshot};
pub const PROMPT_PLACEHOLDER: &str = "{prompt}";
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct AgentSpec {
pub name: String,
pub command: String,
pub args: Vec<String>,
pub prompt_args: Vec<String>,
}
pub fn default_prompt_args() -> Vec<String> {
vec![PROMPT_PLACEHOLDER.to_string()]
}
pub fn builtin_agents() -> Vec<AgentSpec> {
[
("claude", &["{prompt}"][..]),
("codex", &["{prompt}"][..]),
("gemini", &["{prompt}"][..]),
("aider", &["--message", "{prompt}"][..]),
]
.into_iter()
.map(|(name, prompt_args)| AgentSpec {
name: name.to_string(),
command: name.to_string(),
args: Vec::new(),
prompt_args: prompt_args.iter().map(|s| s.to_string()).collect(),
})
.collect()
}