Implement configuration, runtime, frontend, and task governance closure

This commit is contained in:
2026-08-21 16:51:42 +08:00
parent b1b5a3cc8a
commit 63c0408ce7
92 changed files with 343619 additions and 172 deletions

View File

@@ -0,0 +1,34 @@
import assert from "node:assert/strict";
import { preflightConfiguration, resolveReference, splitReference } from "./configuration.mjs";
assert.deepEqual(splitReference("LIB:basic_sim.tcl -no_sim_spindle"), {
status: "accepted",
code: null,
raw: "LIB:basic_sim.tcl -no_sim_spindle",
value: "LIB:basic_sim.tcl",
args: ["-no_sim_spindle"],
});
const available = new Set([
"linuxcnc/lib/hallib/basic_sim.tcl",
"linuxcnc/configs/sim/demo/core.hal",
"linuxcnc/nc_files/probe.ngc",
]);
assert.equal(resolveReference({ rawValue: "LIB:basic_sim.tcl -no_sim_spindle", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).path, "linuxcnc/lib/hallib/basic_sim.tcl");
assert.equal(resolveReference({ rawValue: "core.hal", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).path, "linuxcnc/configs/sim/demo/core.hal");
assert.equal(resolveReference({ rawValue: "linuxcnc/nc_files/probe.ngc", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).path, "linuxcnc/nc_files/probe.ngc");
assert.equal(resolveReference({ rawValue: "~/linuxcnc/nc_files", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).code, "configuration_host_path");
assert.equal(resolveReference({ rawValue: "../../../../etc/passwd", entrypoint: "linuxcnc/configs/sim/demo/main.ini", availablePaths: available }).code, "configuration_outside_repo");
const report = preflightConfiguration({
entrypoint: "linuxcnc/configs/sim/demo/main.ini",
availablePaths: available,
rows: [
{ resource_source_id: "r1", entrypoint: "linuxcnc/configs/sim/demo/main.ini", path: "LIB:basic_sim.tcl -no_sim_spindle", raw_value: "LIB:basic_sim.tcl -no_sim_spindle", parse_status: "missing" },
{ resource_source_id: "r2", entrypoint: "linuxcnc/configs/sim/demo/main.ini", path: "missing.hal", raw_value: "missing.hal", parse_status: "missing" },
],
});
assert.equal(report.schema, "configuration-startup-closure.v1");
assert.equal(report.status, "blocked");
assert.equal(report.resolved_count, 1);
assert.equal(report.blocked_count, 1);
console.log(`configuration_resolver=passed resolved=${report.resolved_count} blocked=${report.blocked_count}`);