1use schemars::JsonSchema;
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Default)]
10#[serde(rename_all = "camelCase")]
11pub struct Config {
12 #[serde(skip_serializing_if = "Option::is_none")]
14 pub output_format: Option<OutputFormat>,
15
16 #[serde(skip_serializing_if = "Option::is_none")]
18 pub cache_mode: Option<CacheMode>,
19
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub cache_enabled: Option<bool>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub audit_mode: Option<bool>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub trace_output: Option<bool>,
30
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub default_environment: Option<String>,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub default_capabilities: Option<Vec<String>>,
37}
38
39#[derive(Debug, Clone, Copy, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
41#[serde(rename_all = "lowercase")]
42pub enum OutputFormat {
43 Tui,
44 Spinner,
45 Simple,
46 Tree,
47 Json,
48}
49
50#[derive(Debug, Clone, Copy, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
52#[serde(rename_all = "kebab-case")]
53pub enum CacheMode {
54 Off,
55 Read,
56 ReadWrite,
57 Write,
58}