use std::fs;
use netsky_core::agent::AgentId;
use netsky_core::paths::{agentinfinity_ready_marker, ensure_state_dir};
use netsky_core::spawn::{self, SpawnOptions, SpawnOutcome};
pub fn run() -> netsky_core::Result<()> {
let agent = AgentId::Agentinfinity;
if spawn::is_up(agent) {
println!(
"[agentinfinity] session '{}' already up; skipping spawn",
agent
);
return Ok(());
}
ensure_state_dir()?;
let marker = agentinfinity_ready_marker();
if marker.exists() {
fs::remove_file(&marker).ok();
}
let cwd = std::env::current_dir()?;
let opts = SpawnOptions::defaults_for(agent, cwd);
match spawn::spawn(agent, &opts)? {
SpawnOutcome::Spawned => {
println!(
"[agentinfinity] spawned '{}' ({})",
agent,
opts.runtime.describe()
);
}
SpawnOutcome::AlreadyUp => {
println!("[agentinfinity] already up (race)");
}
}
Ok(())
}