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