use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum SendOutcome {
Queued,
Delivered,
Timeout,
DroppedOnShutdown,
Failed,
}
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum DeliveryPayloadMode {
EnvelopeMessage,
RawInput,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum LookFreshness {
Fresh,
Stale,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum LookSnapshotSource {
LiveBuffer,
None,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum WorkerReadinessState {
Initializing,
Available,
Busy,
Recovering,
Unavailable,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ToolCallStatus {
Pending,
Completed,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum StructuredEntry {
User {
lines: Vec<String>,
},
Agent {
lines: Vec<String>,
},
Cognition {
lines: Vec<String>,
},
Invocation {
call_id: String,
status: ToolCallStatus,
invocation: Value,
result: Option<Value>,
},
Update {
update_kind: String,
lines: Vec<String>,
},
}
#[derive(Clone, Debug)]
pub enum LookSnapshotPayload {
Lines { snapshot_lines: Vec<String> },
StructuredEntries {
snapshot_entries: Vec<StructuredEntry>,
entries_total: usize,
returned_entries_count: usize,
freshness: LookFreshness,
snapshot_source: LookSnapshotSource,
stale_reason_code: Option<String>,
snapshot_age_ms: Option<u64>,
},
}