import { confirm as clackConfirm, intro as clackIntro, outro as clackOutro, select as clackSelect, text as clackText, } from "@clack/prompts"; import { stylePromptHint, stylePromptMessage, stylePromptTitle } from "../terminal/prompt-style.js"; export const CONFIGURE_WIZARD_SECTIONS = [ "workspace", "model", "web", "gateway", "daemon", "channels", "skills", "health", ] as const; export type WizardSection = (typeof CONFIGURE_WIZARD_SECTIONS)[number]; export type ChannelsWizardMode = "configure" | "remove"; export type ConfigureWizardParams = { command: "configure" | "update"; sections?: WizardSection[]; }; export const CONFIGURE_SECTION_OPTIONS: Array<{ value: WizardSection; label: string; hint: string; }> = [ { value: "workspace", label: "Workspace", hint: "Set workspace + sessions" }, { value: "model", label: "Model", hint: "Pick provider + credentials" }, { value: "web", label: "Web tools", hint: "Configure Brave search + fetch" }, { value: "gateway", label: "Gateway", hint: "Port, bind, auth, tailscale" }, { value: "daemon", label: "Daemon", hint: "Install/manage the background service", }, { value: "channels", label: "Channels", hint: "Link WhatsApp/Telegram/etc and defaults", }, { value: "skills", label: "Skills", hint: "Install/enable workspace skills" }, { value: "health", label: "Health check", hint: "Run gateway + channel checks", }, ]; export const intro = (message: string) => clackIntro(stylePromptTitle(message) ?? message); export const outro = (message: string) => clackOutro(stylePromptTitle(message) ?? message); export const text = (params: Parameters[0]) => clackText({ ...params, message: stylePromptMessage(params.message), }); export const confirm = (params: Parameters[0]) => clackConfirm({ ...params, message: stylePromptMessage(params.message), }); export const select = (params: Parameters>[0]) => clackSelect({ ...params, message: stylePromptMessage(params.message), options: params.options.map((opt) => opt.hint === undefined ? opt : { ...opt, hint: stylePromptHint(opt.hint) }, ), });