Event
Domain event exchanged between agents through an AsyncDispatcher.
Events carry a source type hint (the agent class that emitted them) and a correlationId linking events that belong to the same logical conversation. The dispatcher assigns a fresh correlationId when one is not supplied, so application code rarely needs to populate it directly.
Event itself is open — subclass it with a data class (or plain class) to carry domain-specific payloads.