Skip to main content

vv_agent/cli/
output.rs

1use serde_json::{json, Value};
2
3use crate::config::ResolvedModelConfig;
4use crate::types::{AgentResult, AgentStatus};
5
6pub fn result_payload(result: &AgentResult, resolved: &ResolvedModelConfig) -> Value {
7    json!({
8        "status": status_value(result.status),
9        "final_answer": result.final_answer,
10        "wait_reason": result.wait_reason,
11        "error": result.error,
12        "cycles": result.cycles.len(),
13        "todo_list": result.todo_list(),
14        "resolved": {
15            "backend": resolved.backend,
16            "selected_model": resolved.selected_model,
17            "model_id": resolved.model_id,
18            "endpoint": resolved.endpoint().map(|endpoint| endpoint.endpoint_id.clone()),
19        },
20    })
21}
22
23fn status_value(status: AgentStatus) -> &'static str {
24    match status {
25        AgentStatus::Pending => "pending",
26        AgentStatus::Running => "running",
27        AgentStatus::WaitUser => "wait_user",
28        AgentStatus::Completed => "completed",
29        AgentStatus::Failed => "failed",
30        AgentStatus::MaxCycles => "max_cycles",
31    }
32}