Skip to main content

orvanta_api/models/
copilot_conversation_message.rs

1/*
2 * Orvanta API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 4.1.0
7 * Contact: contact@orvanta.cloud
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 CopilotConversationMessage {
16    #[serde(rename = "id")]
17    pub id: uuid::Uuid,
18    #[serde(rename = "conversation_id")]
19    pub conversation_id: uuid::Uuid,
20    /// Monotonic cursor assigned at insert; the replay order.
21    #[serde(rename = "created_seq")]
22    pub created_seq: i64,
23    /// `actual` is the provider-shaped message replayed to the model on resume; `display` is the rendered transcript entry. The two streams are not 1:1 and are ordered independently.
24    #[serde(rename = "channel")]
25    pub channel: Channel,
26    #[serde(rename = "role")]
27    pub role: Role,
28    /// The message verbatim, so a conversation round-trips exactly.
29    #[serde(rename = "payload", deserialize_with = "Option::deserialize")]
30    pub payload: Option<serde_json::Value>,
31    #[serde(rename = "size_bytes")]
32    pub size_bytes: i32,
33    #[serde(rename = "created_at")]
34    pub created_at: String,
35}
36
37impl CopilotConversationMessage {
38    pub fn new(id: uuid::Uuid, conversation_id: uuid::Uuid, created_seq: i64, channel: Channel, role: Role, payload: Option<serde_json::Value>, size_bytes: i32, created_at: String) -> CopilotConversationMessage {
39        CopilotConversationMessage {
40            id,
41            conversation_id,
42            created_seq,
43            channel,
44            role,
45            payload,
46            size_bytes,
47            created_at,
48        }
49    }
50}
51/// `actual` is the provider-shaped message replayed to the model on resume; `display` is the rendered transcript entry. The two streams are not 1:1 and are ordered independently.
52#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
53pub enum Channel {
54    #[serde(rename = "actual")]
55    Actual,
56    #[serde(rename = "display")]
57    Display,
58}
59
60impl Default for Channel {
61    fn default() -> Channel {
62        Self::Actual
63    }
64}
65/// 
66#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
67pub enum Role {
68    #[serde(rename = "user")]
69    User,
70    #[serde(rename = "assistant")]
71    Assistant,
72    #[serde(rename = "system")]
73    System,
74    #[serde(rename = "tool")]
75    Tool,
76    #[serde(rename = "developer")]
77    Developer,
78    #[serde(rename = "function")]
79    Function,
80}
81
82impl Default for Role {
83    fn default() -> Role {
84        Self::User
85    }
86}
87