use chrono::{DateTime, Utc};
use serde_json::Value;
use std::path::PathBuf;
#[derive(Debug, Clone)]
pub struct ProfileRecord {
pub id: String,
pub schema_version: i64,
pub payload: Value,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct ProfileInput {
pub id: String,
pub schema_version: i64,
pub payload: Value,
}
#[derive(Debug, Clone)]
pub struct PromptRecord {
pub id: String,
pub schema_version: i64,
pub payload: Value,
pub display_name: String,
pub normalized_name: String,
pub identity_state: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct PromptInput {
pub id: String,
pub schema_version: i64,
pub payload: Value,
pub display_name: String,
pub normalized_name: String,
}
#[derive(Debug, Clone)]
pub struct ScheduleRecord {
pub id: String,
pub schema_version: i64,
pub payload: Value,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct ScheduleInput {
pub id: String,
pub schema_version: i64,
pub payload: Value,
}
#[derive(Debug, Clone)]
pub struct CredentialRecord {
pub provider_slug: String,
pub credential_mode: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct ProviderConfigRecord {
pub provider_slug: String,
pub display_name: String,
pub enabled: bool,
pub base_url: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct ProviderConfigInput {
pub provider_slug: String,
pub display_name: String,
pub enabled: bool,
pub base_url: Option<String>,
}
#[derive(Debug, Clone)]
pub struct CustomModelRecord {
pub provider_slug: String,
pub model_id: String,
pub display_name: String,
pub context_window: Option<u32>,
pub output_limit: Option<u32>,
pub supports_tool_calls: bool,
pub supports_reasoning: bool,
pub supports_vision: bool,
pub supports_streaming: bool,
pub reasoning_effort_values: Vec<String>,
pub cost_input_per_million: Option<f64>,
pub cost_output_per_million: Option<f64>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct CustomModelInput {
pub provider_slug: String,
pub model_id: String,
pub display_name: String,
pub context_window: Option<u32>,
pub output_limit: Option<u32>,
pub supports_tool_calls: bool,
pub supports_reasoning: bool,
pub supports_vision: bool,
pub supports_streaming: bool,
pub reasoning_effort_values: Vec<String>,
pub cost_input_per_million: Option<f64>,
pub cost_output_per_million: Option<f64>,
}
#[derive(Debug, Clone)]
pub struct DefaultModelRecord {
pub provider_slug: String,
pub model_id: String,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct DefaultModelInput {
pub provider_slug: String,
pub model_id: String,
}
#[derive(Debug, Clone)]
pub struct McpServerConfigRecord {
pub id: String,
pub label: String,
pub description: Option<String>,
pub transport: crate::mcp::server::McpTransport,
pub working_dir: Option<PathBuf>,
pub enabled_by_default: bool,
pub inherited_env_vars: Vec<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct McpServerConfigInput {
pub id: String,
pub label: String,
pub description: Option<String>,
pub transport: crate::mcp::server::McpTransport,
pub working_dir: Option<PathBuf>,
pub enabled_by_default: bool,
pub inherited_env_vars: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct SkillSettingsRecord {
pub trust_project_skills: bool,
pub additional_skill_dirs: Vec<PathBuf>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct SkillSettingsInput {
pub trust_project_skills: bool,
pub additional_skill_dirs: Vec<PathBuf>,
}
#[derive(Debug, Clone)]
pub struct RuntimeSettingsSnapshot {
pub provider_configs: Vec<ProviderConfigRecord>,
pub custom_models: Vec<CustomModelRecord>,
pub default_model: Option<DefaultModelRecord>,
pub mcp_servers: Vec<McpServerConfigRecord>,
pub skill_settings: SkillSettingsRecord,
}
#[derive(Debug, Clone)]
pub struct BootstrapMetadataRecord {
pub domain: String,
pub key: String,
pub value: String,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct BootstrapMetadataInput {
pub domain: String,
pub key: String,
pub value: String,
}
#[derive(Debug, Clone)]
pub struct SavedHandoffMetadata {
pub id: String,
pub name: String,
pub bundle_version: String,
pub source_session_id: Option<String>,
pub source_model: Option<String>,
pub source_provider: Option<String>,
pub size_estimate_tokens: usize,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct SavedHandoffRecord {
pub metadata: SavedHandoffMetadata,
pub bundle: crate::context::handoff::HandoffBundle,
}
#[derive(Debug, Clone)]
pub struct SavedHandoffInput {
pub id: String,
pub name: String,
pub bundle: crate::context::handoff::HandoffBundle,
}
#[derive(Debug, Clone)]
pub struct ProviderProfileRecord {
pub slug: String,
pub profile_json: String,
pub source: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct ProviderProfileInput {
pub slug: String,
pub profile_json: String,
pub source: Option<String>,
}