Skip to main content

swarm_engine_eval/metrics/
task.rs

1//! Task completion metrics
2
3use serde::{Deserialize, Serialize};
4
5/// Task completion metrics
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct TaskMetrics {
8    /// Total number of tasks
9    pub total_tasks: u64,
10
11    /// Number of completed tasks
12    pub completed_tasks: u64,
13
14    /// Success rate (0.0 - 1.0)
15    pub success_rate: f64,
16
17    /// Total ticks
18    pub total_ticks: u64,
19
20    /// Total actions
21    pub total_actions: u64,
22
23    /// Successful actions
24    pub successful_actions: u64,
25}
26
27impl TaskMetrics {
28    /// Create from SwarmApp outcome
29    pub fn from_core_metrics(
30        total_ticks: u64,
31        total_actions: u64,
32        successful_actions: u64,
33    ) -> Self {
34        let success_rate = if total_actions > 0 {
35            successful_actions as f64 / total_actions as f64
36        } else {
37            0.0
38        };
39
40        Self {
41            total_tasks: 0,     // Set by scenario
42            completed_tasks: 0, // Set by scenario
43            success_rate,
44            total_ticks,
45            total_actions,
46            successful_actions,
47        }
48    }
49}