fix: tighten gateway restart loop handling (#23416) (thanks @jeffwnli)

This commit is contained in:
Peter Steinberger
2026-02-22 10:36:11 +01:00
parent 26acb77450
commit dd07c06d00
6 changed files with 67 additions and 14 deletions

View File

@@ -56,6 +56,17 @@ describe("infra parsing", () => {
).toBe(true);
});
it("returns true for dist/entry.js when launched via openclaw.mjs wrapper", () => {
expect(
isMainModule({
currentFile: "/repo/dist/entry.js",
argv: ["node", "/repo/openclaw.mjs"],
cwd: "/repo",
env: {},
}),
).toBe(true);
});
it("returns false when running under PM2 but this module is imported", () => {
expect(
isMainModule({

View File

@@ -41,6 +41,16 @@ export function isMainModule({
return true;
}
// The published/open-source wrapper binary is openclaw.mjs, which then imports
// dist/entry.js. Treat that pair as the main module so entry bootstrap runs.
if (normalizedCurrent && normalizedArgv1) {
const currentBase = path.basename(normalizedCurrent);
const argvBase = path.basename(normalizedArgv1);
if (currentBase === "entry.js" && (argvBase === "openclaw.mjs" || argvBase === "openclaw.js")) {
return true;
}
}
// Fallback: basename match (relative paths, symlinked bins).
if (
normalizedCurrent &&