agent_context_contract/
session_log.rs1use serde::{Deserialize, Serialize};
3use serde_json::Value;
4pub const SESSION_APPEND_PATH: &str = "/internal/v1/context/sessions/append";
5pub const SESSION_READ_PATH: &str = "/internal/v1/context/sessions/read";
6pub const SESSION_LIST_PATH: &str = "/internal/v1/context/sessions/list";
7#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase", deny_unknown_fields)]
9pub struct AppendSessionRequest {
10 pub agent_id: String,
11 pub session_id: String,
12 pub header: Value,
13 pub expected_seq: u64,
14 pub events: Vec<Value>,
15}
16#[derive(Debug, Clone, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase", deny_unknown_fields)]
18pub struct ReadSessionRequest {
19 pub agent_id: String,
20 pub session_id: String,
21 #[serde(default)]
22 pub from_seq: u64,
23 #[serde(default)]
24 pub limit: Option<u32>,
25}
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase", deny_unknown_fields)]
28pub struct ListSessionsRequest {
29 pub agent_id: String,
30 #[serde(default)]
31 pub after: String,
32}
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct SessionLogPage {
36 pub header: Value,
37 pub next_seq: u64,
38 pub events: Vec<Value>,
39}
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct SessionLogDirectory {
43 pub sessions: Vec<SessionLogSnapshot>,
44 pub next_cursor: Option<String>,
45}
46#[derive(Debug, Clone, Serialize, Deserialize)]
47#[serde(rename_all = "camelCase")]
48pub struct SessionLogSnapshot {
49 pub header: Value,
50 pub next_seq: u64,
51}