use tauri::{AppHandle, State};

use crate::wsl_bridge::SharedBridge;

#[tauri::command]
pub async fn start_claude(
    app: AppHandle,
    bridge: State<'_, SharedBridge>,
    working_dir: String,
    allowed_tools: Option<Vec<String>>,
) -> Result<(), String> {
    let mut bridge = bridge.lock();
    bridge.start(app, &working_dir, allowed_tools.unwrap_or_default())
}

#[tauri::command]
pub async fn stop_claude(app: AppHandle, bridge: State<'_, SharedBridge>) -> Result<(), String> {
    let mut bridge = bridge.lock();
    bridge.stop(&app);
    Ok(())
}

#[tauri::command]
pub async fn send_prompt(bridge: State<'_, SharedBridge>, message: String) -> Result<(), String> {
    let mut bridge = bridge.lock();
    bridge.send_message(&message)
}

#[tauri::command]
pub async fn is_claude_running(bridge: State<'_, SharedBridge>) -> Result<bool, String> {
    let bridge = bridge.lock();
    Ok(bridge.is_running())
}

#[tauri::command]
pub async fn get_working_directory(bridge: State<'_, SharedBridge>) -> Result<String, String> {
    let bridge = bridge.lock();
    Ok(bridge.get_working_directory().to_string())
}

#[tauri::command]
pub async fn select_wsl_directory() -> Result<String, String> {
    Ok("/home".to_string())
}
