Skip to main content

systemprompt_models/artifacts/
types.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use super::audio::AudioArtifact;
5use super::card::PresentationCardArtifact;
6use super::chart::ChartArtifact;
7use super::copy_paste_text::CopyPasteTextArtifact;
8use super::dashboard::DashboardArtifact;
9use super::image::ImageArtifact;
10use super::list::ListArtifact;
11use super::message::MessageArtifact;
12use super::table::TableArtifact;
13use super::text::TextArtifact;
14use super::video::VideoArtifact;
15
16#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
17#[serde(rename_all = "lowercase")]
18pub enum ArtifactType {
19    Text,
20    Table,
21    Chart,
22    Form,
23    Dashboard,
24    #[serde(rename = "presentation_card")]
25    PresentationCard,
26    List,
27    #[serde(rename = "copy_paste_text")]
28    CopyPasteText,
29    Image,
30    Video,
31    Audio,
32    Message,
33    #[serde(untagged)]
34    Custom(String),
35}
36
37impl std::fmt::Display for ArtifactType {
38    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
39        match self {
40            Self::Text => write!(f, "{}", TextArtifact::ARTIFACT_TYPE_STR),
41            Self::Table => write!(f, "{}", TableArtifact::ARTIFACT_TYPE_STR),
42            Self::Chart => write!(f, "{}", ChartArtifact::ARTIFACT_TYPE_STR),
43            Self::Form => write!(f, "form"),
44            Self::Dashboard => write!(f, "{}", DashboardArtifact::ARTIFACT_TYPE_STR),
45            Self::PresentationCard => write!(f, "{}", PresentationCardArtifact::ARTIFACT_TYPE_STR),
46            Self::List => write!(f, "{}", ListArtifact::ARTIFACT_TYPE_STR),
47            Self::CopyPasteText => write!(f, "{}", CopyPasteTextArtifact::ARTIFACT_TYPE_STR),
48            Self::Image => write!(f, "{}", ImageArtifact::ARTIFACT_TYPE_STR),
49            Self::Video => write!(f, "{}", VideoArtifact::ARTIFACT_TYPE_STR),
50            Self::Audio => write!(f, "{}", AudioArtifact::ARTIFACT_TYPE_STR),
51            Self::Message => write!(f, "{}", MessageArtifact::ARTIFACT_TYPE_STR),
52            Self::Custom(s) => write!(f, "{}", s),
53        }
54    }
55}
56
57#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
58#[serde(rename_all = "lowercase")]
59pub enum ColumnType {
60    String,
61    Integer,
62    Number,
63    Currency,
64    Percentage,
65    Date,
66    Boolean,
67    Link,
68}
69
70#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
71#[serde(rename_all = "lowercase")]
72pub enum ChartType {
73    #[default]
74    Line,
75    Bar,
76    Pie,
77    Doughnut,
78    Area,
79}
80
81#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
82#[serde(rename_all = "lowercase")]
83pub enum AxisType {
84    Category,
85    #[default]
86    Linear,
87    Logarithmic,
88    Time,
89}
90
91#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
92#[serde(rename_all = "lowercase")]
93pub enum SortOrder {
94    Asc,
95    Desc,
96}
97
98#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
99#[serde(rename_all = "lowercase")]
100pub enum Alignment {
101    Left,
102    Center,
103    Right,
104}