Skip to main content

platonic_core/
message.rs

1//! Model-facing message primitives.
2
3use serde::{Deserialize, Serialize};
4
5/// Role for a message visible to a model adapter.
6#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
7#[serde(rename_all = "snake_case")]
8pub enum MessageRole {
9    /// Stable operating contract and runtime rules.
10    System,
11    /// Human or upstream caller input.
12    User,
13    /// Model-authored message.
14    Assistant,
15    /// Tool result observation.
16    Tool,
17}
18
19/// Message passed through the model boundary.
20#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
21#[serde(deny_unknown_fields)]
22pub struct Message {
23    /// Message role.
24    pub role: MessageRole,
25    /// Plain text content. Richer content blocks belong above this core layer.
26    pub content: String,
27}