systemprompt-cli 0.2.1

Unified CLI for systemprompt.io AI governance: agent orchestration, MCP governance, analytics, profiles, cloud deploy, and self-hosted operations.
Documentation
use anyhow::{Result, anyhow};
use clap::Args;
use systemprompt_runtime::AppContext;
use systemprompt_users::UserService;

use crate::CliConfig;
use crate::commands::admin::users::types::SessionCleanupOutput;
use crate::shared::CommandResult;

#[derive(Debug, Clone, Copy, Args)]
pub struct CleanupArgs {
    #[arg(long, default_value = "30")]
    pub days: i32,

    #[arg(short = 'y', long)]
    pub yes: bool,
}

pub async fn execute(
    args: CleanupArgs,
    _config: &CliConfig,
) -> Result<CommandResult<SessionCleanupOutput>> {
    let ctx = AppContext::new().await?;
    let user_service = UserService::new(ctx.db_pool())?;

    if !args.yes {
        return Err(anyhow!(
            "This will delete anonymous users older than {} days. Use --yes to confirm.",
            args.days
        ));
    }

    let cleaned = user_service.cleanup_old_anonymous(args.days).await?;

    let output = SessionCleanupOutput {
        cleaned,
        message: format!(
            "Cleaned up {} anonymous user(s) older than {} days",
            cleaned, args.days
        ),
    };

    Ok(CommandResult::text(output).with_title("Session Cleanup"))
}