Generic provider-neutral message with role, content, and metadata.
@type t() :: %Imp.Core.Message{ content: term(), metadata: map(), role: atom() | String.t() }