use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GlobInput {
pub pattern: String,
pub path: Option<String>,
pub paths: Option<Vec<String>>,
pub file_type: Option<String>,
pub recursive: Option<bool>,
pub hidden: Option<bool>,
pub max_results: Option<u32>,
pub gitignore: Option<bool>,
pub sort_by_mtime: Option<bool>,
pub format: Option<String>,
pub timeout_ms: Option<u32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GrepInput {
pub pattern: String,
pub path: String,
pub paths: Option<Vec<String>>,
pub line_range: Option<String>,
pub glob: Option<String>,
pub file_type: Option<String>,
pub ignore_case: Option<bool>,
pub max_count: Option<u32>,
pub skip: Option<u32>,
pub context_before: Option<u32>,
pub context_after: Option<u32>,
pub hidden: Option<bool>,
pub gitignore: Option<bool>,
pub timeout_ms: Option<u32>,
}
#[derive(Default)]
pub struct Glob {
pub file_type: Option<String>,
pub recursive: Option<bool>,
pub hidden: Option<bool>,
pub max_results: Option<u32>,
pub gitignore: Option<bool>,
pub sort_by_mtime: Option<bool>,
pub format: Option<String>,
pub timeout_ms: Option<u32>,
}
#[derive(Clone, Debug, Default)]
pub struct GlobCallOptions {
pub file_type: Option<String>,
pub hidden: Option<bool>,
pub gitignore: Option<bool>,
pub max_results: Option<u32>,
pub format: Option<String>,
pub sort_by_mtime: Option<bool>,
pub timeout_ms: Option<u32>,
}
#[derive(Serialize)]
pub struct GlobEntry {
pub path: String,
pub file_type: String,
pub mtime_ms: Option<f64>,
pub size_bytes: Option<f64>,
}
#[derive(Serialize)]
pub struct GlobOutput {
pub matches: Vec<GlobEntry>,
pub total: u32,
pub limit_reached: Option<bool>,
pub timed_out: Option<bool>,
pub note: Option<String>,
pub useless: Option<bool>,
pub missing_paths: Option<Vec<String>>,
pub formatted: String,
pub scope: String,
pub cwd: Option<String>,
}
#[derive(Default)]
pub struct Grep {
pub glob: Option<String>,
pub file_type: Option<String>,
pub ignore_case: Option<bool>,
pub max_count: Option<u32>,
pub skip: Option<u32>,
pub line_range: Option<String>,
pub context_before: Option<u32>,
pub context_after: Option<u32>,
pub hidden: Option<bool>,
pub gitignore: Option<bool>,
pub timeout_ms: Option<u32>,
}
#[derive(Clone, Serialize)]
pub struct ContextEntry {
pub line_number: u32,
pub line: String,
}
#[derive(Clone, Serialize)]
pub struct GrepMatchEntry {
pub path: String,
pub line_number: u32,
pub line: String,
pub truncated: Option<bool>,
pub context_before: Vec<ContextEntry>,
pub context_after: Vec<ContextEntry>,
}
#[derive(Serialize)]
pub struct GrepFileEntry {
pub path: String,
pub file_hash: String,
pub header: String,
}
#[derive(Serialize)]
pub struct GrepOutput {
pub matches: Vec<GrepMatchEntry>,
pub total_matches: u32,
pub files_with_matches: u32,
pub files_searched: u32,
pub file_limit_reached: bool,
pub per_file_limit_reached: bool,
pub note: Option<String>,
pub useless: Option<bool>,
pub files: Vec<GrepFileEntry>,
pub timed_out: Option<bool>,
}