Replace the CommandHost with a handler registry keyed by message type. Message is a permissive base type the host extends; CommandResult is a discriminated union on the type suffix. Commands and orchestrators are the same async shape taking a RunContext with an AbortSignal; runCommand emits :done/:cancel/:error.