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