openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
56 lines (55 loc) • 2.95 kB
JavaScript
import { s as readConfigFileSnapshot } from "./io.runtime-B9iJRs3w.js";
import { _ as resolveGatewayPort } from "./paths-D2sRr1a_.js";
import "./config-Cs0XXL3x.js";
import { n as resolveGatewayCredentialsWithSecretInputs } from "./credentials-secret-inputs-BlthacCl.js";
import { t as resolveGatewayStartupTiming } from "./gateway-startup-timing-D9NqKiRl.js";
import { r as resolveLocalControlUiProbeLinks } from "./control-ui-links-BY4F5DYV.js";
import { n as t } from "./i18n-hynzGFbD.js";
import { p as waitForGatewayReachable } from "./onboard-helpers-BDY-6Z-t.js";
import { n as createQuickstartNotePrompter } from "./setup-apply-BVRZv42c.js";
import { t as resolveGatewayRunOptions } from "./run-options-C9-aEnpP.js";
import { t as getGatewayRunRuntimeHooks } from "./runtime-hooks-Dp2OHV46.js";
import { n as runBrowserHatchHandoff } from "./onboard-browser-handoff-DgncNNl_.js";
//#region src/commands/onboard-quickstart-host.ts
/** Own the foreground Gateway after the wizard has restored terminal input. */
async function runQuickstartForegroundGateway(params, deps = {}) {
const { runtime } = params;
const { config } = await (deps.readConfigSnapshot ?? readConfigFileSnapshot)();
const links = resolveLocalControlUiProbeLinks({
bind: config.gateway?.bind,
port: resolveGatewayPort(config),
customBindHost: config.gateway?.customBindHost,
basePath: config.gateway?.controlUi?.basePath,
tlsEnabled: config.gateway?.tls?.enabled === true
});
const credentials = await resolveGatewayCredentialsWithSecretInputs({
config,
modeOverride: "local"
});
const authMode = config.gateway?.auth?.mode ?? (credentials.password ? "password" : "token");
const gateway = (deps.runGateway ?? (await import("./run-Bv5QIhyZ.js")).runGatewayCommand)(resolveGatewayRunOptions({}), getGatewayRunRuntimeHooks());
const stopped = gateway.then(() => null);
const reachable = await Promise.race([stopped, (deps.waitForGateway ?? waitForGatewayReachable)({
url: links.wsUrl,
token: authMode === "token" ? credentials.token : void 0,
password: authMode === "password" ? credentials.password : void 0,
...resolveGatewayStartupTiming()
})]);
if (!reachable) return;
if (reachable.ok) {
const handoff = await Promise.race([stopped, (deps.runBrowserHandoff ?? runBrowserHatchHandoff)({
config,
prompter: createQuickstartNotePrompter(runtime),
suppressTokenOutput: params.suppressTokenOutput
}).catch(() => ({ handedOff: false }))]);
if (!handoff) return;
if (!handoff.handedOff) runtime.log(t("wizard.guided.quickstartBrowserUnavailable"));
} else runtime.log(t("wizard.guided.quickstartGatewayPending"));
runtime.log(t("wizard.guided.quickstartDashboard", { url: links.httpUrl }));
runtime.log(t("wizard.guided.quickstartForeground"));
runtime.log(t("wizard.guided.quickstartBackground"));
runtime.log(t("wizard.guided.quickstartReopen"));
await gateway;
}
//#endregion
export { runQuickstartForegroundGateway };