1use std::env;
2use std::path::PathBuf;
3
4pub fn socket_base_dir() -> PathBuf {
7 let uid = nix::unistd::getuid();
8 PathBuf::from(format!("/tmp/agent-procs-{}", uid))
9}
10
11pub fn socket_path(session: &str) -> PathBuf {
12 socket_base_dir().join(format!("{}.sock", session))
13}
14
15pub fn pid_path(session: &str) -> PathBuf {
16 socket_base_dir().join(format!("{}.pid", session))
17}
18
19pub fn state_dir(session: &str) -> PathBuf {
22 let base = match env::var("XDG_STATE_HOME") {
23 Ok(dir) => PathBuf::from(dir),
24 Err(_) => {
25 let home = env::var("HOME").expect("HOME not set");
26 PathBuf::from(home).join(".local/state")
27 }
28 };
29 base.join("agent-procs/sessions").join(session)
30}
31
32pub fn log_dir(session: &str) -> PathBuf {
33 state_dir(session).join("logs")
34}
35pub fn state_file(session: &str) -> PathBuf {
36 state_dir(session).join("state.json")
37}