mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-03 01:29:56 +00:00
* fix(gateway): preserve work during recovered Node restarts Let Unix Node recovery wrappers respect the existing Gateway stop budget. Share startup-safe command classification and deadline facts, and resolve managed restart intent against the live serving owner in its write transaction with current update authority. Preserve the existing public PID intent API, record format, and Windows behavior. Keep cold lifecycle test preparation outside timed hooks. Inspired by @ly85206559's wrapper-grace approach in #147054; this repair is independently authored from main. Related: #146956. Windows cooperative shutdown remains a follow-up. * refactor(gateway): stabilize restart callback and test setup Declare receiver-independent restart intent callbacks as arrows and retain typed signal spy handles for lint-safe assertions. Move cold lifecycle imports into test collection so worker preparation cannot consume timed setup hooks.
46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
// Startup-safe Gateway command-role parsing, shared with the CLI.
|
|
import { getCommandPositionalsWithRootOptions } from "./cli-root-options.mjs";
|
|
|
|
export const GATEWAY_RUN_VALUE_FLAGS = new Set([
|
|
"--port",
|
|
"--bind",
|
|
"--token",
|
|
"--token-file",
|
|
"--auth",
|
|
"--password",
|
|
"--password-file",
|
|
"--tailscale",
|
|
"--ws-log",
|
|
"--raw-stream-path",
|
|
]);
|
|
|
|
export const GATEWAY_RUN_BOOLEAN_FLAGS = new Set([
|
|
"--tailscale-reset-on-exit",
|
|
"--allow-unconfigured",
|
|
"--dev",
|
|
"--ambient-channels",
|
|
"--dev-ambient-channels",
|
|
"--reset",
|
|
"--update-canary",
|
|
"--force",
|
|
"--verbose",
|
|
"--cli-backend-logs",
|
|
"--claude-cli-logs",
|
|
"--compact",
|
|
"--raw-stream",
|
|
]);
|
|
|
|
export function isForegroundGatewayRunArgv(argv) {
|
|
const positionals = getCommandPositionalsWithRootOptions(argv, {
|
|
commandPath: ["gateway"],
|
|
booleanFlags: [...GATEWAY_RUN_BOOLEAN_FLAGS],
|
|
valueFlags: [...GATEWAY_RUN_VALUE_FLAGS],
|
|
mode: "command-path",
|
|
});
|
|
if (!positionals) {
|
|
return false;
|
|
}
|
|
// Foreground gateway owns the terminal/process environment itself; respawning would
|
|
// add an extra parent process around the long-lived server.
|
|
return positionals.length === 0 || (positionals.length === 1 && positionals[0] === "run");
|
|
}
|