ai_agent/commands/
context_noninteractive.rs1use 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}