use crate::services::clippy_fix::{ClippyDiagnostic, ClippyFixEngine, ConfidenceLevel};
use anyhow::Result;
use pmcp::ToolResult;
use serde_json::{json, Value};
pub async fn auto_clippy_fix(
project_path: Option<String>,
confidence_level: Option<String>,
dry_run: Option<bool>,
fix_specific_codes: Option<Vec<String>>,
) -> Result<ToolResult> {
let path = project_path.unwrap_or_else(|| ".".to_string());
let min_confidence = parse_confidence_level(&confidence_level)?;
let is_dry_run = dry_run.unwrap_or(false);
let diagnostics = run_clippy_analysis(&path).await?;
let engine = ClippyFixEngine::new();
let filtered = filter_diagnostics(&engine, diagnostics, min_confidence, &fix_specific_codes);
let results = if is_dry_run {
simulate_fixes(&engine, filtered).await?
} else {
apply_fixes(&engine, filtered).await?
};
Ok(create_fix_response(results, is_dry_run))
}
include!("auto_clippy_fix_core.rs");
include!("auto_clippy_fix_tests.rs");
include!("auto_clippy_fix_tests_integration.rs");