agent_policy/render/
agents_md.rs1use camino::Utf8PathBuf;
4use minijinja::Environment;
5
6use crate::{
7 error::{Error, Result},
8 model::normalized::Policy,
9 render::RenderedOutput,
10};
11
12const TEMPLATE: &str = include_str!("../../templates/AGENTS.md.j2");
13
14pub fn render(policy: &Policy) -> Result<RenderedOutput> {
20 let mut env = Environment::new();
21 env.add_template("AGENTS.md", TEMPLATE)
22 .map_err(|e| Error::Render {
23 target: "AGENTS.md".to_owned(),
24 source: e,
25 })?;
26
27 let tmpl = env.get_template("AGENTS.md").map_err(|e| Error::Render {
28 target: "AGENTS.md".to_owned(),
29 source: e,
30 })?;
31
32 let commands_defined = !policy.commands.is_empty();
33 let content = tmpl
34 .render(minijinja::context! {
35 project => &policy.project,
36 commands => &policy.commands,
37 commands_defined => commands_defined,
38 paths => &policy.paths,
39 roles => &policy.roles,
40 constraints => &policy.constraints,
41 })
42 .map_err(|e| Error::Render {
43 target: "AGENTS.md".to_owned(),
44 source: e,
45 })?;
46
47 Ok(RenderedOutput {
48 path: Utf8PathBuf::from("AGENTS.md"),
49 content,
50 })
51}