use crate::models::common::{ AiFeature, EventType, JsonValue, Modality, Permission, Priority, Scope, Status, TargetType, }; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; use uuid::Uuid; pub type TypedJson = sqlx::types::Json; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] pub struct ModelParameters { pub temperature: Option, pub top_p: Option, pub max_tokens: Option, pub stop_sequences: Vec, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] pub struct RetryPolicy { pub max_attempts: Option, pub initial_backoff_ms: Option, pub max_backoff_ms: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] pub struct AgentVersionConfig { pub parameters: Option, pub retry: Option, pub timeout_seconds: Option, pub parallel_tool_calls: Option, pub extra: BTreeMap, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] pub struct AgentEventFilters { pub event_actions: Vec, pub branch_patterns: Vec, pub path_patterns: Vec, pub label_names: Vec, pub actor_ids: Vec, pub include_bots: Option, pub extra: BTreeMap, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] pub struct AgentSchedulePayload { pub target_type: Option, pub target_id: Option, pub variables: BTreeMap, pub dry_run: Option, pub extra: BTreeMap, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] pub struct AiModelCapabilityConfig { pub input_modalities: Vec, pub output_modalities: Vec, pub supported_features: Vec, pub max_input_tokens: Option, pub max_output_tokens: Option, pub limits: BTreeMap, pub extra: BTreeMap, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default, utoipa::ToSchema)] pub struct WorkspaceIntegrationConfig { pub scopes: Vec, pub permissions: Vec, pub repo_ids: Vec, pub channel_ids: Vec, pub callback_url: Option, pub settings: BTreeMap, pub extra: BTreeMap, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default, utoipa::ToSchema)] pub struct NotificationMetadata { pub source: Option, pub severity: Option, pub dedupe_key: Option, pub template_data: BTreeMap, pub extra: BTreeMap, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] pub struct ConversationAttachmentMetadata { pub checksum_sha256: Option, pub width: Option, pub height: Option, pub duration_ms: Option, pub preview_url: Option, pub virus_scan_status: Option, pub extra: BTreeMap, }