import type { HarnessEvent } from "../../core/src/classify/classifier.js";
import type { MatrixCell } from "../../schema/src/records/context.js";
import type { RedactionRule } from "../../playwright/src/redaction.js";
import { writePartialEvidenceArtifact } from "../../playwright/src/partial-evidence.js";

export async function pushHarnessWithPartialEvidence(
  harnessEvents: HarnessEvent[],
  input: {
    outcome: HarnessEvent;
    cell: MatrixCell;
    partialEvidence?: unknown;
    artifactRunDir?: string | undefined;
    sourceRunId: string;
    redactionRules?: RedactionRule[] | undefined;
  },
): Promise<void> {
  let artifactRefs = input.outcome.artifactRefs;
  if (input.artifactRunDir !== undefined && input.partialEvidence !== undefined) {
    try {
      const ref = await writePartialEvidenceArtifact({
        runDir: input.artifactRunDir,
        cellId: input.cell.id,
        evidence: input.partialEvidence,
        sourceRunId: input.sourceRunId,
        rules: input.redactionRules ?? [],
      });
      artifactRefs = [ref];
    } catch {
      artifactRefs = [];
    }
  }

  harnessEvents.push({
    ...input.outcome,
    artifactRefs,
  });
}
