pub mod finding;
pub mod probe;
pub mod probes;
pub mod registry;
pub mod render;
#[cfg(test)]
pub(crate) mod test_helpers;
use crate::application::plugin_registry::PluginRegistry;
use crate::domain::error::WireResult;
use crate::infrastructure::storage::SqliteStorage;
pub use finding::{Axis, Finding, Kind, Location, Severity};
pub use probe::{FindingSink, Probe, ProbeCtx};
pub use render::{aggregate_verdict, Verdict};
pub fn run(
storage: &SqliteStorage,
persona_id: Option<String>,
registry: &PluginRegistry,
) -> WireResult<String> {
let ctx = ProbeCtx {
storage,
persona_filter: persona_id.clone(),
};
let mut sink = FindingSink::new();
for probe in self::registry::default() {
probe.scan(&ctx, &mut sink)?;
}
let mut report = render::to_markdown(persona_id.as_deref(), sink.into_vec());
report.push_str(&render::render_adapters(®istry.describe()));
Ok(report)
}