Skip to main content

systemprompt_models/profile/
cloud.rs

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