sovereign-mamba / src /receipt.ts
SNAPKITTYWEST's picture
Add sovereign-mamba source: Modelfile, kernel Prolog gates, sovereign_crypto Rust, Lean4, corpus policy
0427fad verified
Raw
History Blame Contribute Delete
1.06 kB
import { createHash } from "node:crypto";
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
import { join, resolve } from "node:path";
export type ReceiptEntry = {
kind: string;
trust_deed: string;
trust_deed_version: string;
status: string;
raw_output: string;
syscalls: string[];
gate: unknown[];
timestamp: string;
receipt_id: string;
};
export function writeReceipt(
entry: Omit<ReceiptEntry, "timestamp" | "receipt_id">,
options: { dir?: string } = {}
): ReceiptEntry {
const receiptsDir = resolve(options.dir ?? "receipts");
if (!existsSync(receiptsDir)) mkdirSync(receiptsDir, { recursive: true });
const ts = new Date().toISOString();
const receiptId = createHash("sha256")
.update(JSON.stringify(entry) + ts)
.digest("hex")
.slice(0, 16);
const receipt: ReceiptEntry = { ...entry, timestamp: ts, receipt_id: receiptId };
const filename = join(receiptsDir, `${receiptId}.json`);
writeFileSync(filename, JSON.stringify(receipt, null, 2));
return receipt;
}