use serde_json::{Value, json};
pub fn wrap(schema: &str, meta: Value, result: Value) -> Value {
json!({
"schema": format!("llmtrim-bench/{schema}"),
"produced_at": now_rfc3339(),
"commit": git_commit(),
"llmtrim_version": env!("CARGO_PKG_VERSION"),
"meta": meta,
"result": result,
})
}
fn now_rfc3339() -> String {
chrono::Utc::now().to_rfc3339_opts(chrono::SecondsFormat::Secs, true)
}
fn git_commit() -> String {
std::process::Command::new("git")
.args(["rev-parse", "--short", "HEAD"])
.output()
.ok()
.filter(|o| o.status.success())
.and_then(|o| String::from_utf8(o.stdout).ok())
.map(|s| s.trim().to_string())
.filter(|s| !s.is_empty())
.unwrap_or_else(|| "unknown".to_string())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn wrap_namespaces_schema_and_preserves_body() {
let doc = wrap("quality-v1", json!({ "preset": "rag" }), json!({ "n": 12 }));
assert_eq!(doc["schema"], "llmtrim-bench/quality-v1");
assert_eq!(doc["meta"]["preset"], "rag");
assert_eq!(doc["result"]["n"], 12, "body carried verbatim under result");
assert_eq!(doc["llmtrim_version"], env!("CARGO_PKG_VERSION"));
assert!(doc["produced_at"].as_str().unwrap().contains('T'));
assert!(doc.get("commit").is_some());
}
}