Skip to main content

oneiros_model/protocol/
memory.rs

1use serde::{Deserialize, Serialize};
2
3use crate::*;
4
5#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
6pub struct SelectMemoryById {
7    pub id: MemoryId,
8}
9
10// ── Request types ──────────────────────────────────────────────────
11
12#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
13pub struct AddMemoryRequest {
14    pub agent: AgentName,
15    pub level: LevelName,
16    pub content: Content,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
20pub struct GetMemoryRequest {
21    pub id: MemoryId,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
25pub struct ListMemoriesRequest {
26    #[serde(default)]
27    pub agent: Option<AgentName>,
28    #[serde(default)]
29    pub level: Option<LevelName>,
30}
31
32// ── Protocol enums ─────────────────────────────────────────────────
33
34#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
35#[serde(rename_all = "kebab-case", tag = "type", content = "data")]
36pub enum MemoryEvents {
37    MemoryAdded(Memory),
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
41#[serde(rename_all = "kebab-case", tag = "type", content = "data")]
42pub enum MemoryRequests {
43    AddMemory(AddMemoryRequest),
44    GetMemory(GetMemoryRequest),
45    ListMemories(ListMemoriesRequest),
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
49#[serde(rename_all = "kebab-case", tag = "type", content = "data")]
50pub enum MemoryResponses {
51    MemoryAdded(Memory),
52    MemoryFound(Memory),
53    MemoriesListed(Vec<Memory>),
54}