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.
71 lines (70 loc) • 1.82 kB
TypeScript
export declare const RECEIPT_SPEC: "noa.receipt/0.1";
export type RiskClass = "LOW" | "MEDIUM" | "HIGH" | "CRITICAL" | "IRREVERSIBLE";
export type Principal = "HUMAN" | "SERVICE" | "POLICY" | "SANDBOX_SIM";
export type GovernanceMode = "off" | "shadow" | "approvals_on" | "on";
export type Verdict = "ALLOWED" | "BLOCKED" | "DEFERRED" | "EXECUTED" | "FAILED" | "ROLLED_BACK" | "SIMULATED";
export type ParamsHash = string;
export interface ReceiptScope {
tenant?: string;
chain: string;
}
export interface ReceiptAgent {
id: string;
model?: string | null;
principal: Principal;
}
export interface ReceiptApproval {
by: string;
at: string;
}
export interface ReceiptAction {
id: string;
canonical: string;
riskClass: RiskClass;
paramsHash: ParamsHash;
reversible: boolean;
rollbackRef?: string | null;
}
export interface ReceiptCompliance {
policyHash: string;
readSetHash: string;
inputsHash: string;
verdict?: "ALLOW" | "DENY";
}
export interface ReceiptGovernance {
mode: GovernanceMode;
verdict: Verdict;
ruleId?: string | null;
approval?: ReceiptApproval | null;
sandboxed: boolean;
compliance?: ReceiptCompliance | null;
}
export interface ReceiptChain {
seq: number;
prevHash: string | null;
hash: string;
}
export interface ReceiptSig {
alg: "ed25519";
kid: string;
value: string;
}
export interface Receipt {
spec: typeof RECEIPT_SPEC;
id: string;
ts: string;
scope: ReceiptScope;
agent: ReceiptAgent;
action: ReceiptAction;
governance: ReceiptGovernance;
chain: ReceiptChain;
sig: ReceiptSig;
}
export interface Checkpoint {
spec: "noa.checkpoint/0.1";
chain: string;
highestSeq: number;
headHash: string;
ts: string;
sig: ReceiptSig;
}