agent-context-contract 0.2.2

Transport-neutral contracts for Agent Infra context APIs
Documentation
//! Durable native session logs: immutable header, contiguous events, bounded cursor reads.
use serde::{Deserialize, Serialize};
use serde_json::Value;
pub const SESSION_APPEND_PATH: &str = "/internal/v1/context/sessions/append";
pub const SESSION_READ_PATH: &str = "/internal/v1/context/sessions/read";
pub const SESSION_LIST_PATH: &str = "/internal/v1/context/sessions/list";
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct AppendSessionRequest {
    pub agent_id: String,
    pub session_id: String,
    pub header: Value,
    pub expected_seq: u64,
    pub events: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct ReadSessionRequest {
    pub agent_id: String,
    pub session_id: String,
    #[serde(default)]
    pub from_seq: u64,
    #[serde(default)]
    pub limit: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct ListSessionsRequest {
    pub agent_id: String,
    #[serde(default)]
    pub after: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionLogPage {
    pub header: Value,
    pub next_seq: u64,
    pub events: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionLogDirectory {
    pub sessions: Vec<SessionLogSnapshot>,
    pub next_cursor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SessionLogSnapshot {
    pub header: Value,
    pub next_seq: u64,
}