use atuin_common::string::NonNulStr;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub enum WireToolName {
Bash,
#[serde(other)]
Other,
}
#[derive(Debug, Deserialize)]
pub struct WireHookEvent {
pub hook_event_name: HookEventName,
pub tool_name: WireToolName,
pub tool_use_id: String,
#[serde(default)]
pub tool_input: Option<WireToolInput>,
#[serde(default)]
pub tool_response: Option<WireToolResponse>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize)]
pub enum HookEventName {
PreToolUse,
PostToolUse,
PostToolUseFailure,
#[serde(other)]
Other,
}
#[derive(Debug, Deserialize)]
pub struct WireToolInput {
#[serde(default)]
pub command: Option<NonNulStr>,
#[serde(default)]
pub description: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct WireToolResponse {
#[serde(rename = "exitCode", default)]
pub exit_code: Option<i64>,
}