Gates
Path:
loom-builder/src/gates.tsRelative: src/gates.tsSubproject: loom-builderCategory: dispatch-systemLines: 174Bytes: 6,717Imports: 2Exports: 12
Content Preview
- import { createHash } from "node:crypto";
- import { GateHaltError, type HaltReason, type ValidationCmd } from "./types.js";
- /** Deterministic JSON: sorted keys, no whitespace. */
- export function canonicalJSON(value: unknown): string {
- if (value === null || typeof value !== "object") return JSON.stringify(value);
- if (Array.isArray(value)) return `[${value.map(canonicalJSON).join(",")}]`;
- const obj = value as Record<string, unknown>;
- const keys = Object.keys(obj).sort();
- return `{${keys.