use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OAuthConnection {
pub id: i64,
pub service: String,
pub auth_type: String,
pub username: Option<String>,
pub scopes: String,
pub token_expires_at: Option<String>,
pub created_at: String,
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PendingOAuthFlow {
pub state: String,
pub service: String,
pub code_verifier: Option<String>,
pub session_id: String,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DynamicSkill {
pub id: i64,
pub name: String,
pub description: String,
pub triggers_json: String, pub body: String,
pub source: String, pub source_url: Option<String>,
pub enabled: bool,
pub version: Option<String>,
pub created_at: String,
#[serde(default = "default_empty_json")]
pub resources_json: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SkillDraft {
pub id: i64,
pub name: String,
pub description: String,
pub triggers_json: String,
pub body: String,
pub source_procedure: String,
pub status: String, pub created_at: String,
}
fn default_empty_json() -> String {
"[]".to_string()
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DynamicBot {
pub id: i64,
pub channel_type: String, pub bot_token: String,
pub app_token: Option<String>, pub allowed_user_ids: Vec<String>, pub extra_config: String, pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DynamicMcpServer {
pub id: i64,
pub name: String,
pub command: String,
pub args_json: String, pub env_keys_json: String, pub triggers_json: String, pub enabled: bool,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DynamicCliAgent {
pub id: i64,
pub name: String,
pub command: String,
pub args_json: String, pub description: String,
pub timeout_secs: Option<u64>,
pub max_output_chars: Option<usize>,
pub enabled: bool,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CliAgentInvocation {
pub id: i64,
pub session_id: String,
pub agent_name: String,
pub prompt_summary: String,
pub working_dir: Option<String>,
pub started_at: String,
pub completed_at: Option<String>,
pub exit_code: Option<i32>,
pub output_summary: Option<String>,
pub success: Option<bool>,
pub duration_secs: Option<f64>,
}