vv-agent 0.4.1

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use serde_json::{json, Value};

use crate::config::ResolvedModelConfig;
use crate::types::{AgentResult, AgentStatus};

pub fn result_payload(result: &AgentResult, resolved: &ResolvedModelConfig) -> Value {
    json!({
        "status": status_value(result.status),
        "final_answer": result.final_answer,
        "wait_reason": result.wait_reason,
        "error": result.error,
        "cycles": result.cycles.len(),
        "todo_list": result.todo_list(),
        "resolved": {
            "backend": resolved.backend,
            "selected_model": resolved.selected_model,
            "model_id": resolved.model_id,
            "endpoint": resolved.endpoint().map(|endpoint| endpoint.endpoint_id.clone()),
        },
    })
}

fn status_value(status: AgentStatus) -> &'static str {
    match status {
        AgentStatus::Pending => "pending",
        AgentStatus::Running => "running",
        AgentStatus::WaitUser => "wait_user",
        AgentStatus::Completed => "completed",
        AgentStatus::Failed => "failed",
        AgentStatus::MaxCycles => "max_cycles",
    }
}