use anyhow::Result;
use lowfat_core::level::Level;
#[derive(Debug, Clone)]
pub struct FilterInput {
pub raw: String,
pub command: String,
pub subcommand: String,
pub args: Vec<String>,
pub level: Level,
pub head_limit: usize,
pub exit_code: i32,
}
#[derive(Debug, Clone)]
pub struct FilterOutput {
pub text: String,
pub passthrough: bool,
}
#[derive(Debug, Clone)]
pub struct PluginInfo {
pub name: String,
pub version: String,
pub commands: Vec<String>,
pub subcommands: Vec<String>,
}
pub trait FilterPlugin: Send + Sync {
fn info(&self) -> PluginInfo;
fn filter(&self, input: &FilterInput) -> Result<FilterOutput>;
}