export type CommandHandler = (args?: Record) => void | Promise const handlers = new Map() export const registerCommand = (name: string, handler: CommandHandler) => { handlers.set(name, handler) } export const unregisterCommand = (name: string) => { handlers.delete(name) } export const executeCommand = async (name: string, args?: Record) => { const handler = handlers.get(name) if (!handler) return await handler(args) } export const registerCommands = (map: Record) => { Object.entries(map).forEach(([name, handler]) => registerCommand(name, handler)) } export const unregisterCommands = (names: string[]) => { names.forEach(unregisterCommand) }