import { parseSetUnsetCommand } from "./commands-setunset.js"; import { parseSlashCommandOrNull } from "./commands-slash-parse.js"; export type DebugCommand = | { action: "show" } | { action: "reset" } | { action: "set"; path: string; value: unknown } | { action: "unset"; path: string } | { action: "error"; message: string }; export function parseDebugCommand(raw: string): DebugCommand | null { const parsed = parseSlashCommandOrNull(raw, "/debug", { invalidMessage: "Invalid /debug syntax.", }); if (!parsed) { return null; } if (!parsed.ok) { return { action: "error", message: parsed.message }; } const { action, args } = parsed; switch (action) { case "show": return { action: "show" }; case "reset": return { action: "reset" }; case "unset": case "set": { const parsed = parseSetUnsetCommand({ slash: "/debug", action, args }); if (parsed.kind === "error") { return { action: "error", message: parsed.message }; } return parsed.kind === "set" ? { action: "set", path: parsed.path, value: parsed.value } : { action: "unset", path: parsed.path }; } default: return { action: "error", message: "Usage: /debug show|set|unset|reset", }; } }