systemprompt-cli 0.1.18

systemprompt.io OS - CLI for agent orchestration, AI operations, and system management
Documentation
use std::path::PathBuf;

use anyhow::{Context, Result};
use systemprompt_cloud::ProjectContext;
use systemprompt_cloud::paths::{CloudPath, get_cloud_paths};

#[derive(Debug)]
pub struct ResolvedPaths {
    project_ctx: ProjectContext,
    has_local_dir: bool,
}

impl ResolvedPaths {
    pub fn discover() -> Self {
        let project_ctx = ProjectContext::discover();
        let has_local_dir = project_ctx.systemprompt_dir().exists();
        Self {
            project_ctx,
            has_local_dir,
        }
    }

    pub fn sessions_dir(&self) -> Result<PathBuf> {
        if self.has_local_dir {
            Ok(self.project_ctx.sessions_dir())
        } else {
            let cloud_paths = get_cloud_paths()
                .context("Failed to resolve cloud paths from profile configuration")?;
            Ok(cloud_paths.resolve(CloudPath::SessionsDir))
        }
    }

    pub fn tenants_path(&self) -> Result<PathBuf> {
        if self.has_local_dir {
            Ok(self.project_ctx.local_tenants())
        } else {
            let cloud_paths = get_cloud_paths().context("Failed to resolve cloud paths")?;
            Ok(cloud_paths.resolve(CloudPath::Tenants))
        }
    }

    pub fn profiles_dir(&self) -> PathBuf {
        self.project_ctx.profiles_dir()
    }
}