magi-code 0.102.1

Repository-aware CLI coding agent for terminal work
Documentation
use super::NormalizedUsageAggregate;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::path::PathBuf;

pub const MAX_SUBAGENT_TASKS: usize = 10;

#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct SubagentTaskResult {
    pub id: String,
    pub status: SubagentStatus,
    pub intent: String,
    pub agent: Option<String>,
    pub identity: Option<String>,
    pub cwd: PathBuf,
    pub session_id: Option<String>,
    pub session_path: Option<PathBuf>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub total_tokens: Option<u64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub usage: Option<NormalizedUsageAggregate>,
    pub changed_files: Vec<PathBuf>,
    pub output: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub structured_output: Option<Value>,
    pub output_truncated: bool,
    pub error: Option<String>,
}

#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum SubagentStatus {
    Completed,
    Failed,
}

#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct SubagentsSummary {
    pub total: usize,
    pub completed: usize,
    pub failed: usize,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub total_tokens: Option<u64>,
}

#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
pub struct SubagentsOutput {
    pub summary: SubagentsSummary,
    pub results: Vec<SubagentTaskResult>,
}