namespace AcDream.UI.Abstractions; /// /// Publishes user-intent commands from panels to the systems that handle /// them (WorldSession, ChatService, Inventory, ...). Panels never touch /// those systems directly — they a record /// and the bus dispatches. /// /// /// D.2a scaffolding: is the default wire-up /// — commands are accepted but dropped. Real routing lands alongside /// chat and inventory (Sprint 2 of the UI plan) when we actually need /// commands flowing server-ward. /// /// public interface ICommandBus { /// /// Publish a command record. The bus routes by runtime type via /// registered handlers. Never blocks; handlers run on the publish /// thread today (render thread for panel-triggered commands). /// void Publish(T command) where T : notnull; }