UNPKG

noa-receipt

Version:

NOA Agent Action Receipt — open, offline-verifiable provenance for AI-agent actions. The governance/receipt organ only; the NOA brain is separate and proprietary.

36 lines (35 loc) • 1.17 kB
import { canonicalize } from "../jcs.js"; import { sha256Prefixed } from "../hash.js"; import { isArray, setToArray, setAdd, newSet, arraySort, publishArray } from "../intrinsics.js"; export const POLICY_SPEC = "noa.policy/0.2"; export const DEFAULT_VERDICT = "DENY"; export function policyHash(p) { return sha256Prefixed(canonicalize(p)); } function readSetInert(p) { const s = newSet(isArray(p.requiredPaths) ? p.requiredPaths : []); const walk = (c) => { if ("clauses" in c) { for (let i = 0; i < c.clauses.length; i++) walk(c.clauses[i]); } else if ("clause" in c) walk(c.clause); else if (typeof c.path === "string") setAdd(s, c.path); }; if (isArray(p.rules)) { for (let i = 0; i < p.rules.length; i++) { const r = p.rules[i]; if (r && typeof r === "object" && "when" in r) walk(r.when); } } return arraySort(setToArray(s)); } export function readSet(p) { return publishArray(readSetInert(p)); } export function readSetHash(p) { return sha256Prefixed(canonicalize(readSetInert(p))); }