pub struct ChatMessage {
pub id: ChatItemId,
pub role: ChatRole,
pub kind: ChatMessageKind,
pub text: String,
pub request_id: Option<ChatRequestId>,
pub status: ChatMessageStatus,
}Expand description
One provider-neutral item in a chat’s stable display order.
Fields are public to support serialization and snapshot construction. The type does not enforce combinations of role, kind, request, and status.
§Examples
use ailloli_ui_core::{
ChatItemId, ChatMessage, ChatMessageStatus, ChatRequestId,
};
let message = ChatMessage::assistant(ChatItemId::from_index(1), "Hello")
.request_id(ChatRequestId::from_index(4))
.status(ChatMessageStatus::Streaming);
assert_eq!(message.text, "Hello");Fields§
§id: ChatItemIdStable identity used to replace streamed updates in place.
role: ChatRoleSemantic author of the item.
kind: ChatMessageKindPresentation category of the item.
text: StringCurrent UTF-8 content; an empty string is valid for a newly started stream.
request_id: Option<ChatRequestId>Correlated request, or None for uncorrelated history/status entries.
status: ChatMessageStatusCurrent delivery lifecycle; constructors default to ChatMessageStatus::Complete.
Implementations§
Source§impl ChatMessage
impl ChatMessage
Sourcepub fn new(
id: ChatItemId,
role: ChatRole,
kind: ChatMessageKind,
text: impl Into<String>,
) -> Self
pub fn new( id: ChatItemId, role: ChatRole, kind: ChatMessageKind, text: impl Into<String>, ) -> Self
Creates a complete, uncorrelated chat item.
Use Self::request_id and Self::status to override those defaults.
§Examples
use ailloli_ui_core::{ChatItemId, ChatMessage, ChatMessageKind, ChatMessageStatus, ChatRole};
let message = ChatMessage::new(ChatItemId::new("1"), ChatRole::System, ChatMessageKind::Status, "Ready");
assert_eq!(message.status, ChatMessageStatus::Complete);Sourcepub fn user(id: ChatItemId, text: impl Into<String>) -> Self
pub fn user(id: ChatItemId, text: impl Into<String>) -> Self
Creates a complete text item with ChatRole::User.
§Examples
use ailloli_ui_core::{ChatItemId, ChatMessage, ChatRole};
assert_eq!(ChatMessage::user(ChatItemId::new("1"), "Hello").role, ChatRole::User);Sourcepub fn assistant(id: ChatItemId, text: impl Into<String>) -> Self
pub fn assistant(id: ChatItemId, text: impl Into<String>) -> Self
Creates a complete text item with ChatRole::Assistant.
§Examples
use ailloli_ui_core::{ChatItemId, ChatMessage, ChatRole};
assert_eq!(ChatMessage::assistant(ChatItemId::new("1"), "Hello").role, ChatRole::Assistant);Sourcepub fn request_id(self, request_id: ChatRequestId) -> Self
pub fn request_id(self, request_id: ChatRequestId) -> Self
Associates this message with request_id, replacing any previous ID.
§Examples
use ailloli_ui_core::{ChatItemId, ChatMessage, ChatRequestId};
let request = ChatRequestId::new("request-1");
let message = ChatMessage::user(ChatItemId::new("1"), "Hello").request_id(request.clone());
assert_eq!(message.request_id, Some(request));Sourcepub fn status(self, status: ChatMessageStatus) -> Self
pub fn status(self, status: ChatMessageStatus) -> Self
Sets the delivery status, replacing the constructor default.
§Examples
use ailloli_ui_core::{ChatItemId, ChatMessage, ChatMessageStatus};
let message = ChatMessage::assistant(ChatItemId::new("1"), "").status(ChatMessageStatus::Streaming);
assert_eq!(message.status, ChatMessageStatus::Streaming);Trait Implementations§
Source§impl Clone for ChatMessage
impl Clone for ChatMessage
Source§fn clone(&self) -> ChatMessage
fn clone(&self) -> ChatMessage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more