remem-ai 0.6.81

Local-first coding agent memory for Claude Code and OpenAI Codex
Documentation
use serde::Serialize;

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SessionActivityKey {
    pub source_root: String,
    pub project: String,
    pub session_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct TurnAction {
    pub index: i64,
    pub kind: String,
    pub tool_name: Option<String>,
    pub summary: String,
    pub event_row_id: Option<i64>,
    pub files: Vec<String>,
    pub outcome: Option<String>,
    pub created_at_epoch: i64,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct SessionTurn {
    pub id: Option<i64>,
    pub turn_index: i64,
    pub user_message_id: i64,
    pub user_said: String,
    pub understanding_message_id: Option<i64>,
    pub understanding: Option<String>,
    pub understanding_source: Option<String>,
    pub result_message_id: Option<i64>,
    pub actions_summary: Option<String>,
    pub result_status: String,
    pub result_summary: Option<String>,
    pub started_at_epoch: i64,
    pub ended_at_epoch: Option<i64>,
    pub capture_health: String,
    pub actions: Vec<TurnAction>,
    pub actions_truncated: bool,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct ProjectionResult {
    pub changed: bool,
    pub source_digest: String,
    pub turn_count: usize,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct RawSessionActivity {
    pub source_root: String,
    pub project: String,
    pub session_id: String,
    pub message_count: i64,
    pub user_message_count: i64,
    pub assistant_message_count: i64,
    pub first_epoch: Option<i64>,
    pub last_epoch: i64,
    pub message_counts_truncated: bool,
    pub projected_turn_count: i64,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct RawSessionActivityPage {
    pub data: Vec<RawSessionActivity>,
    pub has_more: bool,
    pub next_cursor: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct SessionActivityItem {
    pub source_root: String,
    pub project: String,
    pub session_id: String,
    #[serde(flatten)]
    pub turn: SessionTurn,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct SessionActivityPage {
    pub data: Vec<SessionActivityItem>,
    pub has_more: bool,
    pub next_before_id: Option<i64>,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct ActivityCount {
    pub key: String,
    pub count: i64,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct SessionActivityStats {
    pub sessions: i64,
    pub turns: i64,
    pub actions: i64,
    pub result_status: Vec<ActivityCount>,
    pub capture_health: Vec<ActivityCount>,
    pub projects: Vec<ActivityCount>,
    pub tools: Vec<ActivityCount>,
}