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}