remem-ai 0.3.8

Persistent memory for Claude Code — single binary, zero subprocesses
Documentation
use anyhow::Result;

use crate::db;

pub(in crate::cli) fn run_status() -> Result<()> {
    let conn = db::open_db()?;
    let db_path = db::db_path();
    let db_size = std::fs::metadata(&db_path)
        .map(|metadata| metadata.len())
        .unwrap_or(0);
    let version = env!("CARGO_PKG_VERSION");
    let stats = db::query_system_stats(&conn)?;

    let today_start = chrono::Local::now()
        .date_naive()
        .and_hms_opt(0, 0, 0)
        .map(|dt| dt.and_utc().timestamp())
        .unwrap_or(0);
    let daily_stats = db::query_daily_activity_stats(&conn, today_start)?;
    let top_projects = db::query_top_projects(&conn, 5)?;

    println!("remem v{}", version);
    println!(
        "Database: {} ({:.1} MB)",
        db_path.display(),
        db_size as f64 / 1_048_576.0
    );
    println!();
    println!("  Memories:      {:>6}", stats.active_memories);
    println!("  Observations:  {:>6}", stats.active_observations);
    println!("  Sessions:      {:>6}", stats.session_summaries);
    println!("  Pending:       {:>6}", stats.pending_observations);
    println!("  Pending failed:{:>6}", stats.failed_pending_observations);
    println!();
    println!("Today:");
    println!("  New memories:      {:>4}", daily_stats.memories);
    println!("  New observations:  {:>4}", daily_stats.observations);

    if !top_projects.is_empty() {
        println!();
        println!("Top projects:");
        for project in &top_projects {
            println!("  {:>4}  {}", project.count, project.project);
        }
    }

    Ok(())
}