use schemars::JsonSchema;
use serde::Deserialize;
#[derive(Debug, Copy, Clone, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum IntrospectAction {
CommandTimings,
Coverage,
ContractRecord,
ContractCheck,
ContractList,
ContractClear,
StartupTiming,
Capabilities,
DbHealth,
ManagedState,
Processes,
Tasks,
FsScope,
EventBus,
EventBusClear,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct IntrospectParams {
pub action: IntrospectAction,
#[serde(skip_serializing_if = "Option::is_none")]
pub slow_threshold_ms: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub args: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub db_path: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webview_label: Option<String>,
}
#[derive(Debug, Copy, Clone, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum FaultAction {
Inject,
List,
Clear,
ClearAll,
}
#[derive(Debug, Copy, Clone, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum FaultKind {
Delay,
Error,
Drop,
Corrupt,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct FaultParams {
pub action: FaultAction,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fault_type: Option<FaultKind>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delay_ms: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_triggers: Option<u64>,
}
#[derive(Debug, Copy, Clone, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExplainAction {
Summary,
LastAction,
Diff,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ExplainParams {
pub action: ExplainAction,
#[serde(skip_serializing_if = "Option::is_none")]
pub seconds: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webview_label: Option<String>,
}