Complete platform management workflows

This commit is contained in:
npc0-hue
2026-07-14 16:39:37 +08:00
parent 7e05d0a4e7
commit 4f33f761a3
106 changed files with 11313 additions and 460 deletions
+52 -10
View File
@@ -69,6 +69,21 @@ type PluginPermissions struct {
Jobs bool `json:"jobs" db:"jobs"`
// Artifacts allows artifact metadata and transfer references.
Artifacts bool `json:"artifacts" db:"artifacts"`
// RemoteAccess allows platform-mediated remote server operations.
RemoteAccess bool `json:"remoteAccess" db:"remote_access"`
}
type GamePluginRemoteAccess struct {
// Methods lists declared remote access transports such as ftp, rsync, or run.
Methods []string `json:"methods" db:"methods"`
// RunCapabilities lists remote run job capabilities enabled by the plugin.
RunCapabilities []string `json:"runCapabilities" db:"run_capabilities"`
// DatabaseEngines lists database engines supported through run-mediated reads.
DatabaseEngines []string `json:"databaseEngines" db:"database_engines"`
// RCON indicates that platform-mediated RCON commands are supported.
RCON bool `json:"rcon" db:"rcon"`
// LogTransfer indicates that run-mediated log transfer is supported.
LogTransfer bool `json:"logTransfer" db:"log_transfer"`
}
type PluginLifecycleActions struct {
@@ -128,6 +143,8 @@ type GamePlugin struct {
Tags []string `json:"tags" db:"tags"`
// AIPurposes stores platform-mediated AI usage purposes.
AIPurposes []string `json:"aiPurposes" db:"ai_purposes"`
// RemoteAccess stores plugin-declared remote access metadata.
RemoteAccess GamePluginRemoteAccess `json:"remoteAccess" db:"remote_access"`
// ValidationViolations stores safe validation findings for invalid plugins.
ValidationViolations []string `json:"validationViolations" db:"validation_violations"`
// Status is the plugin lifecycle status.
@@ -377,6 +394,7 @@ func GamePluginFromDomain(plugin domain.GamePlugin) GamePlugin {
Pages: pagesFromDomain(plugin.Pages),
Tags: plugin.Tags,
AIPurposes: plugin.AIPurposes,
RemoteAccess: remoteAccessFromDomain(plugin.RemoteAccess),
ValidationViolations: plugin.ValidationViolations,
Status: plugin.Status,
}
@@ -400,6 +418,7 @@ func (plugin GamePlugin) ToDomain() domain.GamePlugin {
Pages: pagesToDomain(plugin.Pages),
Tags: domain.CopyStringSlice(plugin.Tags),
AIPurposes: domain.CopyStringSlice(plugin.AIPurposes),
RemoteAccess: plugin.RemoteAccess.ToDomain(),
ValidationViolations: domain.CopyStringSlice(plugin.ValidationViolations),
Status: plugin.Status,
}
@@ -459,21 +478,44 @@ func pagesFromDomain(pages []domain.GamePluginPage) []GamePluginPage {
func (permissions PluginPermissions) ToDomain() domain.PluginPermissions {
return domain.PluginPermissions{
AI: permissions.AI,
Logs: permissions.Logs,
Files: permissions.Files,
Jobs: permissions.Jobs,
Artifacts: permissions.Artifacts,
AI: permissions.AI,
Logs: permissions.Logs,
Files: permissions.Files,
Jobs: permissions.Jobs,
Artifacts: permissions.Artifacts,
RemoteAccess: permissions.RemoteAccess,
}
}
func permissionsFromDomain(permissions domain.PluginPermissions) PluginPermissions {
return PluginPermissions{
AI: permissions.AI,
Logs: permissions.Logs,
Files: permissions.Files,
Jobs: permissions.Jobs,
Artifacts: permissions.Artifacts,
AI: permissions.AI,
Logs: permissions.Logs,
Files: permissions.Files,
Jobs: permissions.Jobs,
Artifacts: permissions.Artifacts,
RemoteAccess: permissions.RemoteAccess,
}
}
func (remote GamePluginRemoteAccess) ToDomain() domain.GamePluginRemoteAccess {
return domain.GamePluginRemoteAccess{
Methods: domain.CopyStringSlice(remote.Methods),
RunCapabilities: domain.CopyStringSlice(remote.RunCapabilities),
DatabaseEngines: domain.CopyStringSlice(remote.DatabaseEngines),
RCON: remote.RCON,
LogTransfer: remote.LogTransfer,
}
}
func remoteAccessFromDomain(remote domain.GamePluginRemoteAccess) GamePluginRemoteAccess {
remote = domain.CopyGamePluginRemoteAccess(remote)
return GamePluginRemoteAccess{
Methods: remote.Methods,
RunCapabilities: remote.RunCapabilities,
DatabaseEngines: remote.DatabaseEngines,
RCON: remote.RCON,
LogTransfer: remote.LogTransfer,
}
}