Skip to main content

clawdb_client/
models.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6#[serde(rename_all = "snake_case")]
7pub enum MemoryType {
8    Context,
9    Task,
10    ToolOutput,
11    Session,
12    ReasoningTrace,
13    Message,
14    Summary,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct MemoryRecord {
19    pub id: Uuid,
20    pub agent_id: String,
21    pub content: String,
22    pub memory_type: MemoryType,
23    #[serde(default)]
24    pub tags: Vec<String>,
25    pub importance_score: f64,
26    pub is_promoted: bool,
27    pub created_at: DateTime<Utc>,
28    pub updated_at: DateTime<Utc>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct SearchHit {
33    pub id: Uuid,
34    pub content: String,
35    pub score: f64,
36    pub memory_type: MemoryType,
37    #[serde(default)]
38    pub tags: Vec<String>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct BranchInfo {
43    pub id: String,
44    pub name: String,
45    pub status: String,
46    pub parent_id: Option<String>,
47    pub created_at: DateTime<Utc>,
48    pub divergence_score: f64,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct SyncResult {
53    pub pushed: u32,
54    pub pulled: u32,
55    pub conflicts: u32,
56    pub synced_at: DateTime<Utc>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct DiffResult {
61    pub added: u32,
62    pub removed: u32,
63    pub modified: u32,
64    pub divergence_score: f64,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize)]
68pub struct MergeResult {
69    pub applied: u32,
70    pub conflicts: Vec<serde_json::Value>,
71    pub success: bool,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
75pub struct RememberOptions {
76    pub memory_type: Option<MemoryType>,
77    pub tags: Option<Vec<String>>,
78    pub ttl_days: Option<u32>,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize, Default)]
82pub struct SearchOptions {
83    pub top_k: Option<u32>,
84    pub semantic: Option<bool>,
85    pub alpha: Option<f64>,
86}