use std::collections::BTreeMap;
use serde::Deserialize;
use serde::Serialize;
use crate::payload::RawPayloadId;
use crate::payload::RawPayloadRef;
mod conversation;
mod runtime;
mod session;
pub use conversation::*;
pub use runtime::*;
pub use session::*;
pub type AgentThreadId = String;
pub type AgentPath = String;
pub type CodexTurnId = String;
pub type ConversationItemId = String;
pub type InferenceCallId = String;
pub type McpCallId = String;
pub type ToolCallId = String;
pub type ModelVisibleCallId = String;
pub type CodeModeRuntimeToolId = String;
pub type CodeCellId = String;
pub type TerminalId = String;
pub type TerminalOperationId = String;
pub type CompactionId = String;
pub type CompactionRequestId = String;
pub type EdgeId = String;
pub type CorrelationId = String;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RolloutTrace {
pub schema_version: u32,
pub trace_id: String,
pub rollout_id: String,
pub started_at_unix_ms: i64,
pub ended_at_unix_ms: Option<i64>,
pub status: RolloutStatus,
pub root_thread_id: AgentThreadId,
pub threads: BTreeMap<AgentThreadId, AgentThread>,
pub codex_turns: BTreeMap<CodexTurnId, CodexTurn>,
pub conversation_items: BTreeMap<ConversationItemId, ConversationItem>,
pub inference_calls: BTreeMap<InferenceCallId, InferenceCall>,
pub code_cells: BTreeMap<CodeCellId, CodeCell>,
pub tool_calls: BTreeMap<ToolCallId, ToolCall>,
pub terminal_sessions: BTreeMap<TerminalId, TerminalSession>,
pub terminal_operations: BTreeMap<TerminalOperationId, TerminalOperation>,
pub compactions: BTreeMap<CompactionId, Compaction>,
pub compaction_requests: BTreeMap<CompactionRequestId, CompactionRequest>,
pub interaction_edges: BTreeMap<EdgeId, InteractionEdge>,
pub raw_payloads: BTreeMap<RawPayloadId, RawPayloadRef>,
}
impl RolloutTrace {
pub(crate) fn new(
schema_version: u32,
trace_id: String,
rollout_id: String,
root_thread_id: AgentThreadId,
started_at_unix_ms: i64,
) -> Self {
Self {
schema_version,
trace_id,
rollout_id,
started_at_unix_ms,
ended_at_unix_ms: None,
status: RolloutStatus::Running,
root_thread_id,
threads: BTreeMap::new(),
codex_turns: BTreeMap::new(),
conversation_items: BTreeMap::new(),
inference_calls: BTreeMap::new(),
code_cells: BTreeMap::new(),
tool_calls: BTreeMap::new(),
terminal_sessions: BTreeMap::new(),
terminal_operations: BTreeMap::new(),
compactions: BTreeMap::new(),
compaction_requests: BTreeMap::new(),
interaction_edges: BTreeMap::new(),
raw_payloads: BTreeMap::new(),
}
}
}