package domain import "time" type PluginLifecycleState string const ( PluginLifecycleStatePending PluginLifecycleState = "pending" PluginLifecycleStateInstalled PluginLifecycleState = "installed" PluginLifecycleStateEnabled PluginLifecycleState = "enabled" PluginLifecycleStateDisabled PluginLifecycleState = "disabled" PluginLifecycleStateUpgrading PluginLifecycleState = "upgrading" PluginLifecycleStateRollingBack PluginLifecycleState = "rolling_back" PluginLifecycleStateRetired PluginLifecycleState = "retired" PluginLifecycleStateFailed PluginLifecycleState = "failed" ) type PluginLifecycleOperation string const ( PluginLifecycleOperationInstall PluginLifecycleOperation = "install" PluginLifecycleOperationEnable PluginLifecycleOperation = "enable" PluginLifecycleOperationDisable PluginLifecycleOperation = "disable" PluginLifecycleOperationUpgrade PluginLifecycleOperation = "upgrade" PluginLifecycleOperationRollback PluginLifecycleOperation = "rollback" PluginLifecycleOperationRetire PluginLifecycleOperation = "retire" PluginLifecycleOperationDependencyCheck PluginLifecycleOperation = "dependency-check" ) type PluginLifecycleInstallation struct { ID string PluginID string ServerInstanceID string CurrentVersion string TargetVersion string PreviousVersion string DesiredState PluginLifecycleState CurrentState PluginLifecycleState LastOperation PluginLifecycleOperation Compatibility string DependencyState DependencyState JobID string FailureReason string IdempotencyKey string CreatedAt time.Time UpdatedAt time.Time } type PluginLifecycleFilter struct { PluginID string ServerInstanceID string CurrentState PluginLifecycleState } type PluginLifecycleRequest struct { PluginID string ServerInstanceID string Operation PluginLifecycleOperation TargetVersion string IdempotencyKey string } type PluginLifecycleResult struct { Installation PluginLifecycleInstallation Job Job Status string } type AIConfigDiffState string const ( AIConfigDiffStatePending AIConfigDiffState = "pending" AIConfigDiffStateApproved AIConfigDiffState = "approved" AIConfigDiffStateCancelled AIConfigDiffState = "cancelled" AIConfigDiffStateExpired AIConfigDiffState = "expired" ) type AIConfigDiffPreview struct { ID string RequestID string CreatedBy string ServerInstanceID string PluginID string ProviderID string Model string Key string ConfigVersion int CurrentConfigChecksum string ProposedConfig string DiffSummary string State AIConfigDiffState ExpiresAt time.Time ApprovedBy string ApprovedAt time.Time ApprovalIdempotencyKey string CancelledBy string CancelledAt time.Time JobID string CreatedAt time.Time UpdatedAt time.Time } type AIConfigDiffFilter struct { ServerInstanceID string PluginID string State AIConfigDiffState } type AIConfigDiffApprovalRequest struct { DiffID string IdempotencyKey string } type AIConfigDiffApprovalResult struct { Preview AIConfigDiffPreview Dispatch ServerConfigWriteDispatch } func CopyPluginLifecycleInstallation(installation PluginLifecycleInstallation) PluginLifecycleInstallation { return installation } func CopyPluginLifecycleInstallations(installations []PluginLifecycleInstallation) []PluginLifecycleInstallation { if installations == nil { return nil } out := make([]PluginLifecycleInstallation, len(installations)) copy(out, installations) return out } func CopyPluginLifecycleResult(result PluginLifecycleResult) PluginLifecycleResult { result.Installation = CopyPluginLifecycleInstallation(result.Installation) result.Job = CopyJob(result.Job) return result } func CopyAIConfigDiffPreview(preview AIConfigDiffPreview) AIConfigDiffPreview { return preview } func CopyAIConfigDiffPreviews(previews []AIConfigDiffPreview) []AIConfigDiffPreview { if previews == nil { return nil } out := make([]AIConfigDiffPreview, len(previews)) copy(out, previews) return out } func CopyAIConfigDiffApprovalResult(result AIConfigDiffApprovalResult) AIConfigDiffApprovalResult { result.Preview = CopyAIConfigDiffPreview(result.Preview) result.Dispatch = CopyServerConfigWriteDispatch(result.Dispatch) return result }