Complete platform management workflows
This commit is contained in:
@@ -52,6 +52,72 @@
|
||||
"items": { "$ref": "#/$defs/pluginPermission" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"remoteAccess": {
|
||||
"type": "object",
|
||||
"required": ["methods"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"methods": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/remoteAccessMethod" },
|
||||
"uniqueItems": true,
|
||||
"minItems": 1
|
||||
},
|
||||
"runCapabilities": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runCapability" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"databaseEngines": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/remoteDatabaseEngine" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"rcon": { "type": "boolean" },
|
||||
"logTransfer": { "type": "boolean" }
|
||||
}
|
||||
},
|
||||
"runtimeProfiles": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"discovery": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runtimeDiscoveryProbe" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"lifecycleProfiles": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runtimeLifecycleProfile" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"dependencyProbes": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runtimeDependencyProbe" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"installPlans": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runtimeInstallPlan" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"logSources": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runtimeLogSource" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"transportProfiles": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runtimeTransportProfile" },
|
||||
"uniqueItems": true
|
||||
},
|
||||
"clientManagers": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/$defs/runtimeClientManagerProfile" },
|
||||
"uniqueItems": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"type": "object",
|
||||
"required": ["install", "start", "stop"],
|
||||
@@ -104,6 +170,18 @@
|
||||
"files.write",
|
||||
"files.patch",
|
||||
"logs.read",
|
||||
"remote.ftp.read",
|
||||
"remote.ftp.write",
|
||||
"remote.rsync.read",
|
||||
"remote.rsync.write",
|
||||
"remote.run.files.read",
|
||||
"remote.run.files.write",
|
||||
"remote.run.process.start",
|
||||
"remote.run.process.stop",
|
||||
"remote.run.db.mysql.query",
|
||||
"remote.run.db.sqlite.query",
|
||||
"remote.run.logs.transfer",
|
||||
"remote.run.rcon.command",
|
||||
"artifacts.read",
|
||||
"artifacts.write",
|
||||
"ai.invoke"
|
||||
@@ -119,6 +197,10 @@
|
||||
"server.logs.read",
|
||||
"server.artifacts.read",
|
||||
"server.artifacts.write",
|
||||
"server.remote.access",
|
||||
"server.run.distribution",
|
||||
"server.dependencies.manage",
|
||||
"server.client-manager.manage",
|
||||
"ai.invoke"
|
||||
]
|
||||
},
|
||||
@@ -129,9 +211,191 @@
|
||||
"logs.query",
|
||||
"artifacts.open",
|
||||
"files.request",
|
||||
"remote.access.request",
|
||||
"run.distribution.request",
|
||||
"dependencies.request",
|
||||
"logs.backfill.request",
|
||||
"client-manager.request",
|
||||
"ai.invoke"
|
||||
]
|
||||
},
|
||||
"remoteAccessMethod": {
|
||||
"enum": ["ftp", "rsync", "run"]
|
||||
},
|
||||
"remoteDatabaseEngine": {
|
||||
"enum": ["mysql", "sqlite"]
|
||||
},
|
||||
"logicalKey": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z0-9][a-z0-9._/-]*$",
|
||||
"maxLength": 120
|
||||
},
|
||||
"runtimePlatform": {
|
||||
"enum": ["windows", "linux", "darwin"]
|
||||
},
|
||||
"runtimeArch": {
|
||||
"enum": ["amd64", "arm64"]
|
||||
},
|
||||
"runtimeTarget": {
|
||||
"type": "object",
|
||||
"required": ["os", "arch"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"os": { "$ref": "#/$defs/runtimePlatform" },
|
||||
"arch": { "$ref": "#/$defs/runtimeArch" }
|
||||
}
|
||||
},
|
||||
"runtimeDiscoveryProbe": {
|
||||
"type": "object",
|
||||
"required": ["key", "kind", "targetKey"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"kind": { "enum": ["file.exists", "command.version", "service.status", "port.open", "steam.app", "docker.container"] },
|
||||
"targetKey": { "$ref": "#/$defs/logicalKey" },
|
||||
"required": { "type": "boolean" },
|
||||
"expected": { "type": "string", "maxLength": 120 },
|
||||
"platforms": { "type": "array", "items": { "$ref": "#/$defs/runtimePlatform" }, "uniqueItems": true }
|
||||
}
|
||||
},
|
||||
"runtimeLifecycleProfile": {
|
||||
"type": "object",
|
||||
"required": ["key", "mode", "capabilities"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"mode": { "enum": ["local-process", "hosted-ftp-rcon", "ftp-only", "custom-client"] },
|
||||
"capabilities": { "type": "array", "items": { "$ref": "#/$defs/runCapability" }, "uniqueItems": true, "minItems": 1 },
|
||||
"actionRefs": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"install": { "$ref": "#/$defs/relativeJsonRef" },
|
||||
"start": { "$ref": "#/$defs/relativeJsonRef" },
|
||||
"stop": { "$ref": "#/$defs/relativeJsonRef" },
|
||||
"restart": { "$ref": "#/$defs/relativeJsonRef" },
|
||||
"status": { "$ref": "#/$defs/relativeJsonRef" }
|
||||
}
|
||||
},
|
||||
"transportKeys": { "type": "array", "items": { "$ref": "#/$defs/logicalKey" }, "uniqueItems": true },
|
||||
"clientManagerRef": { "$ref": "#/$defs/logicalKey" },
|
||||
"platforms": { "type": "array", "items": { "$ref": "#/$defs/runtimePlatform" }, "uniqueItems": true }
|
||||
}
|
||||
},
|
||||
"runtimeDependencyProbe": {
|
||||
"type": "object",
|
||||
"required": ["key", "kind", "targetKey"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"kind": { "enum": ["command.version", "service.exists", "port.available", "steam.app", "java.version", "docker.available", "package.installed", "file.exists"] },
|
||||
"targetKey": { "$ref": "#/$defs/logicalKey" },
|
||||
"required": { "type": "boolean" },
|
||||
"minimumVersion": { "type": "string", "maxLength": 80 },
|
||||
"platforms": { "type": "array", "items": { "$ref": "#/$defs/runtimePlatform" }, "uniqueItems": true }
|
||||
}
|
||||
},
|
||||
"runtimeInstallStep": {
|
||||
"type": "object",
|
||||
"required": ["type", "targetKey"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"type": { "enum": ["package", "verified-download", "steamcmd-app", "manual"] },
|
||||
"targetKey": { "$ref": "#/$defs/logicalKey" },
|
||||
"packageManager": { "enum": ["winget", "choco", "scoop", "apt", "yum", "dnf", "pacman", "zypper", "brew", "steamcmd", "manual"] },
|
||||
"packageName": { "type": "string", "pattern": "^[a-zA-Z0-9_.:+@/-]+$", "maxLength": 120 },
|
||||
"version": { "type": "string", "maxLength": 80 },
|
||||
"downloadRef": { "type": "string", "pattern": "^https://[a-zA-Z0-9._~:/?#\\[\\]@!$&'()*+,;=%-]+$", "maxLength": 240 },
|
||||
"checksum": { "type": "string", "pattern": "^sha256:[a-fA-F0-9]{64}$" }
|
||||
}
|
||||
},
|
||||
"runtimeInstallPlan": {
|
||||
"type": "object",
|
||||
"required": ["key", "title", "steps"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"title": { "type": "string", "minLength": 1, "maxLength": 80 },
|
||||
"platforms": { "type": "array", "items": { "$ref": "#/$defs/runtimePlatform" }, "uniqueItems": true },
|
||||
"steps": { "type": "array", "items": { "$ref": "#/$defs/runtimeInstallStep" }, "minItems": 1 }
|
||||
}
|
||||
},
|
||||
"runtimeLogSource": {
|
||||
"type": "object",
|
||||
"required": ["key", "kind", "streamKey"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"kind": { "enum": ["process.stdout", "process.stderr", "file.tail", "ftp.poll", "sql.query", "client-manager"] },
|
||||
"targetKey": { "$ref": "#/$defs/logicalKey" },
|
||||
"streamKey": { "$ref": "#/$defs/logicalKey" },
|
||||
"cursorKind": { "enum": ["sequence", "offset", "fingerprint", "ftp-listing", "sql-cursor"] },
|
||||
"retentionDays": { "type": "integer", "minimum": 1, "maximum": 365 }
|
||||
}
|
||||
},
|
||||
"runtimeTransportProfile": {
|
||||
"type": "object",
|
||||
"required": ["key", "kind", "capabilities"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"kind": { "enum": ["file", "ftp", "rsync", "mysql", "sqlite", "rcon"] },
|
||||
"targetKey": { "$ref": "#/$defs/logicalKey" },
|
||||
"capabilities": { "type": "array", "items": { "$ref": "#/$defs/runCapability" }, "uniqueItems": true, "minItems": 1 }
|
||||
}
|
||||
},
|
||||
"relativePathRef": {
|
||||
"type": "string",
|
||||
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*://)(?!.*\\.\\.)[a-zA-Z0-9_./-]+$",
|
||||
"maxLength": 160
|
||||
},
|
||||
"runtimeClientManagerProfile": {
|
||||
"type": "object",
|
||||
"required": ["key", "repository", "supportedTargets", "build", "outputArtifacts"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"displayName": { "type": "string", "minLength": 1, "maxLength": 80 },
|
||||
"repository": {
|
||||
"type": "object",
|
||||
"required": ["url", "revisionPolicy"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"url": { "type": "string", "pattern": "^https://[a-zA-Z0-9._~:/?#\\[\\]@!$&'()*+,;=%-]+\\.git$", "maxLength": 240 },
|
||||
"branch": { "type": "string", "pattern": "^[a-zA-Z0-9._/-]+$", "maxLength": 120 },
|
||||
"tag": { "type": "string", "pattern": "^[a-zA-Z0-9._/-]+$", "maxLength": 120 },
|
||||
"revision": { "type": "string", "pattern": "^[a-fA-F0-9]{7,64}$" },
|
||||
"revisionPolicy": { "enum": ["pinned", "branch", "tag"] }
|
||||
}
|
||||
},
|
||||
"supportedTargets": { "type": "array", "items": { "$ref": "#/$defs/runtimeTarget" }, "minItems": 1, "uniqueItems": true },
|
||||
"build": {
|
||||
"type": "object",
|
||||
"required": ["system"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"system": { "enum": ["go", "npm", "cargo", "make"] },
|
||||
"workspaceRef": { "$ref": "#/$defs/relativePathRef" },
|
||||
"entryRef": { "$ref": "#/$defs/relativePathRef" }
|
||||
}
|
||||
},
|
||||
"configTemplates": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["key", "templateRef", "outputRef"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"key": { "$ref": "#/$defs/logicalKey" },
|
||||
"templateRef": { "$ref": "#/$defs/relativePathRef" },
|
||||
"outputRef": { "$ref": "#/$defs/relativePathRef" }
|
||||
}
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"outputArtifacts": { "type": "array", "items": { "$ref": "#/$defs/relativePathRef" }, "minItems": 1, "uniqueItems": true }
|
||||
}
|
||||
},
|
||||
"aiPurpose": {
|
||||
"enum": [
|
||||
"config.read",
|
||||
|
||||
Reference in New Issue
Block a user