Integrate SCUM real ops workflows
This commit is contained in:
@@ -21,10 +21,37 @@
|
||||
],
|
||||
"createFormSchema": "schemas/create-form.schema.json",
|
||||
"createFields": [
|
||||
{ "key": "serverName", "label": "SCUM 服务器名称", "type": "text", "required": true, "configKey": "serverName" },
|
||||
{ "key": "gamePort", "label": "游戏端口", "type": "port", "required": true, "defaultValue": "7779", "configKey": "gamePort" },
|
||||
{ "key": "queryPort", "label": "查询端口", "type": "port", "required": true, "defaultValue": "27015", "configKey": "queryPort" },
|
||||
{ "key": "maxPlayers", "label": "最大玩家数", "type": "number", "required": true, "defaultValue": "128", "configKey": "maxPlayers" }
|
||||
{
|
||||
"key": "serverName",
|
||||
"label": "SCUM 服务器名称",
|
||||
"type": "text",
|
||||
"required": true,
|
||||
"configKey": "serverName"
|
||||
},
|
||||
{
|
||||
"key": "gamePort",
|
||||
"label": "游戏端口",
|
||||
"type": "port",
|
||||
"required": true,
|
||||
"defaultValue": "7779",
|
||||
"configKey": "gamePort"
|
||||
},
|
||||
{
|
||||
"key": "queryPort",
|
||||
"label": "查询端口",
|
||||
"type": "port",
|
||||
"required": true,
|
||||
"defaultValue": "27015",
|
||||
"configKey": "queryPort"
|
||||
},
|
||||
{
|
||||
"key": "maxPlayers",
|
||||
"label": "最大玩家数",
|
||||
"type": "number",
|
||||
"required": true,
|
||||
"defaultValue": "128",
|
||||
"configKey": "maxPlayers"
|
||||
}
|
||||
]
|
||||
},
|
||||
"capabilities": [
|
||||
@@ -43,6 +70,7 @@
|
||||
"remote.rsync.write",
|
||||
"remote.run.files.read",
|
||||
"remote.run.files.write",
|
||||
"remote.run.db.sqlite.query",
|
||||
"remote.run.process.start",
|
||||
"remote.run.process.stop",
|
||||
"remote.run.logs.transfer",
|
||||
@@ -67,6 +95,7 @@
|
||||
"runCapabilities": [
|
||||
"remote.run.files.read",
|
||||
"remote.run.files.write",
|
||||
"remote.run.db.sqlite.query",
|
||||
"remote.run.process.start",
|
||||
"remote.run.process.stop",
|
||||
"remote.run.logs.transfer",
|
||||
@@ -74,28 +103,26 @@
|
||||
"remote.run.protected.rcon",
|
||||
"remote.run.program.command"
|
||||
],
|
||||
"databaseEngines": [
|
||||
"sqlite"
|
||||
],
|
||||
"logTransfer": true
|
||||
},
|
||||
"bridge": {
|
||||
"actions": [
|
||||
"server.instances.read",
|
||||
"jobs.dispatch",
|
||||
"logs.query",
|
||||
"artifacts.open",
|
||||
"files.request",
|
||||
"remote.access.request",
|
||||
"ai.invoke",
|
||||
"run.distribution.request",
|
||||
"dependencies.request",
|
||||
"logs.backfill.request",
|
||||
"client-manager.request",
|
||||
"plugin-lifecycle.request"
|
||||
]
|
||||
},
|
||||
"gameClientBridge": {
|
||||
"commands": [
|
||||
{ "type": "config.read", "title": "Read SCUM configuration", "permission": "server.game-client.read", "approvalLevel": "none", "payloadSchemaRef": "schemas/bridge/config-read.payload.schema.json", "resultSchemaRef": "schemas/bridge/config-read.result.schema.json", "timeoutSeconds": 30, "maxPayloadBytes": 1024 },
|
||||
{ "type": "config.patch", "title": "Patch SCUM configuration", "permission": "server.game-client.maintenance", "approvalLevel": "platform-admin", "payloadSchemaRef": "schemas/bridge/config-patch.payload.schema.json", "resultSchemaRef": "schemas/bridge/config-patch.result.schema.json", "timeoutSeconds": 60, "maxPayloadBytes": 4096 },
|
||||
{
|
||||
"type": "announcement.send",
|
||||
"title": "Send SCUM announcement",
|
||||
@@ -195,39 +222,6 @@
|
||||
"resultSchemaRef": "schemas/bridge/game-state-patch.result.schema.json",
|
||||
"timeoutSeconds": 120,
|
||||
"maxPayloadBytes": 4096
|
||||
},
|
||||
{
|
||||
"type": "database.request",
|
||||
"title": "Execute approved SCUM database request",
|
||||
"permission": "server.game-client.maintenance",
|
||||
"approvalLevel": "platform-admin",
|
||||
"payloadSchemaRef": "schemas/bridge/protected-request.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/protected-request.result.schema.json",
|
||||
"timeoutSeconds": 120,
|
||||
"maxPayloadBytes": 16384,
|
||||
"protectedRequest": { "kind": "sql", "transportKey": "scum-database", "targetKey": "scum-database", "textField": "requestText", "maxTextBytes": 16384 }
|
||||
},
|
||||
{
|
||||
"type": "management.rcon.request",
|
||||
"title": "Execute approved SCUM management command",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"payloadSchemaRef": "schemas/bridge/protected-request.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/protected-request.result.schema.json",
|
||||
"timeoutSeconds": 120,
|
||||
"maxPayloadBytes": 8192,
|
||||
"protectedRequest": { "kind": "rcon", "transportKey": "scum-management", "targetKey": "scum-management", "textField": "requestText", "maxTextBytes": 8192 }
|
||||
},
|
||||
{
|
||||
"type": "management.program.request",
|
||||
"title": "Execute approved SCUM management program request",
|
||||
"permission": "server.game-client.maintenance",
|
||||
"approvalLevel": "platform-admin",
|
||||
"payloadSchemaRef": "schemas/bridge/protected-request.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/protected-request.result.schema.json",
|
||||
"timeoutSeconds": 120,
|
||||
"maxPayloadBytes": 8192,
|
||||
"protectedRequest": { "kind": "program", "transportKey": "scum-program", "targetKey": "scum-program", "textField": "requestText", "maxTextBytes": 8192 }
|
||||
}
|
||||
],
|
||||
"snapshots": [
|
||||
@@ -288,34 +282,346 @@
|
||||
"maxRecords": 1000
|
||||
}
|
||||
],
|
||||
"queryTemplates": [
|
||||
{
|
||||
"key": "scum.player.profile",
|
||||
"title": "Read SCUM player profile, economy, squad, and position facts",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "scum-database",
|
||||
"targetKey": "scum-database",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/scum-player-profile.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/scum-player-profile.result.schema.json",
|
||||
"maxRows": 500,
|
||||
"timeoutSeconds": 15
|
||||
},
|
||||
{
|
||||
"key": "scum.squads",
|
||||
"title": "Read SCUM squad records",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "scum-database",
|
||||
"targetKey": "scum-database",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/scum-squads.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/scum-squads.result.schema.json",
|
||||
"maxRows": 500,
|
||||
"timeoutSeconds": 15
|
||||
},
|
||||
{
|
||||
"key": "scum.squad-members",
|
||||
"title": "Read SCUM squad membership records",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "scum-database",
|
||||
"targetKey": "scum-database",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/scum-squad-members.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/scum-squad-members.result.schema.json",
|
||||
"maxRows": 500,
|
||||
"timeoutSeconds": 15
|
||||
},
|
||||
{
|
||||
"key": "scum.vehicles",
|
||||
"title": "Read SCUM vehicle records and coordinates",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "scum-database",
|
||||
"targetKey": "scum-database",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/scum-vehicles.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/scum-vehicles.result.schema.json",
|
||||
"maxRows": 500,
|
||||
"timeoutSeconds": 15
|
||||
},
|
||||
{
|
||||
"key": "scum.flags",
|
||||
"title": "Read SCUM flag and ownership records",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "scum-database",
|
||||
"targetKey": "scum-database",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/scum-flags.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/scum-flags.result.schema.json",
|
||||
"maxRows": 500,
|
||||
"timeoutSeconds": 15
|
||||
},
|
||||
{
|
||||
"key": "scum.positions",
|
||||
"title": "Read SCUM current player, vehicle, and flag coordinates",
|
||||
"permission": "server.game-client.read",
|
||||
"engine": "sqlite",
|
||||
"transportKey": "scum-database",
|
||||
"targetKey": "scum-database",
|
||||
"parameterSchemaRef": "schemas/bridge/queries/scum-positions.parameters.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/queries/scum-positions.result.schema.json",
|
||||
"maxRows": 500,
|
||||
"timeoutSeconds": 15
|
||||
}
|
||||
],
|
||||
"operationTemplates": [
|
||||
{
|
||||
"key": "player.fame.set",
|
||||
"title": "Set SCUM player fame through RCON",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"kind": "rcon",
|
||||
"transportKey": "scum-management",
|
||||
"targetKey": "scum-management",
|
||||
"payloadSchemaRef": "schemas/bridge/player-fame-set.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/player-rcon-set.result.schema.json",
|
||||
"confirmationSchemaRef": "schemas/bridge/player-fame-set.confirmation.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 2048,
|
||||
"safety": {
|
||||
"requiresApproval": true,
|
||||
"requiresConfirmation": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "player.currency.normal.set",
|
||||
"title": "Set SCUM normal currency through RCON",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"kind": "rcon",
|
||||
"transportKey": "scum-management",
|
||||
"targetKey": "scum-management",
|
||||
"payloadSchemaRef": "schemas/bridge/player-currency-set.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/player-rcon-set.result.schema.json",
|
||||
"confirmationSchemaRef": "schemas/bridge/player-currency-set.confirmation.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 2048,
|
||||
"safety": {
|
||||
"requiresApproval": true,
|
||||
"requiresConfirmation": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "player.currency.gold.set",
|
||||
"title": "Set SCUM gold currency through RCON",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"kind": "rcon",
|
||||
"transportKey": "scum-management",
|
||||
"targetKey": "scum-management",
|
||||
"payloadSchemaRef": "schemas/bridge/player-currency-set.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/player-rcon-set.result.schema.json",
|
||||
"confirmationSchemaRef": "schemas/bridge/player-currency-set.confirmation.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 2048,
|
||||
"safety": {
|
||||
"requiresApproval": true,
|
||||
"requiresConfirmation": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "player.notify",
|
||||
"title": "Notify SCUM player through RCON chat",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"kind": "rcon",
|
||||
"transportKey": "scum-management",
|
||||
"targetKey": "scum-management",
|
||||
"payloadSchemaRef": "schemas/bridge/player-notify.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/player-notify.result.schema.json",
|
||||
"confirmationSchemaRef": "schemas/bridge/player-notify.confirmation.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 2048,
|
||||
"safety": {
|
||||
"requiresApproval": true,
|
||||
"requiresConfirmation": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "reward.deliver",
|
||||
"title": "Deliver approved SCUM reward through typed command workflow",
|
||||
"permission": "server.game-client.command",
|
||||
"approvalLevel": "operator",
|
||||
"kind": "rcon",
|
||||
"transportKey": "scum-management",
|
||||
"targetKey": "scum-management",
|
||||
"payloadSchemaRef": "schemas/bridge/reward-deliver.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/reward-deliver.result.schema.json",
|
||||
"confirmationSchemaRef": "schemas/bridge/reward-deliver.confirmation.schema.json",
|
||||
"timeoutSeconds": 60,
|
||||
"maxPayloadBytes": 4096,
|
||||
"safety": {
|
||||
"requiresApproval": true,
|
||||
"requiresConfirmation": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"key": "player.attribute.855.set",
|
||||
"title": "Set SCUM DB-only player attribute 855",
|
||||
"permission": "server.game-client.maintenance",
|
||||
"approvalLevel": "platform-admin",
|
||||
"kind": "sqlite-mutation",
|
||||
"transportKey": "scum-database",
|
||||
"targetKey": "scum-database",
|
||||
"payloadSchemaRef": "schemas/bridge/player-attribute-855-set.payload.schema.json",
|
||||
"resultSchemaRef": "schemas/bridge/player-attribute-855-set.result.schema.json",
|
||||
"confirmationSchemaRef": "schemas/bridge/player-attribute-855-set.confirmation.schema.json",
|
||||
"timeoutSeconds": 120,
|
||||
"maxPayloadBytes": 4096,
|
||||
"maxRowsAffected": 1,
|
||||
"mutation": {
|
||||
"fieldKey": "855",
|
||||
"tableKey": "prisoner",
|
||||
"identityKey": "user_profile_id",
|
||||
"valueKey": "value",
|
||||
"confirmationQueryKey": "scum.player.profile",
|
||||
"allowedValueType": "integer",
|
||||
"minValue": 0,
|
||||
"maxValue": 100000
|
||||
},
|
||||
"safety": {
|
||||
"requiresApproval": true,
|
||||
"requiresOfflinePlayer": true,
|
||||
"requiresMaintenanceWindow": true,
|
||||
"requiresBeforeValue": true,
|
||||
"requiresConfirmation": true,
|
||||
"backupRequired": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"commandRetentionSeconds": 604800,
|
||||
"maxCommands": 1000,
|
||||
"features": [
|
||||
{ "key": "config.manage", "title": "SCUM configuration", "permission": "server.game-client.read", "requiredHandlers": ["config.read", "config.patch"] },
|
||||
{ "key": "player.intelligence", "title": "SCUM player intelligence", "permission": "server.game-client.read", "requiredHandlers": ["player.lookup"], "requiredEventProducers": ["semantic.events"] },
|
||||
{ "key": "reward.delivery", "title": "SCUM reward delivery", "permission": "server.game-client.command", "requiredHandlers": ["reward.deliver", "player.notify"] },
|
||||
{ "key": "state.patch", "title": "SCUM player state patch", "permission": "server.game-client.maintenance", "requiredHandlers": ["game-state.patch"] },
|
||||
{ "key": "vehicle.spawn", "title": "SCUM catalogued vehicle spawn", "permission": "server.game-client.command", "requiredHandlers": ["vehicle.spawn"] },
|
||||
{ "key": "trajectory.collect", "title": "SCUM trajectories", "permission": "server.game-client.read", "requiredEventProducers": ["semantic.events"] }
|
||||
{
|
||||
"key": "player.intelligence",
|
||||
"title": "SCUM player intelligence",
|
||||
"permission": "server.game-client.read",
|
||||
"requiredHandlers": [
|
||||
"player.lookup"
|
||||
],
|
||||
"requiredEventProducers": [
|
||||
"semantic.events"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "reward.delivery",
|
||||
"title": "SCUM reward delivery",
|
||||
"permission": "server.game-client.command",
|
||||
"requiredHandlers": [
|
||||
"reward.deliver",
|
||||
"player.notify"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "state.patch",
|
||||
"title": "SCUM player state patch",
|
||||
"permission": "server.game-client.maintenance",
|
||||
"requiredHandlers": [
|
||||
"game-state.patch"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "vehicle.spawn",
|
||||
"title": "SCUM catalogued vehicle spawn",
|
||||
"permission": "server.game-client.command",
|
||||
"requiredHandlers": [
|
||||
"vehicle.spawn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "trajectory.collect",
|
||||
"title": "SCUM trajectories",
|
||||
"permission": "server.game-client.read",
|
||||
"requiredEventProducers": [
|
||||
"semantic.events"
|
||||
]
|
||||
}
|
||||
],
|
||||
"pages": [
|
||||
{
|
||||
"pageKey": "files-config",
|
||||
"commandTypes": [
|
||||
"announcement.send",
|
||||
"companion.diagnostics",
|
||||
"player.lookup",
|
||||
"reward.deliver",
|
||||
"vehicle.spawn",
|
||||
"event.start",
|
||||
"restart.prepare",
|
||||
"maintenance.prepare",
|
||||
"database.request",
|
||||
"management.rcon.request",
|
||||
"management.program.request"
|
||||
"pageKey": "players",
|
||||
"snapshotTypes": [
|
||||
"players",
|
||||
"online.sessions"
|
||||
],
|
||||
"snapshotTypes": ["companion.health", "online.sessions", "players", "squads", "vehicles", "flags"],
|
||||
"featureKeys": ["config.manage", "player.intelligence", "reward.delivery", "state.patch", "vehicle.spawn", "trajectory.collect"]
|
||||
"queryTemplateKeys": [
|
||||
"scum.player.profile",
|
||||
"scum.positions"
|
||||
],
|
||||
"operationKeys": [
|
||||
"player.fame.set",
|
||||
"player.currency.normal.set",
|
||||
"player.currency.gold.set",
|
||||
"player.notify",
|
||||
"player.attribute.855.set"
|
||||
],
|
||||
"featureKeys": [
|
||||
"player.intelligence",
|
||||
"state.patch"
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageKey": "squads",
|
||||
"snapshotTypes": [
|
||||
"squads",
|
||||
"flags"
|
||||
],
|
||||
"queryTemplateKeys": [
|
||||
"scum.squads",
|
||||
"scum.squad-members",
|
||||
"scum.flags"
|
||||
],
|
||||
"featureKeys": [
|
||||
"player.intelligence"
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageKey": "live-map",
|
||||
"snapshotTypes": [
|
||||
"players",
|
||||
"vehicles",
|
||||
"flags"
|
||||
],
|
||||
"queryTemplateKeys": [
|
||||
"scum.player.profile",
|
||||
"scum.vehicles",
|
||||
"scum.flags",
|
||||
"scum.positions"
|
||||
],
|
||||
"featureKeys": [
|
||||
"trajectory.collect"
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageKey": "gifts",
|
||||
"snapshotTypes": [
|
||||
"players"
|
||||
],
|
||||
"operationKeys": [
|
||||
"reward.deliver",
|
||||
"player.notify"
|
||||
],
|
||||
"featureKeys": [
|
||||
"reward.delivery"
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageKey": "workflows",
|
||||
"queryTemplateKeys": [
|
||||
"scum.player.profile",
|
||||
"scum.squads",
|
||||
"scum.squad-members",
|
||||
"scum.vehicles",
|
||||
"scum.flags",
|
||||
"scum.positions"
|
||||
],
|
||||
"operationKeys": [
|
||||
"player.fame.set",
|
||||
"player.currency.normal.set",
|
||||
"player.currency.gold.set",
|
||||
"player.notify",
|
||||
"reward.deliver",
|
||||
"player.attribute.855.set"
|
||||
],
|
||||
"featureKeys": [
|
||||
"player.intelligence",
|
||||
"reward.delivery",
|
||||
"state.patch",
|
||||
"vehicle.spawn",
|
||||
"trajectory.collect"
|
||||
]
|
||||
}
|
||||
],
|
||||
"companion": {
|
||||
@@ -360,41 +666,179 @@
|
||||
"status": "actions/status.json"
|
||||
},
|
||||
"assetFiles": [
|
||||
{ "path": "actions/install.json", "mode": 384 },
|
||||
{ "path": "actions/start.json", "mode": 384 },
|
||||
{ "path": "actions/stop.json", "mode": 384 },
|
||||
{ "path": "actions/restart.json", "mode": 384 },
|
||||
{ "path": "actions/status.json", "mode": 384 },
|
||||
{ "path": "bin/scum-install-update.cmd", "mode": 448 },
|
||||
{ "path": "bin/scum-start.cmd", "mode": 448 }
|
||||
{
|
||||
"path": "actions/install.json",
|
||||
"mode": 384
|
||||
},
|
||||
{
|
||||
"path": "actions/start.json",
|
||||
"mode": 384
|
||||
},
|
||||
{
|
||||
"path": "actions/stop.json",
|
||||
"mode": 384
|
||||
},
|
||||
{
|
||||
"path": "actions/restart.json",
|
||||
"mode": 384
|
||||
},
|
||||
{
|
||||
"path": "actions/status.json",
|
||||
"mode": 384
|
||||
},
|
||||
{
|
||||
"path": "bin/scum-install-update.cmd",
|
||||
"mode": 448
|
||||
},
|
||||
{
|
||||
"path": "bin/scum-start.cmd",
|
||||
"mode": 448
|
||||
}
|
||||
],
|
||||
"productionLifecycle": {
|
||||
"operations": ["install", "enable", "disable", "upgrade", "rollback", "retire", "dependency-check"],
|
||||
"operations": [
|
||||
"install",
|
||||
"enable",
|
||||
"disable",
|
||||
"upgrade",
|
||||
"rollback",
|
||||
"retire",
|
||||
"dependency-check"
|
||||
],
|
||||
"dependencyPolicy": "required",
|
||||
"approvalRequired": ["disable", "rollback", "retire"]
|
||||
"approvalRequired": [
|
||||
"disable",
|
||||
"rollback",
|
||||
"retire"
|
||||
]
|
||||
},
|
||||
"pages": [
|
||||
{ "key": "files-config", "title": "文件管理", "path": "/files-config", "bundleKey": "scum-server-plugin", "bundleVersion": "1.0.3", "bundleIntegritySha256": "sha256:797c4e303c102f0316e71e4e5bda50a6ca96506a7cb368a42ecf858b236609b2", "permissions": ["server.read", "server.files.read", "server.files.write", "server.logs.read", "server.game-client.read", "server.game-client.command", "server.game-client.maintenance"], "bridgeActions": ["server.instances.read", "files.request", "logs.query"], "featureKeys": ["config.manage"] },
|
||||
{ "key": "players", "title": "用户管理", "path": "/players", "bundleKey": "scum-server-plugin", "bundleVersion": "1.0.3", "bundleIntegritySha256": "sha256:797c4e303c102f0316e71e4e5bda50a6ca96506a7cb368a42ecf858b236609b2", "permissions": ["server.read", "server.game-client.read", "server.game-client.command", "server.game-client.maintenance"], "bridgeActions": ["server.instances.read"], "featureKeys": ["player.intelligence", "state.patch"] },
|
||||
{ "key": "squads", "title": "队伍管理", "path": "/squads", "bundleKey": "scum-server-plugin", "bundleVersion": "1.0.3", "bundleIntegritySha256": "sha256:797c4e303c102f0316e71e4e5bda50a6ca96506a7cb368a42ecf858b236609b2", "permissions": ["server.read", "server.game-client.read"], "bridgeActions": ["server.instances.read"], "featureKeys": ["player.intelligence"] },
|
||||
{ "key": "live-map", "title": "实时地图", "path": "/live-map", "bundleKey": "scum-server-plugin", "bundleVersion": "1.0.3", "bundleIntegritySha256": "sha256:797c4e303c102f0316e71e4e5bda50a6ca96506a7cb368a42ecf858b236609b2", "permissions": ["server.read", "server.game-client.read"], "bridgeActions": ["server.instances.read"], "featureKeys": ["trajectory.collect"] },
|
||||
{ "key": "gifts", "title": "礼包管理", "path": "/gifts", "bundleKey": "scum-server-plugin", "bundleVersion": "1.0.3", "bundleIntegritySha256": "sha256:797c4e303c102f0316e71e4e5bda50a6ca96506a7cb368a42ecf858b236609b2", "permissions": ["server.read", "server.game-client.read", "server.game-client.command"], "bridgeActions": ["server.instances.read"], "featureKeys": ["reward.delivery"] }
|
||||
{
|
||||
"key": "players",
|
||||
"title": "用户管理",
|
||||
"path": "/players",
|
||||
"bundleKey": "scum-server-plugin",
|
||||
"bundleVersion": "1.0.3",
|
||||
"bundleIntegritySha256": "sha256:3488b316d909e597024f8f31c7bc96ab8019f643d74a528dc442d3df0dc3d54e",
|
||||
"permissions": [
|
||||
"server.read",
|
||||
"server.game-client.read",
|
||||
"server.game-client.command",
|
||||
"server.game-client.maintenance"
|
||||
],
|
||||
"bridgeActions": [
|
||||
"server.instances.read",
|
||||
"remote.access.request"
|
||||
],
|
||||
"featureKeys": [
|
||||
"player.intelligence",
|
||||
"state.patch"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "squads",
|
||||
"title": "队伍管理",
|
||||
"path": "/squads",
|
||||
"bundleKey": "scum-server-plugin",
|
||||
"bundleVersion": "1.0.3",
|
||||
"bundleIntegritySha256": "sha256:3488b316d909e597024f8f31c7bc96ab8019f643d74a528dc442d3df0dc3d54e",
|
||||
"permissions": [
|
||||
"server.read",
|
||||
"server.game-client.read"
|
||||
],
|
||||
"bridgeActions": [
|
||||
"server.instances.read",
|
||||
"remote.access.request"
|
||||
],
|
||||
"featureKeys": [
|
||||
"player.intelligence"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "live-map",
|
||||
"title": "实时地图",
|
||||
"path": "/live-map",
|
||||
"bundleKey": "scum-server-plugin",
|
||||
"bundleVersion": "1.0.3",
|
||||
"bundleIntegritySha256": "sha256:3488b316d909e597024f8f31c7bc96ab8019f643d74a528dc442d3df0dc3d54e",
|
||||
"permissions": [
|
||||
"server.read",
|
||||
"server.game-client.read"
|
||||
],
|
||||
"bridgeActions": [
|
||||
"server.instances.read",
|
||||
"remote.access.request"
|
||||
],
|
||||
"featureKeys": [
|
||||
"trajectory.collect"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "gifts",
|
||||
"title": "礼包管理",
|
||||
"path": "/gifts",
|
||||
"bundleKey": "scum-server-plugin",
|
||||
"bundleVersion": "1.0.3",
|
||||
"bundleIntegritySha256": "sha256:3488b316d909e597024f8f31c7bc96ab8019f643d74a528dc442d3df0dc3d54e",
|
||||
"permissions": [
|
||||
"server.read",
|
||||
"server.game-client.read",
|
||||
"server.game-client.command"
|
||||
],
|
||||
"bridgeActions": [
|
||||
"server.instances.read"
|
||||
],
|
||||
"featureKeys": [
|
||||
"reward.delivery"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "workflows",
|
||||
"title": "Workflow 状态",
|
||||
"path": "/workflows",
|
||||
"bundleKey": "scum-server-plugin",
|
||||
"bundleVersion": "1.0.3",
|
||||
"bundleIntegritySha256": "sha256:3488b316d909e597024f8f31c7bc96ab8019f643d74a528dc442d3df0dc3d54e",
|
||||
"permissions": [
|
||||
"server.read",
|
||||
"server.game-client.read",
|
||||
"server.game-client.command",
|
||||
"server.game-client.maintenance"
|
||||
],
|
||||
"bridgeActions": [
|
||||
"server.instances.read",
|
||||
"remote.access.request"
|
||||
],
|
||||
"featureKeys": [
|
||||
"player.intelligence",
|
||||
"reward.delivery",
|
||||
"state.patch",
|
||||
"vehicle.spawn",
|
||||
"trajectory.collect"
|
||||
]
|
||||
}
|
||||
],
|
||||
"fileWorkspace": {
|
||||
"defaultDirectoryKey": "scum-config",
|
||||
"directories": [{ "key": "scum-config", "label": "服务器配置", "scope": "config" }, { "key": "scum-logs", "label": "日志文件", "scope": "logs" }],
|
||||
"files": [{ "key": "scum-server-settings", "directoryKey": "scum-config", "label": "ServerSettings.ini", "kind": "config", "editable": true }, { "key": "scum-game-config", "directoryKey": "scum-config", "label": "Game.ini", "kind": "config" }, { "key": "scum-engine-config", "directoryKey": "scum-config", "label": "Engine.ini", "kind": "config" }, { "key": "scum-game-user-settings", "directoryKey": "scum-config", "label": "GameUserSettings.ini", "kind": "config" }, { "key": "scum-admin-log", "directoryKey": "scum-logs", "label": "Admin.log", "kind": "log", "streamKey": "scum.admin" }, { "key": "scum-chat-log", "directoryKey": "scum-logs", "label": "Chat.log", "kind": "log", "streamKey": "scum.chat" }, { "key": "scum-kill-log", "directoryKey": "scum-logs", "label": "Kill.log", "kind": "log", "streamKey": "scum.kill" }, { "key": "scum-login-log", "directoryKey": "scum-logs", "label": "Login.log", "kind": "log", "streamKey": "scum.login" }, { "key": "scum-server-log", "directoryKey": "scum-logs", "label": "Server.log", "kind": "log", "streamKey": "scum.server" }],
|
||||
"configFields": [{ "key": "server-name", "fileKey": "scum-server-settings", "configKey": "ServerName", "label": "服务器名称", "description": "显示在服务器浏览器与玩家连接界面。", "control": "text", "defaultValue": "SCUM Server", "restartImpact": "restart-required" }, { "key": "game-port", "fileKey": "scum-server-settings", "configKey": "GamePort", "label": "游戏端口", "description": "玩家连接所使用的游戏端口。", "control": "port", "minimum": 1, "maximum": 65535, "defaultValue": "7779", "restartImpact": "restart-required" }, { "key": "query-port", "fileKey": "scum-server-settings", "configKey": "QueryPort", "label": "查询端口", "description": "服务器查询和状态发现所使用的端口。", "control": "port", "minimum": 1, "maximum": 65535, "defaultValue": "27015", "restartImpact": "restart-required" }, { "key": "max-players", "fileKey": "scum-server-settings", "configKey": "MaxPlayers", "label": "最大玩家数", "description": "允许同时进入服务器的玩家上限。", "control": "number", "minimum": 1, "maximum": 128, "defaultValue": "128", "restartImpact": "restart-required" }, { "key": "welcome-message", "fileKey": "scum-server-settings", "configKey": "WelcomeMessage", "label": "欢迎消息", "description": "登录成功后由已声明的服务器扩展显示给玩家。", "control": "text", "defaultValue": "", "restartImpact": "none" }]
|
||||
},
|
||||
"ai": {
|
||||
"purposes": [
|
||||
"config.suggest",
|
||||
"logs.diagnose"
|
||||
"config.suggest"
|
||||
],
|
||||
"mediation": "platform",
|
||||
"configWritePolicy": "review-required"
|
||||
},
|
||||
"mapTrajectories": { "mapId": "scum-island", "mapVersion": "0.9", "worldMinX": -500000, "worldMinY": -500000, "worldMaxX": 500000, "worldMaxY": 500000, "imageWidth": 2048, "imageHeight": 2048, "precision": 1, "sampleDistance": 4, "sampleIntervalSeconds": 20, "retentionSeconds": 604800 },
|
||||
"mapTrajectories": {
|
||||
"mapId": "scum-island",
|
||||
"mapVersion": "0.9",
|
||||
"worldMinX": -500000,
|
||||
"worldMinY": -500000,
|
||||
"worldMaxX": 500000,
|
||||
"worldMaxY": 500000,
|
||||
"imageWidth": 2048,
|
||||
"imageHeight": 2048,
|
||||
"precision": 1,
|
||||
"sampleDistance": 4,
|
||||
"sampleIntervalSeconds": 20,
|
||||
"retentionSeconds": 604800
|
||||
},
|
||||
"runtimeProfiles": {
|
||||
"discovery": [
|
||||
{
|
||||
@@ -591,10 +1035,46 @@
|
||||
}
|
||||
],
|
||||
"logEvents": [
|
||||
{ "key": "scum-player-position", "title": "SCUM player position", "sourceKey": "scum-client-events", "eventType": "player.position", "permission": "server.logs.read", "schemaRef": "schemas/log-events/player-position.event.schema.json", "retentionDays": 7, "severity": "info" },
|
||||
{ "key": "scum-vehicle-position", "title": "SCUM vehicle position", "sourceKey": "scum-client-events", "eventType": "vehicle.position", "permission": "server.logs.read", "schemaRef": "schemas/log-events/vehicle-position.event.schema.json", "retentionDays": 7, "severity": "info" },
|
||||
{ "key": "scum-player-vehicle-enter", "title": "SCUM player vehicle enter", "sourceKey": "scum-client-events", "eventType": "player.vehicle.enter", "permission": "server.logs.read", "schemaRef": "schemas/log-events/player-vehicle-enter.event.schema.json", "retentionDays": 7, "severity": "info" },
|
||||
{ "key": "scum-player-vehicle-leave", "title": "SCUM player vehicle leave", "sourceKey": "scum-client-events", "eventType": "player.vehicle.leave", "permission": "server.logs.read", "schemaRef": "schemas/log-events/player-vehicle-leave.event.schema.json", "retentionDays": 7, "severity": "info" },
|
||||
{
|
||||
"key": "scum-player-position",
|
||||
"title": "SCUM player position",
|
||||
"sourceKey": "scum-client-events",
|
||||
"eventType": "player.position",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/player-position.event.schema.json",
|
||||
"retentionDays": 7,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-vehicle-position",
|
||||
"title": "SCUM vehicle position",
|
||||
"sourceKey": "scum-client-events",
|
||||
"eventType": "vehicle.position",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/vehicle-position.event.schema.json",
|
||||
"retentionDays": 7,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-player-vehicle-enter",
|
||||
"title": "SCUM player vehicle enter",
|
||||
"sourceKey": "scum-client-events",
|
||||
"eventType": "player.vehicle.enter",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/player-vehicle-enter.event.schema.json",
|
||||
"retentionDays": 7,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-player-vehicle-leave",
|
||||
"title": "SCUM player vehicle leave",
|
||||
"sourceKey": "scum-client-events",
|
||||
"eventType": "player.vehicle.leave",
|
||||
"permission": "server.logs.read",
|
||||
"schemaRef": "schemas/log-events/player-vehicle-leave.event.schema.json",
|
||||
"retentionDays": 7,
|
||||
"severity": "info"
|
||||
},
|
||||
{
|
||||
"key": "scum-chat",
|
||||
"title": "SCUM chat message",
|
||||
@@ -718,19 +1198,26 @@
|
||||
"key": "scum-database",
|
||||
"kind": "sqlite",
|
||||
"targetKey": "scum-database",
|
||||
"capabilities": ["remote.run.protected.sql"]
|
||||
"capabilities": [
|
||||
"remote.run.db.sqlite.query",
|
||||
"remote.run.protected.sql"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "scum-management",
|
||||
"kind": "rcon",
|
||||
"targetKey": "scum-management",
|
||||
"capabilities": ["remote.run.protected.rcon"]
|
||||
"capabilities": [
|
||||
"remote.run.protected.rcon"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "scum-program",
|
||||
"kind": "program",
|
||||
"targetKey": "scum-program",
|
||||
"capabilities": ["remote.run.program.command"]
|
||||
"capabilities": [
|
||||
"remote.run.program.command"
|
||||
]
|
||||
}
|
||||
],
|
||||
"clientManagers": [
|
||||
@@ -776,7 +1263,15 @@
|
||||
]
|
||||
},
|
||||
"lifecycle": {
|
||||
"actions": ["start", "stop", "restart", "status", "update", "rollback", "uninstall"],
|
||||
"actions": [
|
||||
"start",
|
||||
"stop",
|
||||
"restart",
|
||||
"status",
|
||||
"update",
|
||||
"rollback",
|
||||
"uninstall"
|
||||
],
|
||||
"startupTimeoutSeconds": 60,
|
||||
"stopTimeoutSeconds": 30
|
||||
},
|
||||
@@ -785,7 +1280,14 @@
|
||||
"intervalSeconds": 30,
|
||||
"degradedAfterSeconds": 90,
|
||||
"offlineAfterSeconds": 120,
|
||||
"requiredCapabilities": ["component.register", "component.heartbeat", "component.health", "component.control", "game-client.bridge", "logs.stream"]
|
||||
"requiredCapabilities": [
|
||||
"component.register",
|
||||
"component.heartbeat",
|
||||
"component.health",
|
||||
"component.control",
|
||||
"game-client.bridge",
|
||||
"logs.stream"
|
||||
]
|
||||
},
|
||||
"updatePolicy": {
|
||||
"strategy": "manual-staged",
|
||||
|
||||
Reference in New Issue
Block a user