Skip to main content

atomr_agents_agent/
spec.rs

1use atomr_agents_core::{AgentId, IterationBudget, MoneyBudget, TimeBudget, TokenBudget};
2use serde::{Deserialize, Serialize};
3use std::time::Duration;
4
5/// Static, serializable description of an agent. Used by the
6/// registry and Python config; `Agent::from_spec` materializes the
7/// runtime form.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct AgentSpec {
10    pub id: AgentId,
11    pub model: String,
12    pub max_iterations: u32,
13    pub token_budget: u32,
14    pub time_budget_ms: u64,
15    pub money_budget_usd: f64,
16}
17
18impl AgentSpec {
19    pub fn default_budgets(&self) -> (TokenBudget, TimeBudget, MoneyBudget, IterationBudget) {
20        (
21            TokenBudget::new(self.token_budget),
22            TimeBudget::new(Duration::from_millis(self.time_budget_ms)),
23            MoneyBudget::from_usd(self.money_budget_usd),
24            IterationBudget::new(self.max_iterations),
25        )
26    }
27}