feat: add deterministic Diagram IR v2 authoring

This commit is contained in:
2026-09-03 10:05:29 +00:00
parent 305006c8cb
commit 50a07b90a9
31 changed files with 2108 additions and 98 deletions
@@ -0,0 +1,26 @@
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import test from "node:test";
const schemaUrl = new URL("../../../schemas/diagram-ir-v2.schema.json", import.meta.url);
test("published IR v2 schema defines pages, geometry, waypoints, and provenance", () => {
const schema = JSON.parse(readFileSync(schemaUrl, "utf8")) as {
properties: Record<string, unknown>;
$defs: Record<string, unknown>;
};
assert.ok(schema.properties.pages);
assert.ok(schema.properties.provenance);
assert.ok(schema.$defs.geometry);
const geometry = schema.$defs.geometry as { required?: string[]; properties?: Record<string, unknown>; allOf?: unknown };
assert.equal(geometry.allOf, undefined);
assert.deepEqual(geometry.required, ["x", "y", "width", "height"]);
assert.ok(geometry.properties?.width);
assert.ok(schema.$defs.point);
assert.ok(schema.$defs.page);
const page = schema.$defs.page as { properties?: { title?: { pattern?: string } } };
const node = schema.$defs.node as { properties?: { label?: { pattern?: string } } };
assert.equal(page.properties?.title?.pattern, "\\S");
assert.equal(node.properties?.label?.pattern, "\\S");
assert.ok(schema.$defs.edge);
});