use std::path::PathBuf;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum PluginError {
#[error("Plugin directory is not a directory: {0}")]
NotADirectory(PathBuf),
#[error("Failed to load plugin from {path}: {message}")]
LoadFailed { path: PathBuf, message: String },
#[error("Plugin API version mismatch: expected {expected}, found {found} in {path}")]
VersionMismatch {
expected: u32,
found: u32,
path: PathBuf,
},
#[error("Duplicate plugin name: {0}")]
DuplicatePlugin(String),
#[error("Duplicate tool name '{tool}' from plugin '{plugin}'")]
DuplicateTool { tool: String, plugin: String },
#[error("Invalid tool info from plugin: {0}")]
InvalidToolInfo(String),
#[error("Plugin execution failed: {0}")]
ExecutionFailed(String),
}