From e3e2bea26cb3eb6fc122c45679c814e95ee94a59 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 19 Dec 2025 17:30:12 +0000 Subject: [PATCH 1/2] Initial plan From 81265943d3d507f31a064ca90f4dbf3d5b36edf5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 19 Dec 2025 17:37:21 +0000 Subject: [PATCH 2/2] Fix FileAdapter save_policy to preserve CSV format with spaces Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com> --- src/adapter/file_adapter.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/adapter/file_adapter.rs b/src/adapter/file_adapter.rs index ff50d1f7..4e8631f6 100644 --- a/src/adapter/file_adapter.rs +++ b/src/adapter/file_adapter.rs @@ -147,7 +147,7 @@ where for (ptype, ast) in ast_map { for rule in ast.get_policy() { - writeln!(policies, "{}, {}", ptype, rule.join(",")) + writeln!(policies, "{}, {}", ptype, rule.join(", ")) .map_err(|e| AdapterError(e.into()))?; } } @@ -155,12 +155,17 @@ where if let Some(ast_map) = m.get_model().get("g") { for (ptype, ast) in ast_map { for rule in ast.get_policy() { - writeln!(policies, "{}, {}", ptype, rule.join(",")) + writeln!(policies, "{}, {}", ptype, rule.join(", ")) .map_err(|e| AdapterError(e.into()))?; } } } + // Remove trailing newline to match the original file format + if policies.ends_with('\n') { + policies.pop(); + } + self.save_policy_file(policies).await?; Ok(()) }