atomr_agents_core/
context.rs1use serde::{Deserialize, Serialize};
2
3use crate::budget::{IterationBudget, MoneyBudget, TimeBudget, TokenBudget};
4use crate::ids::{AgentId, OrgId, TeamId};
5use crate::value::Value;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct Message {
12 pub role: MessageRole,
13 pub content: String,
14}
15
16#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
17#[serde(rename_all = "snake_case")]
18pub enum MessageRole {
19 System,
20 User,
21 Assistant,
22 Tool,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct TurnInput {
28 pub user: String,
29 #[serde(default)]
30 pub history: Vec<Message>,
31}
32
33#[derive(Debug, Clone)]
37pub struct AgentContext {
38 pub agent_id: AgentId,
39 pub team_id: Option<TeamId>,
40 pub org_id: Option<OrgId>,
41 pub turn: TurnInput,
42}
43
44impl AgentContext {
45 pub fn for_agent(agent_id: AgentId, turn: TurnInput) -> Self {
46 Self {
47 agent_id,
48 team_id: None,
49 org_id: None,
50 turn,
51 }
52 }
53}
54
55#[derive(Debug, Clone)]
58pub struct CallCtx {
59 pub agent_id: Option<AgentId>,
60 pub tokens: TokenBudget,
61 pub time: TimeBudget,
62 pub money: MoneyBudget,
63 pub iterations: IterationBudget,
64 pub trace: Vec<String>,
65}
66
67#[derive(Debug, Clone)]
69pub struct InvokeCtx {
70 pub call: CallCtx,
71 pub tool_call_id: String,
72 pub raw_args: Value,
73}