#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct WriteRiskAssessment {
pub original_bytes: u64,
pub new_bytes: u64,
pub size_delta_pct: u32,
pub risk_level: &'static str,
pub guard_triggered: &'static str,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct ReadOutput {
pub r#type: &'static str,
pub path: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
pub lines: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub lines_total: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub truncated: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next: Option<String>,
pub bytes: u64,
pub checksum: String,
pub permissions: String,
pub modified: String,
pub kind: String,
pub binary: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub range: Option<LineRange>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified: Option<bool>,
pub mode: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub media: Option<MediaInfo>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, JsonSchema)]
pub struct MediaInfo {
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub visual_tokens: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub frames: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub orientation: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pages: Option<Vec<u32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub needs_vision: Option<Vec<u32>>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct ReplaceResult {
pub r#type: &'static str,
pub path: String,
pub replacements: u64,
pub bytes_before: u64,
pub bytes_after: u64,
pub checksum_before: String,
pub checksum_after: String,
pub elapsed_ms: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub mtime_preserved: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fuzzy: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub strategy: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub similarity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub strategies_tried: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub word_ignored: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub risk_assessment: Option<WriteRiskAssessment>,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_path: Option<String>,
pub write_strategy: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_skipped: Option<String>,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct EditOutput {
pub r#type: &'static str,
pub path: String,
pub edits: u64,
pub mode: String,
pub bytes_before: u64,
pub bytes_after: u64,
pub checksum_before: String,
pub checksum_after: String,
pub lines_before: u64,
pub lines_after: u64,
pub elapsed_ms: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub fuzzy: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub strategy: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub strategies_tried: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub similarity: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub diff_preview: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pairs_total: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pair_results: Option<Vec<PairResult>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mtime_preserved: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub match_count: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub indent_adjusted: Option<bool>,
pub write_strategy: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_skipped: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub risk_assessment: Option<WriteRiskAssessment>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct RollbackResult {
pub r#type: &'static str,
pub path: String,
pub restored_from: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub checksum_before: Option<String>,
pub checksum_after: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified: Option<bool>,
pub write_strategy: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_skipped: Option<String>,
pub elapsed_ms: u64,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct BatchSummary {
pub r#type: &'static str,
pub operations: u64,
pub succeeded: u64,
pub failed: u64,
pub dry_run: bool,
pub elapsed_ms: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub transaction: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub committed: Option<bool>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub backups_preserved: Vec<String>,
}
#[derive(Debug, Serialize, JsonSchema)]
#[schemars(inline)]
pub struct DiffSummaryOutput {
pub r#type: &'static str,
pub identical: bool,
pub file_a: String,
pub file_b: String,
pub lines_a: usize,
pub lines_b: usize,
pub similarity_ratio: f32,
pub elapsed_ms: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub timed_out: Option<bool>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct MoveOutput {
pub r#type: &'static str,
pub source: String,
pub target: String,
pub bytes: u64,
pub checksum: String,
pub cross_device: bool,
pub atomic: bool,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_path: Option<String>,
pub write_strategy: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
#[schemars(extend("type" = "string"))]
pub backup_skipped: Option<String>,
pub elapsed_ms: u64,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct CountTotalOutput {
pub r#type: &'static str,
pub mode: &'static str,
pub total: CountTotals,
pub elapsed_ms: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub files_failed: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<FileFailure>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub partial: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub walker_stopped_early: Option<bool>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct CountBySizeOutput {
pub r#type: &'static str,
pub mode: &'static str,
pub items: Vec<SizeEntry>,
pub total: CountTotals,
#[serde(skip_serializing_if = "Option::is_none")]
pub items_omitted: Option<u64>,
pub elapsed_ms: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub files_failed: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<FileFailure>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub partial: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub walker_stopped_early: Option<bool>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct BackupPlan {
pub r#type: &'static str,
pub operation: &'static str,
pub path: String,
pub bytes: u64,
pub checksum: String,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct ApplyPlan {
pub r#type: &'static str,
pub operation: &'static str,
pub path: String,
pub format_detected: String,
pub hunks: usize,
}
#[derive(Debug, Serialize, JsonSchema)]
pub struct TextValuesOutput<'a> {
pub r#type: &'static str,
pub values: Vec<&'a str>,
}
pub use crate::wal::{AutoHealReport, WalDirEntry, WalStateBreakdown, WalStats};
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct EditLoopPairResult {
pub index: usize,
pub matched: bool,
pub old: String,
pub new: String,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct WatchEvent {
pub r#type: &'static str,
pub path: String,
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub checksum: Option<String>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct WatchSummary {
pub r#type: &'static str,
pub events: u64,
pub reason: String,
pub idle_exit_ms: u64,
pub debounce_ms: u64,
pub max_events: u64,
pub elapsed_ms: u64,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct SemanticSummaryEvent {
pub r#type: &'static str,
pub query: String,
pub k: u64,
pub results: usize,
pub backend: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
pub files_failed: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<FileFailure>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub partial: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub walker_stopped_early: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub files_scanned: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hits_before_cut: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub files_budget_dropped: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub below_min_score: Option<u64>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct RecipeListEvent {
pub r#type: &'static str,
pub name: &'static str,
pub builtin: bool,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct CodemodStartEvent {
pub r#type: &'static str,
pub phase: &'static str,
pub rules: String,
pub rule_ids: Vec<String>,
pub rule_id: String,
pub dry_run: bool,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct CodemodSummaryEvent {
pub r#type: &'static str,
pub rules: String,
pub rule_id: String,
pub dry_run: bool,
pub by_rule_id: std::collections::BTreeMap<String, CodemodRuleStats>,
#[serde(skip_serializing_if = "Option::is_none")]
pub transform_summary: Option<serde_json::Value>,
}
#[derive(Debug, PartialEq, Serialize, JsonSchema)]
pub struct TransformRuleError {
pub r#type: &'static str,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
pub error: String,
}