






















@@ -4,7 +4,10 @@ import { registerDnsCli } from "./dns-cli.js";
44import { parseCanvasSnapshotPayload } from "./nodes-canvas.js";
55import { parseByteSize } from "./parse-bytes.js";
66import { parseDurationMs } from "./parse-duration.js";
7-import { shouldSkipRespawnForArgv } from "./respawn-policy.js";
7+import {
8+shouldSkipRespawnForArgv,
9+shouldSkipStartupEnvironmentRespawnForArgv,
10+} from "./respawn-policy.js";
811import { waitForever } from "./wait.js";
9121013describe("waitForever", () => {
@@ -21,6 +24,9 @@ describe("shouldSkipRespawnForArgv", () => {
2124it.each([
2225{ argv: ["node", "openclaw", "--help"] },
2326{ argv: ["node", "openclaw", "-V"] },
27+{ argv: ["node", "openclaw", "tui"] },
28+{ argv: ["node", "openclaw", "terminal"] },
29+{ argv: ["node", "openclaw", "chat"] },
2430{ argv: ["node", "openclaw", "gateway"] },
2531{ argv: ["node", "openclaw", "gateway", "--port", "14720", "--bind", "loopback"] },
2632{ argv: ["node", "openclaw", "gateway", "run", "--port=14720", "--bind", "loopback"] },
@@ -40,6 +46,25 @@ describe("shouldSkipRespawnForArgv", () => {
4046});
4147});
424849+describe("shouldSkipStartupEnvironmentRespawnForArgv", () => {
50+it.each([
51+{ argv: ["node", "openclaw", "--help"] },
52+{ argv: ["node", "openclaw", "gateway"] },
53+{ argv: ["node", "openclaw", "gateway", "run", "--port=14720"] },
54+] as const)("skips startup env respawn for argv %j", ({ argv }) => {
55+expect(shouldSkipStartupEnvironmentRespawnForArgv([...argv]), argv.join(" ")).toBe(true);
56+});
57+58+it.each([
59+{ argv: ["node", "openclaw", "tui"] },
60+{ argv: ["node", "openclaw", "terminal"] },
61+{ argv: ["node", "openclaw", "chat"] },
62+{ argv: ["node", "openclaw", "status"] },
63+] as const)("allows startup env respawn for argv %j", ({ argv }) => {
64+expect(shouldSkipStartupEnvironmentRespawnForArgv([...argv]), argv.join(" ")).toBe(false);
65+});
66+});
67+4368describe("nodes canvas helpers", () => {
4469it("parses canvas.snapshot payload", () => {
4570expect(parseCanvasSnapshotPayload({ format: "png", base64: "aGk=" })).toEqual({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。