UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

68 lines (67 loc) 2.77 kB
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 };