1use std::fmt;
4
5pub const DEFAULT_AUTO_APPROVE_ORCHESTRATION_RESEARCH: bool = true;
7pub const DEFAULT_ORCHESTRATION_PARALLELISM: u8 = 3;
9pub const MAX_ORCHESTRATION_PARALLELISM: u8 = 8;
11
12#[derive(Clone, Copy, Debug, Eq, PartialEq)]
14pub enum SettingName {
15 ActiveProjectId,
17 ActiveTab,
19 AutoApproveOrchestrationResearch,
21 DefaultFastAgent,
23 DefaultFastModel,
25 DefaultFastReasoningLevel,
27 DefaultReviewAgent,
29 DefaultReviewModel,
31 DefaultReviewReasoningLevel,
33 DefaultSmartAgent,
35 DefaultSmartModel,
37 DefaultSmartReasoningLevel,
39 IncludeCoauthoredByAgentty,
42 LaunchConfiguration,
44 LastUsedModelAsDefault,
46 OrchestrationParallelism,
48 Theme,
50}
51
52impl SettingName {
53 pub fn as_str(self) -> &'static str {
55 match self {
56 Self::ActiveProjectId => "ActiveProjectId",
57 Self::ActiveTab => "ActiveTab",
58 Self::AutoApproveOrchestrationResearch => "AutoApproveOrchestrationResearch",
59 Self::DefaultFastAgent => "DefaultFastAgent",
60 Self::DefaultFastModel => "DefaultFastModel",
61 Self::DefaultFastReasoningLevel => "DefaultFastReasoningLevel",
62 Self::DefaultReviewAgent => "DefaultReviewAgent",
63 Self::DefaultReviewModel => "DefaultReviewModel",
64 Self::DefaultReviewReasoningLevel => "DefaultReviewReasoningLevel",
65 Self::DefaultSmartAgent => "DefaultSmartAgent",
66 Self::DefaultSmartModel => "DefaultSmartModel",
67 Self::DefaultSmartReasoningLevel => "DefaultSmartReasoningLevel",
68 Self::IncludeCoauthoredByAgentty => "IncludeCoauthoredByAgentty",
69 Self::LaunchConfiguration => "LaunchConfiguration",
70 Self::LastUsedModelAsDefault => "LastUsedModelAsDefault",
71 Self::OrchestrationParallelism => "OrchestrationParallelism",
72 Self::Theme => "Theme",
73 }
74 }
75}
76
77impl fmt::Display for SettingName {
78 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
79 formatter.write_str(self.as_str())
80 }
81}
82
83#[cfg(test)]
84mod tests {
85 use super::*;
86
87 #[test]
89 fn test_as_str_returns_persisted_keys() {
90 let settings = [
92 (SettingName::ActiveProjectId, "ActiveProjectId"),
93 (SettingName::ActiveTab, "ActiveTab"),
94 (
95 SettingName::AutoApproveOrchestrationResearch,
96 "AutoApproveOrchestrationResearch",
97 ),
98 (SettingName::DefaultFastAgent, "DefaultFastAgent"),
99 (SettingName::DefaultFastModel, "DefaultFastModel"),
100 (
101 SettingName::DefaultFastReasoningLevel,
102 "DefaultFastReasoningLevel",
103 ),
104 (SettingName::DefaultReviewAgent, "DefaultReviewAgent"),
105 (SettingName::DefaultReviewModel, "DefaultReviewModel"),
106 (
107 SettingName::DefaultReviewReasoningLevel,
108 "DefaultReviewReasoningLevel",
109 ),
110 (SettingName::DefaultSmartAgent, "DefaultSmartAgent"),
111 (SettingName::DefaultSmartModel, "DefaultSmartModel"),
112 (
113 SettingName::DefaultSmartReasoningLevel,
114 "DefaultSmartReasoningLevel",
115 ),
116 (
117 SettingName::IncludeCoauthoredByAgentty,
118 "IncludeCoauthoredByAgentty",
119 ),
120 (SettingName::LaunchConfiguration, "LaunchConfiguration"),
121 (
122 SettingName::LastUsedModelAsDefault,
123 "LastUsedModelAsDefault",
124 ),
125 (
126 SettingName::OrchestrationParallelism,
127 "OrchestrationParallelism",
128 ),
129 (SettingName::Theme, "Theme"),
130 ];
131
132 for (setting_name, expected_key) in settings {
134 assert_eq!(setting_name.as_str(), expected_key);
135 }
136 }
137
138 #[test]
140 fn test_display_matches_as_str() {
141 let settings = [
143 SettingName::ActiveProjectId,
144 SettingName::ActiveTab,
145 SettingName::AutoApproveOrchestrationResearch,
146 SettingName::DefaultFastAgent,
147 SettingName::DefaultFastModel,
148 SettingName::DefaultFastReasoningLevel,
149 SettingName::DefaultReviewAgent,
150 SettingName::DefaultReviewModel,
151 SettingName::DefaultReviewReasoningLevel,
152 SettingName::DefaultSmartAgent,
153 SettingName::DefaultSmartModel,
154 SettingName::DefaultSmartReasoningLevel,
155 SettingName::IncludeCoauthoredByAgentty,
156 SettingName::LaunchConfiguration,
157 SettingName::LastUsedModelAsDefault,
158 SettingName::OrchestrationParallelism,
159 SettingName::Theme,
160 ];
161
162 for setting_name in settings {
164 assert_eq!(setting_name.to_string(), setting_name.as_str());
165 }
166 }
167}