systemprompt-cli 0.1.22

systemprompt.io OS - CLI for agent orchestration, AI operations, and system management
Documentation
use anyhow::{Result, anyhow};
use clap::Args;
use systemprompt_logging::LoggingMaintenanceService;
use systemprompt_runtime::AppContext;

use super::LogDeleteOutput;
use crate::CliConfig;
use crate::interactive::require_confirmation;
use crate::shared::{CommandResult, render_result};

#[derive(Debug, Clone, Copy, Args)]
pub struct DeleteArgs {
    #[arg(short = 'y', long, help = "Skip confirmation prompts")]
    pub yes: bool,
}

pub async fn execute(args: DeleteArgs, config: &CliConfig) -> Result<()> {
    require_confirmation(
        "Delete ALL log entries? This cannot be undone.",
        args.yes,
        config,
    )?;

    let ctx = AppContext::new().await?;
    let service = LoggingMaintenanceService::new(ctx.db_pool())?;

    let deleted_count = service
        .clear_all_logs()
        .await
        .map_err(|e| anyhow!("Failed to delete logs: {}", e))?;

    let output = LogDeleteOutput {
        deleted_count,
        vacuum_performed: false,
    };

    let result = CommandResult::card(output).with_title("Logs Deleted");

    render_result(&result);

    Ok(())
}