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::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}