audit.ts
661 bytes
1import { appendFile, mkdir } from "node:fs/promises";
2import { dirname } from "node:path";
3import { POLICY_VERSION } from "./normalize";
4import type { DecisionAudit } from "./types";
5
6export function createJsonlDecisionAudit(file: string): DecisionAudit {
7 return {
8 async record(entry): Promise<void> {
9 try {
10 await mkdir(dirname(file), { recursive: true });
11 await appendFile(
12 file,
13 `${JSON.stringify({ recordedAt: new Date().toISOString(), ...entry, policyVersion: POLICY_VERSION })}\n`,
14 );
15 } catch {}
16 },
17 };
18}
19
20export const disabledDecisionAudit: DecisionAudit = {
21 record: async () => {},
22};