use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub(super) enum HistoryReadDirection {
Backward,
Forward,
}
impl HistoryReadDirection {
pub(super) const fn as_str(self) -> &'static str {
match self {
Self::Backward => "backward",
Self::Forward => "forward",
}
}
}
#[derive(Debug, Deserialize)]
#[serde(tag = "action", rename_all = "snake_case")]
pub(super) enum SessionInspectorArgs {
SearchCurrent {
query: String,
#[serde(default)]
limit: Option<usize>,
},
ReadCurrent {
#[serde(default)]
cursor: Option<String>,
#[serde(default)]
direction: Option<HistoryReadDirection>,
#[serde(default)]
limit: Option<usize>,
#[serde(default)]
max_chars: Option<usize>,
#[serde(default)]
archived_only: Option<bool>,
},
ReadAround {
message_id: String,
#[serde(default)]
before_turns: Option<usize>,
#[serde(default)]
after_turns: Option<usize>,
#[serde(default)]
max_chars: Option<usize>,
},
ExportContext { session_id: String },
List {
#[serde(default)]
query: Option<String>,
#[serde(default)]
kind: Option<String>, #[serde(default)]
pinned: Option<bool>,
#[serde(default)]
parent_session_id: Option<String>,
#[serde(default)]
root_session_id: Option<String>,
#[serde(default)]
created_by_schedule_id: Option<String>,
#[serde(default)]
limit: Option<usize>,
#[serde(default)]
offset: Option<usize>,
},
GetMeta { session_id: String },
ReadMessages {
session_id: String,
#[serde(default)]
from_end: Option<bool>,
#[serde(default)]
offset: Option<usize>,
#[serde(default)]
limit: Option<usize>,
#[serde(default)]
truncate_chars: Option<usize>,
#[serde(default)]
include_system: Option<bool>,
#[serde(default)]
include_tool: Option<bool>,
#[serde(default)]
include_tool_calls: Option<bool>,
#[serde(default)]
include_image_urls: Option<bool>,
},
ReadCompressedCache {
session_id: String,
#[serde(default)]
offset: Option<usize>,
#[serde(default)]
limit: Option<usize>,
#[serde(default)]
truncate_chars: Option<usize>,
#[serde(default)]
include_summary: Option<bool>,
},
Search {
query: String,
#[serde(default)]
mode: Option<String>,
#[serde(default)]
max_sessions: Option<usize>,
#[serde(default)]
tail_messages: Option<usize>,
#[serde(default)]
case_sensitive: Option<bool>,
#[serde(default)]
max_matches: Option<usize>,
},
}