dirge-agent 0.11.2

Minimalistic coding agent written in Rust, optimized for memory footprint and performance
use crate::ui::slash::{SlashCtx, c_error, c_result};

use super::{DEFAULT_TIMEOUT, require_session};

pub(super) async fn cmd_evaluate(ctx: &mut SlashCtx<'_>, args: &[&str]) -> anyhow::Result<()> {
    if args.is_empty() {
        ctx.renderer
            .write_line("usage: /debug evaluate <expression>", c_error())?;
        return Ok(());
    }
    let expression = args.join(" ");
    let mgr = require_session().await?;
    match mgr.evaluate(&expression, None, None, DEFAULT_TIMEOUT).await {
        Ok(result) => {
            ctx.renderer.write_line(
                &format!(
                    "{expression} = {}",
                    serde_json::to_string_pretty(&result).unwrap_or_else(|_| format!("{result:?}"))
                ),
                c_result(),
            )?;
        }
        Err(e) => {
            ctx.renderer
                .write_line(&format!("evaluate failed: {e}"), c_error())?;
        }
    }
    Ok(())
}