openclaw/scripts/verify-mac-runtime-fs.mjs
Peter Steinberger 16be7f0f27
feat(macos): run the private app runtime on the OpenClaw Bun fork (#161603)
* feat(macos): run the private app runtime on the OpenClaw Bun fork

* fix(macos): let the bundled runtime load unsigned plugin addons

* test(macos): remove obsolete worker pruning closure tests

* test(macos): drop stale packaging test imports

* test(macos): migrate CI scope cases to runtime paths
2026-09-30 01:27:03 -07:00

51 lines
2.1 KiB
JavaScript
Executable file

#!/usr/bin/env bun
import assert from "node:assert/strict";
import fs from "node:fs";
import { createRequire } from "node:module";
import path from "node:path";
import { pathToFileURL } from "node:url";
const [packageArg, home] = process.argv.slice(2);
if (!packageArg || !home) {
throw new Error("Usage: verify-mac-runtime-fs.mjs <package-root> <proof-home>");
}
assert.equal(process.env.HOME, home);
assert.equal(process.env.TMPDIR, home);
assert.equal(process.env.FS_SAFE_NATIVE_MODE, "require");
const packageRoot = fs.realpathSync(packageArg);
const { root } = await import(
pathToFileURL(path.join(packageRoot, "dist/plugin-sdk/memory-core-host-engine-fs.js")).href
);
const scoped = await root(home);
const written = "bundled runtime write proof\n";
const created = "bundled runtime create proof\n";
fs.writeFileSync(path.join(home, "native-write-proof"), "before replacement\n");
await scoped.write("native-write-proof", written);
await scoped.create("native-create-proof", created);
assert.deepEqual(fs.readFileSync(path.join(home, "native-write-proof")), Buffer.from(written));
assert.deepEqual(fs.readFileSync(path.join(home, "native-create-proof")), Buffer.from(created));
// Resolve from fs-safe's dependency scope, including pnpm's nested install layout.
const requireFromPackage = createRequire(path.join(packageRoot, "package.json"));
const requireFromFsSafe = createRequire(
requireFromPackage.resolve("@openclaw/fs-safe/package.json"),
);
const nativeModule = requireFromFsSafe.resolve(
`@openclaw/fs-safe-${process.platform}-${process.arch}`,
);
assert(
nativeModule.startsWith(packageRoot + path.sep),
"fs-safe native package is outside the runtime payload",
);
const loaded = Object.keys(createRequire(import.meta.url).cache).filter(
(file) => path.basename(file) === "fs-safe-native.node",
);
assert.deepEqual(loaded, [nativeModule], "Installed fs-safe native module path mismatch");
console.log(
JSON.stringify({
architecture: process.arch,
nativeModule,
writeBytes: Buffer.byteLength(written),
createBytes: Buffer.byteLength(created),
}),
);