Skip to main content

systemprompt_models/services/
settings.rs

1//! Global services settings with port-range defaults.
2//!
3//! Copyright (c) systemprompt.io — Business Source License 1.1.
4//! See <https://systemprompt.io> for licensing details.
5
6use 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}