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