import { persistArtifact } from "./artifacts.js";
import type { ArtifactRef } from "./artifacts.js";
import {
  redactJsonPayload,
  redactionStateForArtifact,
  type RedactionRule,
} from "./redaction.js";

export async function writePartialEvidenceArtifact(input: {
  runDir: string;
  cellId: string;
  evidence: unknown;
  sourceRunId: string;
  rules: RedactionRule[];
}): Promise<ArtifactRef> {
  const { json, replacements } = redactJsonPayload(input.evidence, input.rules);
  return persistArtifact({
    runDir: input.runDir,
    cellId: input.cellId,
    kind: "partial-evidence",
    payload: {
      bytes: Buffer.from(json, "utf8"),
      mediaType: "application/json",
    },
    sourceRunId: input.sourceRunId,
    redactionState: redactionStateForArtifact(replacements),
  });
}
