ai_agent/utils/
session_activity.rs1use std::time::Duration;
4
5#[derive(Debug, Clone)]
7pub struct SessionActivity {
8 pub activity_type: ActivityType,
9 pub details: Option<String>,
10}
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq)]
14pub enum ActivityType {
15 Message,
16 ToolUse,
17 Command,
18 FileAccess,
19}
20
21impl SessionActivity {
22 pub fn new(activity_type: ActivityType) -> Self {
23 Self {
24 activity_type,
25 details: None,
26 }
27 }
28
29 pub fn with_details(mut self, details: String) -> Self {
30 self.details = Some(details);
31 self
32 }
33}
34
35pub struct SessionActivityTracker {
37 _activities: Vec<SessionActivity>,
38}
39
40impl SessionActivityTracker {
41 pub fn new() -> Self {
42 Self {
43 _activities: Vec::new(),
44 }
45 }
46
47 pub fn record(&mut self, activity: SessionActivity) {
48 self._activities.push(activity);
49 }
50
51 pub fn get_activities(&self) -> &[SessionActivity] {
52 &self._activities
53 }
54
55 pub fn get_recent_count(&self, _duration: Duration) -> usize {
56 self._activities.len()
57 }
58
59 pub fn clear(&mut self) {
60 self._activities.clear();
61 }
62}
63
64impl Default for SessionActivityTracker {
65 fn default() -> Self {
66 Self::new()
67 }
68}