Skip to main content

ai_agent/utils/
session_activity.rs

1//! Session activity tracking.
2
3use std::time::Duration;
4
5/// Session activity event
6#[derive(Debug, Clone)]
7pub struct SessionActivity {
8    pub activity_type: ActivityType,
9    pub details: Option<String>,
10}
11
12/// Types of session activity
13#[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
35/// Track session activities (stub)
36pub 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}