fix(matrix): require trusted wrapper package roots

This commit is contained in:
Vincent Koc
2026-04-14 17:55:07 +01:00
parent 665a8496d7
commit 3745d5b135
2 changed files with 82 additions and 1 deletions

View File

@@ -38,11 +38,26 @@ function readPackageJson(packageRoot) {
}
}
function hasTrustedOpenClawRootIndicator(packageRoot, packageJson) {
const packageExports = packageJson?.exports ?? {};
if (!Object.prototype.hasOwnProperty.call(packageExports, "./plugin-sdk")) {
return false;
}
const hasCliEntryExport = Object.prototype.hasOwnProperty.call(packageExports, "./cli-entry");
const hasOpenClawBin =
(typeof packageJson?.bin === "string" && packageJson.bin.includes("openclaw")) ||
(typeof packageJson?.bin === "object" &&
packageJson.bin !== null &&
typeof packageJson.bin.openclaw === "string");
const hasOpenClawEntrypoint = fs.existsSync(path.join(packageRoot, "openclaw.mjs"));
return hasCliEntryExport || hasOpenClawBin || hasOpenClawEntrypoint;
}
function findOpenClawPackageRoot(startDir) {
let cursor = path.resolve(startDir);
for (let i = 0; i < 12; i += 1) {
const pkg = readPackageJson(cursor);
if (pkg?.name === "openclaw" && pkg.exports?.["./plugin-sdk"]) {
if (pkg?.name === "openclaw" && hasTrustedOpenClawRootIndicator(cursor, pkg)) {
return { packageRoot: cursor, packageJson: pkg };
}
const parent = path.dirname(cursor);