import { readConfigFileSnapshot } from "../config/config.js";
import { assertSupportedRuntime } from "../infra/runtime-guard.js";
import { defaultRuntime } from "../runtime.js";
import { resolveUserPath } from "../utils.js";
import { DEFAULT_WORKSPACE, handleReset } from "./onboard-helpers.js";
import { runInteractiveOnboarding } from "./onboard-interactive.js";
import { runNonInteractiveOnboarding } from "./onboard-non-interactive.js";
import { formatCliCommand } from "../cli/command-format.js";
export async function onboardCommand(opts, runtime = defaultRuntime) {
    assertSupportedRuntime(runtime);
    const authChoice = opts.authChoice === "oauth" ? "setup-token" : opts.authChoice;
    const flow = opts.flow === "manual" ? "advanced" : opts.flow;
    const normalizedOpts = authChoice === opts.authChoice && flow === opts.flow ? opts : { ...opts, authChoice, flow };
    if (normalizedOpts.nonInteractive && normalizedOpts.acceptRisk !== true) {
        runtime.error([
            "非交互式安装引导需要明确的风险确认。",
            "阅读：https://docs.clawd.bot/security",
            `使用以下命令重新运行：${formatCliCommand("openclaw-cn onboard --non-interactive --accept-risk ...")}`,
        ].join("\n"));
        runtime.exit(1);
        return;
    }
    if (normalizedOpts.reset) {
        const snapshot = await readConfigFileSnapshot();
        const baseConfig = snapshot.valid ? snapshot.config : {};
        const workspaceDefault = normalizedOpts.workspace ?? baseConfig.agents?.defaults?.workspace ?? DEFAULT_WORKSPACE;
        await handleReset("full", resolveUserPath(workspaceDefault), runtime);
    }
    if (process.platform === "win32") {
        runtime.log([
            "检测到 Windows 系统。",
            "强烈推荐使用 WSL2；原生 Windows 未经测试且问题较多。",
            "指南：https://docs.clawd.bot/windows",
        ].join("\n"));
    }
    if (normalizedOpts.nonInteractive) {
        await runNonInteractiveOnboarding(normalizedOpts, runtime);
        return;
    }
    await runInteractiveOnboarding(normalizedOpts, runtime);
}
