Represents normalized user input.
@type t() :: %CliSubprocessCore.Payload.UserMessage{ content: [term()], extra: map(), metadata: map(), role: :user }
@spec new(keyword() | map() | struct()) :: struct()
@spec parse(keyword() | map() | struct()) :: {:ok, struct()} | {:error, {:invalid_payload, module(), CliSubprocessCore.Schema.error_detail()}}
@spec parse!(keyword() | map() | struct()) :: struct()
@spec schema() :: Zoi.schema()
@spec to_map(struct()) :: map()