windmill_api/models/
flow_conversation_message.rs

1/*
2 * Windmill API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 1.558.0
7 * Contact: contact@windmill.dev
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlowConversationMessage {
16    /// Unique identifier for the message
17    #[serde(rename = "id")]
18    pub id: uuid::Uuid,
19    /// The conversation this message belongs to
20    #[serde(rename = "conversation_id")]
21    pub conversation_id: uuid::Uuid,
22    /// Type of the message
23    #[serde(rename = "message_type")]
24    pub message_type: MessageType,
25    /// The message content
26    #[serde(rename = "content")]
27    pub content: String,
28    /// Associated job ID if this message came from a flow run
29    #[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    /// When the message was created
32    #[serde(rename = "created_at")]
33    pub created_at: String,
34    /// The step name that produced that message
35    #[serde(rename = "step_name", skip_serializing_if = "Option::is_none")]
36    pub step_name: Option<String>,
37    /// Whether the message is a success
38    #[serde(rename = "success", skip_serializing_if = "Option::is_none")]
39    pub success: Option<bool>,
40}
41
42impl FlowConversationMessage {
43    pub fn new(id: uuid::Uuid, conversation_id: uuid::Uuid, message_type: MessageType, content: String, created_at: String) -> FlowConversationMessage {
44        FlowConversationMessage {
45            id,
46            conversation_id,
47            message_type,
48            content,
49            job_id: None,
50            created_at,
51            step_name: None,
52            success: None,
53        }
54    }
55}
56/// Type of the message
57#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
58pub enum MessageType {
59    #[serde(rename = "user")]
60    User,
61    #[serde(rename = "assistant")]
62    Assistant,
63    #[serde(rename = "system")]
64    System,
65    #[serde(rename = "tool")]
66    Tool,
67}
68
69impl Default for MessageType {
70    fn default() -> MessageType {
71        Self::User
72    }
73}
74