Skip to main content

systemprompt_models/services/
settings.rs

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