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;
use clap::Args;
use systemprompt_files::AiService;
use systemprompt_identifiers::UserId;
use systemprompt_runtime::AppContext;

use crate::CliConfig;
use crate::commands::core::files::types::AiFilesCountOutput;
use crate::shared::CommandResult;

#[derive(Debug, Clone, Args)]
pub struct CountArgs {
    #[arg(
        long,
        help = "Filter by user ID (optional, counts all if not specified)"
    )]
    pub user: Option<String>,
}

pub async fn execute(
    args: CountArgs,
    _config: &CliConfig,
) -> Result<CommandResult<AiFilesCountOutput>> {
    let ctx = AppContext::new().await?;
    let service = AiService::new(ctx.db_pool())?;

    let user_id = args.user.as_ref().map(|u| UserId::new(u.clone()));

    let count = match &user_id {
        Some(uid) => service.count_ai_images_by_user(uid).await?,
        None => service.count_ai_images().await?,
    };

    let output = AiFilesCountOutput { count, user_id };

    Ok(CommandResult::card(output).with_title("AI Images Count"))
}