pub struct Message {
pub id: String,
pub version: u8,
pub from: String,
pub to: MessageTarget,
pub content: MessageContent,
pub correlation_id: Option<String>,
pub topic: Option<String>,
pub metadata: HashMap<String, String>,
pub created_at: i64,
}Expand description
A message for inter-agent communication (v1).
The new message format with typed content, flexible routing, and metadata.
§Example
use enki_core::{Message, MessageContent, MessageTarget};
// Create a text message
let msg = Message::text("my-agent", "Hello, world!")
.to(MessageTarget::agent("other-agent"));
// Create a tool call
let tool_msg = Message::builder("my-agent")
.content(MessageContent::ToolCall {
name: "search".to_string(),
arguments: serde_json::json!({"query": "rust"}),
})
.to(MessageTarget::agent("tool-handler"))
.build();Fields§
§id: StringUnique message identifier (auto-generated UUID).
version: u8Protocol version (currently 1).
from: StringSender agent name.
to: MessageTargetIntended recipient(s).
content: MessageContentMessage content type and payload.
correlation_id: Option<String>Optional correlation ID for request/response tracking.
topic: Option<String>Optional topic for pub/sub routing.
metadata: HashMap<String, String>Arbitrary metadata key-value pairs.
created_at: i64Creation timestamp in microseconds since epoch.
Implementations§
Source§impl Message
impl Message
Sourcepub fn builder(from: impl Into<String>) -> MessageBuilder
pub fn builder(from: impl Into<String>) -> MessageBuilder
Create a message builder.
§Example
use enki_core::{Message, MessageContent, MessageTarget};
let msg = Message::builder("agent1")
.content(MessageContent::Text("Hello".to_string()))
.to(MessageTarget::agent("agent2"))
.build();Sourcepub fn text(
from: impl Into<String>,
content: impl Into<String>,
) -> MessageBuilder
pub fn text( from: impl Into<String>, content: impl Into<String>, ) -> MessageBuilder
Create a text message.
Sourcepub fn binary(from: impl Into<String>, data: Vec<u8>) -> MessageBuilder
pub fn binary(from: impl Into<String>, data: Vec<u8>) -> MessageBuilder
Create a binary message.
Sourcepub fn tool_call(
from: impl Into<String>,
name: impl Into<String>,
arguments: Value,
) -> MessageBuilder
pub fn tool_call( from: impl Into<String>, name: impl Into<String>, arguments: Value, ) -> MessageBuilder
Create a tool call message.
Sourcepub fn tool_result(
from: impl Into<String>,
output: impl Into<String>,
error: Option<String>,
) -> MessageBuilder
pub fn tool_result( from: impl Into<String>, output: impl Into<String>, error: Option<String>, ) -> MessageBuilder
Create a tool result message.
Sourcepub fn agent_request(
from: impl Into<String>,
method: impl Into<String>,
params: Value,
) -> MessageBuilder
pub fn agent_request( from: impl Into<String>, method: impl Into<String>, params: Value, ) -> MessageBuilder
Create an agent request message.
Sourcepub fn agent_response(from: impl Into<String>, result: Value) -> MessageBuilder
pub fn agent_response(from: impl Into<String>, result: Value) -> MessageBuilder
Create an agent response message.
Sourcepub fn empty(from: impl Into<String>) -> MessageBuilder
pub fn empty(from: impl Into<String>) -> MessageBuilder
Create an empty message (heartbeat/ack).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Message
impl<'de> Deserialize<'de> for Message
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<LegacyMessage> for Message
impl From<LegacyMessage> for Message
Source§fn from(legacy: LegacyMessage) -> Self
fn from(legacy: LegacyMessage) -> Self
Convert from legacy message format.
Auto Trait Implementations§
impl Freeze for Message
impl RefUnwindSafe for Message
impl Send for Message
impl Sync for Message
impl Unpin for Message
impl UnwindSafe for Message
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more