Skip to main content

objectiveai_sdk/agent/script/
output_message.rs

1//! The output vocabulary of a script agent's code.
2
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6/// One message in a script agent's OUTPUT — the conversation shape
7/// minus the `user` role, since a script speaks only as the assistant
8/// (or records tool results); it never puts words in the user's mouth.
9/// The script's output deserializes as an array of these.
10#[derive(
11    Debug,
12    Clone,
13    PartialEq,
14    Serialize,
15    Deserialize,
16    JsonSchema,
17    arbitrary::Arbitrary,
18)]
19#[serde(tag = "role")]
20#[schemars(rename = "agent.script.OutputMessage")]
21pub enum OutputMessage {
22    /// An assistant message.
23    #[schemars(title = "Assistant")]
24    #[serde(rename = "assistant")]
25    Assistant(super::super::completions::message::AssistantMessage),
26    /// A tool message containing the result of a tool call.
27    #[schemars(title = "Tool")]
28    #[serde(rename = "tool")]
29    Tool(super::super::completions::message::ToolMessage),
30}
31
32impl From<OutputMessage> for super::super::completions::message::Message {
33    fn from(message: OutputMessage) -> Self {
34        match message {
35            OutputMessage::Assistant(message) => {
36                super::super::completions::message::Message::Assistant(message)
37            }
38            OutputMessage::Tool(message) => {
39                super::super::completions::message::Message::Tool(message)
40            }
41        }
42    }
43}