systemprompt_models/services/
settings.rs1use serde::{Deserialize, Serialize};
7use systemprompt_identifiers::MarketplaceId;
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct Settings {
11 #[serde(default = "default_agent_port_range")]
12 pub agent_port_range: (u16, u16),
13 #[serde(default = "default_mcp_port_range")]
14 pub mcp_port_range: (u16, u16),
15 #[serde(default = "default_true")]
16 pub auto_start_enabled: bool,
17 #[serde(default = "default_true")]
18 pub validation_strict: bool,
19 #[serde(default = "default_schema_validation_mode")]
20 pub schema_validation_mode: String,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub services_path: Option<String>,
23 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub skills_path: Option<String>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub config_path: Option<String>,
27 #[serde(default = "default_true")]
28 pub marketplace_public: bool,
29 #[serde(default, skip_serializing_if = "Option::is_none")]
30 pub default_marketplace_id: Option<MarketplaceId>,
31}
32
33impl Default for Settings {
34 fn default() -> Self {
35 Self {
36 agent_port_range: default_agent_port_range(),
37 mcp_port_range: default_mcp_port_range(),
38 auto_start_enabled: true,
39 validation_strict: true,
40 schema_validation_mode: default_schema_validation_mode(),
41 services_path: None,
42 skills_path: None,
43 config_path: None,
44 marketplace_public: true,
45 default_marketplace_id: None,
46 }
47 }
48}
49
50const fn default_agent_port_range() -> (u16, u16) {
51 (9000, 9999)
52}
53
54const fn default_mcp_port_range() -> (u16, u16) {
55 (5000, 5999)
56}
57
58const fn default_true() -> bool {
59 true
60}
61
62fn default_schema_validation_mode() -> String {
63 "auto_migrate".to_owned()
64}