/** * lib/commands/designs.ts * * Handlers for design-related sub-commands: * /revela design — list installed designs * /revela design --use — activate a design * /revela design --add — install a design from URL / github:user/repo / local path * /revela design --rm — remove an installed design */ import { listDesigns, activeDesign, activateDesign, installDesign, removeDesign } from "../design/designs" import { buildPrompt } from "../prompt-builder" export async function handleDesignsList( send: (text: string) => Promise, ): Promise { const designs = listDesigns() const current = activeDesign() if (!designs.length) { await send(`No designs installed. Use \`/revela design --add \` to install one.`) return } const lines = designs.map((d) => { if (d.name === current) { return `🟠 **${d.name}** — ${d.description || "(no description)"}` } return `  ${d.name} — ${d.description || "(no description)"}` }) await send(`**Installed designs:**\n\n${lines.join("\n")}`) } export async function handleDesignsActivate( name: string, send: (text: string) => Promise, ): Promise { try { activateDesign(name) buildPrompt({ mode: "narrative" }) await send(`**Design activated:** \`${name}\`\nNarrative prompt rebuilt. The design will apply when \`/revela make --deck\` enters deck-render mode.`) } catch (e: any) { await send(`**Error:** ${e.message}`) } } export async function handleDesignsAdd( source: string, send: (text: string) => Promise, ): Promise { if (!source) { await send(`**Usage:** \`/revela design --add \``) return } try { await send(`Installing design from \`${source}\`…`) const name = await installDesign(source) await send(`**Design installed:** \`${name}\`\nUse \`/revela design --use ${name}\` to activate it.`) } catch (e: any) { await send(`**Install failed:** ${e.message}`) } } export async function handleDesignsRemove( name: string, send: (text: string) => Promise, ): Promise { if (!name) { await send(`**Usage:** \`/revela design --rm \``) return } try { removeDesign(name) await send(`**Design removed:** \`${name}\``) } catch (e: any) { await send(`**Error:** ${e.message}`) } }