agentshield/output/json.rs
1use crate::error::Result;
2use crate::rules::policy::PolicyVerdict;
3use crate::rules::Finding;
4
5use serde::Serialize;
6
7#[derive(Serialize)]
8struct JsonReport<'a> {
9 findings: &'a [Finding],
10 verdict: &'a PolicyVerdict,
11}
12
13/// Render findings as a JSON report.
14pub fn render(findings: &[Finding], verdict: &PolicyVerdict) -> Result<String> {
15 let report = JsonReport { findings, verdict };
16 let json = serde_json::to_string_pretty(&report)?;
17 Ok(json)
18}