systemprompt_models/artifacts/
types.rs1use 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}