openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
68 lines (67 loc) • 2.77 kB
JavaScript
import { i as formatErrorMessage } from "./errors-BXgSefBE.js";
import { n as buildGatewayInstallPlan, r as gatewayInstallErrorHint } from "./auth-install-policy-O7nc7i9I.js";
import { o as isSystemdUserServiceAvailable } from "./systemd-BXTM6gEb.js";
import { r as isGatewayDaemonRuntime } from "./daemon-runtime-C76za6vm.js";
import { t as resolveGatewayInstallToken } from "./gateway-install-token-jVqLCOms.js";
import { i as resolveGatewayService } from "./service-MPqQWJ3s.js";
import { n as ensureSystemdUserLingerNonInteractive } from "./systemd-linger-BYD8LXaq.js";
//#region src/commands/onboard-non-interactive/local/daemon-install.ts
/** Installs the managed gateway daemon when non-interactive setup requested it. */
async function installGatewayDaemonNonInteractive(params) {
const { opts, runtime, port } = params;
if (!opts.installDaemon) return { installed: false };
const daemonRuntimeRaw = opts.daemonRuntime ?? "node";
const systemdAvailable = process.platform === "linux" ? await isSystemdUserServiceAvailable() : true;
if (process.platform === "linux" && !systemdAvailable) {
runtime.log("Systemd user services are unavailable; skipping service install. Use a direct shell run (`openclaw gateway run`) or rerun without --install-daemon on this session.");
return {
installed: false,
skippedReason: "systemd-user-unavailable"
};
}
if (!isGatewayDaemonRuntime(daemonRuntimeRaw)) {
runtime.error("Invalid --daemon-runtime. Use \"node\" or \"bun\".");
runtime.exit(1);
return { installed: false };
}
const service = resolveGatewayService();
const tokenResolution = await resolveGatewayInstallToken({
config: params.nextConfig,
env: process.env
});
for (const warning of tokenResolution.warnings) runtime.log(warning);
if (tokenResolution.unavailableReason) {
runtime.error([
"Gateway install blocked:",
tokenResolution.unavailableReason,
"Fix gateway auth config/token input and rerun setup."
].join(" "));
runtime.exit(1);
return { installed: false };
}
const { programArguments, workingDirectory, environment, environmentValueSources } = await buildGatewayInstallPlan({
env: process.env,
port,
runtime: daemonRuntimeRaw,
warn: (message) => runtime.log(message),
config: params.nextConfig
});
try {
await service.install({
env: process.env,
stdout: process.stdout,
programArguments,
workingDirectory,
environment,
environmentValueSources
});
} catch (err) {
runtime.error(`Gateway service install failed: ${formatErrorMessage(err)}`);
runtime.log(gatewayInstallErrorHint());
return { installed: false };
}
await ensureSystemdUserLingerNonInteractive({ runtime });
return { installed: true };
}
//#endregion
export { installGatewayDaemonNonInteractive };