T
CommandTree
Commands keyed by name, at every level. TypeScript infers T per key by reversing this mapped type,
from options on a leaf and from subcommands on a group. A conditional type here breaks inference.
type CommandTree<T> = { [K in keyof T]: CommandNode<T[K]> }