import type { Command } from "commander"; import type { CommandModule, RuntimeServices } from "../../runtime/types.js"; import { presentDemoIntro, presentDemoSelection } from "./presenter.js"; import { createDemoViewModel, selectDemoProfile } from "./use-case.js"; export function createDemoModule(): CommandModule { return { register(program: Command, services: RuntimeServices) { program .command("demo") .description("Preview the reusable terminal UI patterns in this template.") .action(async () => { const viewModel = createDemoViewModel(services); presentDemoIntro(services, viewModel); const profile = await services.ui.promptSelect("What kind of CLI do you want to extend this into?", [ { value: "desktop", label: "Desktop software control" }, { value: "config", label: "Configuration workflow" }, { value: "assistant", label: "AI or workflow assistant" } ]); const verbose = await services.ui.promptConfirm("Enable verbose logging in the starter config?", true); presentDemoSelection(services, selectDemoProfile(profile, verbose)); }); } }; }