pub trait MangoFetchPlugin: Send + Sync {
// Required methods
fn id(&self) -> &str;
fn name(&self) -> &str;
fn version(&self) -> &str;
fn initialize(&mut self, host: Arc<dyn PluginHost>) -> Result<()>;
fn handle_command(
&self,
command: String,
args: Value,
) -> Pin<Box<dyn Future<Output = Result<Value, String>> + Send + 'static>>;
fn commands(&self) -> Vec<String>;
// Provided method
fn shutdown(&self) { ... }
}