use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContextEntry {
pub id: String,
pub content: String,
pub timestamp: i64,
pub kind: String,
pub scope: Option<String>,
pub session_id: Option<String>,
pub token_count: Option<usize>,
pub metadata: Option<serde_json::Value>,
}
pub mod kind {
pub const MANUAL: &str = "manual";
pub const SNAPSHOT: &str = "snapshot";
pub const SUMMARY: &str = "summary";
pub const FACT: &str = "fact";
}
impl Default for ContextEntry {
fn default() -> Self {
Self {
id: String::new(),
content: String::new(),
timestamp: 0,
kind: kind::MANUAL.to_owned(),
scope: None,
session_id: None,
token_count: None,
metadata: None,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScoredEntry {
pub entry: ContextEntry,
pub score: f64,
}