package models import ( "time" "github.com/google/uuid" ) // SystemEvent represents a unified event log entry for all system events // This is a copy of the server model to avoid circular dependencies type SystemEvent struct { ID uuid.UUID `json:"id" db:"id"` AgentID *uuid.UUID `json:"agent_id,omitempty" db:"agent_id"` // Pointer to allow NULL for server events EventType string `json:"event_type" db:"event_type"` // e.g., 'agent_update', 'agent_startup', 'server_build' EventSubtype string `json:"event_subtype" db:"event_subtype"` // e.g., 'success', 'failed', 'info', 'warning' Severity string `json:"severity" db:"severity"` // 'info', 'warning', 'error', 'critical' Component string `json:"component" db:"component"` // 'agent', 'server', 'build', 'download', 'config', etc. Message string `json:"message" db:"message"` Metadata map[string]interface{} `json:"metadata,omitempty" db:"metadata"` // JSONB for structured data CreatedAt time.Time `json:"created_at" db:"created_at"` } // Event type constants const ( EventTypeAgentStartup = "agent_startup" EventTypeAgentRegistration = "agent_registration" EventTypeAgentCheckIn = "agent_checkin" EventTypeAgentScan = "agent_scan" EventTypeAgentUpdate = "agent_update" EventTypeAgentConfig = "agent_config" EventTypeAgentMigration = "agent_migration" EventTypeAgentShutdown = "agent_shutdown" EventTypeServerBuild = "server_build" EventTypeServerDownload = "server_download" EventTypeServerConfig = "server_config" EventTypeServerAuth = "server_auth" EventTypeDownload = "download" EventTypeMigration = "migration" EventTypeError = "error" ) // Event subtype constants const ( SubtypeSuccess = "success" SubtypeFailed = "failed" SubtypeInfo = "info" SubtypeWarning = "warning" SubtypeCritical = "critical" SubtypeDownloadFailed = "download_failed" SubtypeValidationFailed = "validation_failed" SubtypeConfigCorrupted = "config_corrupted" SubtypeMigrationNeeded = "migration_needed" SubtypePanicRecovered = "panic_recovered" SubtypeTokenExpired = "token_expired" SubtypeNetworkTimeout = "network_timeout" SubtypePermissionDenied = "permission_denied" SubtypeServiceUnavailable = "service_unavailable" ) // Severity constants const ( SeverityInfo = "info" SeverityWarning = "warning" SeverityError = "error" SeverityCritical = "critical" ) // Component constants const ( ComponentAgent = "agent" ComponentServer = "server" ComponentBuild = "build" ComponentDownload = "download" ComponentConfig = "config" ComponentDatabase = "database" ComponentNetwork = "network" ComponentSecurity = "security" ComponentMigration = "migration" )