Skip to main content

systemprompt_models/profile/
cloud.rs

1//! Cloud configuration.
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::TenantId;
8
9#[derive(Debug, Clone, Serialize, Deserialize, Default, schemars::JsonSchema)]
10#[serde(deny_unknown_fields)]
11pub struct CloudConfig {
12    #[serde(default, skip_serializing_if = "Option::is_none")]
13    pub tenant_id: Option<TenantId>,
14
15    #[serde(default)]
16    pub validation: CloudValidationMode,
17}
18
19impl CloudConfig {
20    #[must_use]
21    pub fn is_local_trial(&self) -> bool {
22        self.tenant_id
23            .as_ref()
24            .is_some_and(|t| t.as_str().starts_with("local_"))
25            || matches!(
26                self.validation,
27                CloudValidationMode::Warn | CloudValidationMode::Skip
28            )
29    }
30}
31
32#[derive(
33    Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default, schemars::JsonSchema,
34)]
35#[serde(rename_all = "lowercase")]
36pub enum CloudValidationMode {
37    #[default]
38    Strict,
39    Warn,
40    Skip,
41}