dirge-agent 0.7.4

Minimalistic coding agent written in Rust, optimized for memory footprint and performance
//! /sessions — list recent sessions.

use crate::ui::events::{format_time, session_preview};
use crate::ui::slash::{SlashCtx, c_agent, c_result};

pub(crate) async fn cmd_sessions_list(ctx: &mut SlashCtx<'_>) -> anyhow::Result<()> {
    let sessions = crate::session::storage::find_recent_sessions(20)?;
    if sessions.is_empty() {
        ctx.renderer.write_line("no saved sessions", c_agent())?;
    } else {
        ctx.renderer
            .write_line(&format!("recent sessions ({}):", sessions.len()), c_agent())?;
        for s in &sessions {
            let preview = session_preview(s, 60);
            let time = format_time(&s.updated_at);
            ctx.renderer.write_line(
                &format!(
                    "  {}  {}  {}msgs  {}  {}",
                    crate::text::head(&s.id, 8),
                    time,
                    s.messages.len(),
                    s.model,
                    preview
                ),
                c_result(),
            )?;
        }
    }
    Ok(())
}