use std::path::Path;
use serde::Serialize;
#[derive(Debug, Serialize)]
#[serde(tag = "event", rename_all = "snake_case")]
pub enum SessionEvent {
UserMessage {
content: String,
provider: String,
},
Inference {
content: String,
provider: String,
},
ToolUse {
tool_name: String,
input: serde_json::Value,
tool_use_id: String,
provider: String,
},
ToolResult {
tool_use_id: String,
output: String,
is_error: bool,
provider: String,
},
SessionEnd,
}
pub trait SessionStore: Send {
fn log(&mut self, event: SessionEvent) -> Result<(), anyhow::Error>;
fn path(&self) -> Option<&Path>;
fn session_id(&self) -> &str;
}