Skip to main content

ai_agent/commands/
context_noninteractive.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct ContextData {
5    pub categories: Vec<CategoryData>,
6    pub total_tokens: u32,
7    pub raw_max_tokens: u32,
8    pub percentage: f32,
9    pub model: String,
10    pub memory_files: Vec<MemoryFile>,
11    pub mcp_tools: Vec<McpTool>,
12    pub agents: Vec<AgentData>,
13    pub skills: SkillsData,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct CategoryData {
18    pub name: String,
19    pub tokens: u32,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct MemoryFile {
24    #[serde(rename = "type")]
25    pub file_type: String,
26    pub path: String,
27    pub tokens: u32,
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct McpTool {
32    pub name: String,
33    pub server_name: String,
34    pub tokens: u32,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct AgentData {
39    pub agent_type: String,
40    pub source: String,
41    pub tokens: u32,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct SkillsData {
46    pub tokens: u32,
47    pub skill_frontmatter: Vec<SkillFrontmatter>,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct SkillFrontmatter {
52    pub name: String,
53    pub source: String,
54    pub tokens: u32,
55}
56
57pub async fn collect_context_data() -> ContextData {
58    ContextData {
59        categories: vec![],
60        total_tokens: 0,
61        raw_max_tokens: 0,
62        percentage: 0.0,
63        model: String::new(),
64        memory_files: vec![],
65        mcp_tools: vec![],
66        agents: vec![],
67        skills: SkillsData {
68            tokens: 0,
69            skill_frontmatter: vec![],
70        },
71    }
72}