windmill_api/models/
flow_conversation_message.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlowConversationMessage {
16 #[serde(rename = "id")]
18 pub id: uuid::Uuid,
19 #[serde(rename = "conversation_id")]
21 pub conversation_id: uuid::Uuid,
22 #[serde(rename = "message_type")]
24 pub message_type: MessageType,
25 #[serde(rename = "content")]
27 pub content: String,
28 #[serde(rename = "job_id", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
30 pub job_id: Option<Option<uuid::Uuid>>,
31 #[serde(rename = "created_at")]
33 pub created_at: String,
34 #[serde(rename = "created_seq")]
36 pub created_seq: i64,
37 #[serde(rename = "step_name", skip_serializing_if = "Option::is_none")]
39 pub step_name: Option<String>,
40 #[serde(rename = "success", skip_serializing_if = "Option::is_none")]
42 pub success: Option<bool>,
43 #[serde(rename = "tool_arguments", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
45 pub tool_arguments: Option<Option<String>>,
46 #[serde(rename = "tool_result", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
48 pub tool_result: Option<Option<String>>,
49 #[serde(rename = "reasoning", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
51 pub reasoning: Option<Option<String>>,
52 #[serde(rename = "attachments", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
54 pub attachments: Option<Option<Vec<models::FlowConversationMessageAttachmentsInner>>>,
55}
56
57impl FlowConversationMessage {
58 pub fn new(id: uuid::Uuid, conversation_id: uuid::Uuid, message_type: MessageType, content: String, created_at: String, created_seq: i64) -> FlowConversationMessage {
59 FlowConversationMessage {
60 id,
61 conversation_id,
62 message_type,
63 content,
64 job_id: None,
65 created_at,
66 created_seq,
67 step_name: None,
68 success: None,
69 tool_arguments: None,
70 tool_result: None,
71 reasoning: None,
72 attachments: None,
73 }
74 }
75}
76#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
78pub enum MessageType {
79 #[serde(rename = "user")]
80 User,
81 #[serde(rename = "assistant")]
82 Assistant,
83 #[serde(rename = "system")]
84 System,
85 #[serde(rename = "tool")]
86 Tool,
87}
88
89impl Default for MessageType {
90 fn default() -> MessageType {
91 Self::User
92 }
93}
94