Add audit and session log record types to proto

Implemented-By: Laguna S 2.1 (OpenCode)
This commit is contained in:
2026-09-17 08:36:44 -07:00
parent 78e13195ea
commit b9f3ab45c1
7 changed files with 272 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
//! Session log record types. One JSON object per line; assistant messages are stored verbatim.
use serde::{Deserialize, Serialize};
use crate::{CallId, DataClass, Epoch, Hash32, SessionId, Timestamp};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ToolCall {
pub id: String,
pub name: String,
pub arguments: String,
}
// JSON: {"type":"user","time":"…","content":"…"} ; the tag sits beside the fields; types are snake_case
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case", deny_unknown_fields)]
pub enum LogRecord {
SessionStart {
time: Timestamp,
session: SessionId,
epoch: Epoch,
slot: u32,
baseline: Hash32,
},
User {
time: Timestamp,
content: String,
},
Assistant {
time: Timestamp,
content: Option<String>,
reasoning_content: Option<String>,
tool_calls: Vec<ToolCall>,
},
ToolResult {
time: Timestamp,
call: CallId,
tool_call_id: String,
content: String,
class: DataClass,
untrusted: bool,
truncated: bool,
},
CacheLoss {
time: Timestamp,
expected: u64,
got: u64,
},
EpochEnd {
time: Timestamp,
next: Epoch,
summary: String,
},
}