fix: handle daemon install failure in wizard
This commit is contained in:
@@ -163,46 +163,62 @@ export async function finalizeOnboardingWizard(options: FinalizeOnboardingOption
|
|||||||
if (!loaded || (loaded && (await service.isLoaded({ env: process.env })) === false)) {
|
if (!loaded || (loaded && (await service.isLoaded({ env: process.env })) === false)) {
|
||||||
const devMode =
|
const devMode =
|
||||||
process.argv[1]?.includes(`${path.sep}src${path.sep}`) && process.argv[1]?.endsWith(".ts");
|
process.argv[1]?.includes(`${path.sep}src${path.sep}`) && process.argv[1]?.endsWith(".ts");
|
||||||
await withWizardProgress(
|
const progress = prompter.progress("Gateway daemon");
|
||||||
"Gateway daemon",
|
let installError: string | null = null;
|
||||||
{ doneMessage: "Gateway daemon installed." },
|
try {
|
||||||
async (progress) => {
|
progress.update("Preparing Gateway daemon…");
|
||||||
progress.update("Preparing Gateway daemon…");
|
const nodePath = await resolvePreferredNodePath({
|
||||||
const nodePath = await resolvePreferredNodePath({
|
env: process.env,
|
||||||
env: process.env,
|
runtime: daemonRuntime,
|
||||||
runtime: daemonRuntime,
|
});
|
||||||
});
|
const { programArguments, workingDirectory } = await resolveGatewayProgramArguments({
|
||||||
const { programArguments, workingDirectory } = await resolveGatewayProgramArguments({
|
port: settings.port,
|
||||||
port: settings.port,
|
dev: devMode,
|
||||||
dev: devMode,
|
runtime: daemonRuntime,
|
||||||
runtime: daemonRuntime,
|
nodePath,
|
||||||
nodePath,
|
});
|
||||||
});
|
if (daemonRuntime === "node") {
|
||||||
if (daemonRuntime === "node") {
|
const systemNode = await resolveSystemNodeInfo({ env: process.env });
|
||||||
const systemNode = await resolveSystemNodeInfo({ env: process.env });
|
const warning = renderSystemNodeWarning(systemNode, programArguments[0]);
|
||||||
const warning = renderSystemNodeWarning(systemNode, programArguments[0]);
|
if (warning) await prompter.note(warning, "Gateway runtime");
|
||||||
if (warning) await prompter.note(warning, "Gateway runtime");
|
}
|
||||||
}
|
const environment = buildServiceEnvironment({
|
||||||
const environment = buildServiceEnvironment({
|
env: process.env,
|
||||||
env: process.env,
|
port: settings.port,
|
||||||
port: settings.port,
|
token: settings.gatewayToken,
|
||||||
token: settings.gatewayToken,
|
launchdLabel:
|
||||||
launchdLabel:
|
process.platform === "darwin"
|
||||||
process.platform === "darwin"
|
? resolveGatewayLaunchAgentLabel(process.env.CLAWDBOT_PROFILE)
|
||||||
? resolveGatewayLaunchAgentLabel(process.env.CLAWDBOT_PROFILE)
|
: undefined,
|
||||||
: undefined,
|
});
|
||||||
});
|
|
||||||
|
|
||||||
progress.update("Installing Gateway daemon…");
|
progress.update("Installing Gateway daemon…");
|
||||||
await service.install({
|
await service.install({
|
||||||
env: process.env,
|
env: process.env,
|
||||||
stdout: process.stdout,
|
stdout: process.stdout,
|
||||||
programArguments,
|
programArguments,
|
||||||
workingDirectory,
|
workingDirectory,
|
||||||
environment,
|
environment,
|
||||||
});
|
});
|
||||||
},
|
} catch (err) {
|
||||||
);
|
installError = err instanceof Error ? err.message : String(err);
|
||||||
|
} finally {
|
||||||
|
progress.stop(installError ? "Gateway daemon install failed." : "Gateway daemon installed.");
|
||||||
|
}
|
||||||
|
if (installError) {
|
||||||
|
await prompter.note(`Gateway daemon install failed: ${installError}`, "Gateway");
|
||||||
|
if (process.platform === "win32") {
|
||||||
|
await prompter.note(
|
||||||
|
"Tip: rerun from an elevated PowerShell (Start → type PowerShell → right-click → Run as administrator) or skip daemon install.",
|
||||||
|
"Gateway",
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
await prompter.note(
|
||||||
|
"Tip: rerun `clawdbot daemon install` after fixing the error.",
|
||||||
|
"Gateway",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user