Files
browser/plugins/examples/scum-server-plugin/manifest.json
T

1257 lines
42 KiB
JSON

{
"$schema": "../../manifests/game-plugin.manifest.schema.json",
"id": "game.scum",
"name": "SCUM Server",
"description": "First-party SCUM game server operations plugin with platform-mediated lifecycle and companion bridge support.",
"version": "0.1.6",
"kind": "game-plugin",
"tags": [
"scum",
"survival",
"dedicated-server",
"game-operations",
"companion-client"
],
"server": {
"type": "scum",
"displayName": "SCUM Dedicated Server",
"supportedOS": [
"windows",
"linux"
],
"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"
}
]
},
"capabilities": [
"process.install",
"process.start",
"process.stop",
"process.restart",
"process.status",
"files.list",
"files.read",
"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.db.sqlite.probe",
"remote.run.db.sqlite.query",
"remote.run.process.start",
"remote.run.process.stop",
"remote.run.logs.transfer",
"remote.run.protected.sql",
"remote.run.protected.rcon",
"remote.run.program.command",
"client-manager.deploy",
"client-manager.control",
"client-manager.update",
"client-manager.rollback",
"client-manager.uninstall",
"artifacts.read",
"artifacts.write",
"ai.invoke"
],
"remoteAccess": {
"methods": [
"ftp",
"rsync",
"run"
],
"runCapabilities": [
"remote.run.files.read",
"remote.run.files.write",
"remote.run.db.sqlite.probe",
"remote.run.db.sqlite.query",
"remote.run.process.start",
"remote.run.process.stop",
"remote.run.logs.transfer",
"remote.run.protected.sql",
"remote.run.protected.rcon",
"remote.run.program.command"
],
"databaseEngines": [
"sqlite"
],
"logTransfer": true
},
"bridge": {
"actions": [
"server.instances.read",
"jobs.dispatch",
"artifacts.open",
"remote.access.request",
"ai.invoke",
"run.distribution.request",
"dependencies.request",
"client-manager.request",
"plugin-lifecycle.request"
]
},
"gameClientBridge": {
"commands": [
{
"type": "announcement.send",
"title": "Send SCUM announcement",
"permission": "server.game-client.command",
"approvalLevel": "operator",
"payloadSchemaRef": "schemas/bridge/announcement.payload.schema.json",
"resultSchemaRef": "schemas/bridge/announcement.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 4096
},
{
"type": "companion.diagnostics",
"title": "Collect companion diagnostics",
"permission": "server.game-client.read",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/diagnostics.payload.schema.json",
"resultSchemaRef": "schemas/bridge/diagnostics.result.schema.json",
"timeoutSeconds": 30,
"maxPayloadBytes": 2048
},
{
"type": "player.lookup",
"title": "Look up SCUM player",
"permission": "server.game-client.read",
"approvalLevel": "none",
"payloadSchemaRef": "schemas/bridge/player-lookup.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-lookup.result.schema.json",
"timeoutSeconds": 30,
"maxPayloadBytes": 4096
},
{
"type": "reward.deliver",
"title": "Deliver SCUM reward",
"permission": "server.game-client.command",
"approvalLevel": "operator",
"payloadSchemaRef": "schemas/bridge/reward-deliver.payload.schema.json",
"resultSchemaRef": "schemas/bridge/reward-deliver.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 4096
},
{
"type": "player.notify",
"title": "Notify SCUM player about approved gift",
"permission": "server.game-client.command",
"approvalLevel": "operator",
"payloadSchemaRef": "schemas/bridge/player-notify.payload.schema.json",
"resultSchemaRef": "schemas/bridge/player-notify.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 2048
},
{
"type": "vehicle.spawn",
"title": "Spawn catalogued SCUM vehicle",
"permission": "server.game-client.command",
"approvalLevel": "operator",
"payloadSchemaRef": "schemas/bridge/vehicle-spawn.payload.schema.json",
"resultSchemaRef": "schemas/bridge/vehicle-spawn.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 1024
},
{
"type": "event.start",
"title": "Start SCUM event",
"permission": "server.game-client.command",
"approvalLevel": "operator",
"payloadSchemaRef": "schemas/bridge/event-start.payload.schema.json",
"resultSchemaRef": "schemas/bridge/event-start.result.schema.json",
"timeoutSeconds": 60,
"maxPayloadBytes": 4096
},
{
"type": "restart.prepare",
"title": "Prepare SCUM restart",
"permission": "server.game-client.maintenance",
"approvalLevel": "operator",
"payloadSchemaRef": "schemas/bridge/restart-prepare.payload.schema.json",
"resultSchemaRef": "schemas/bridge/restart-prepare.result.schema.json",
"timeoutSeconds": 120,
"maxPayloadBytes": 4096
},
{
"type": "maintenance.prepare",
"title": "Prepare SCUM maintenance",
"permission": "server.game-client.maintenance",
"approvalLevel": "platform-admin",
"payloadSchemaRef": "schemas/bridge/maintenance-prepare.payload.schema.json",
"resultSchemaRef": "schemas/bridge/maintenance-prepare.result.schema.json",
"timeoutSeconds": 120,
"maxPayloadBytes": 4096
},
{
"type": "game-state.patch",
"title": "Patch SCUM player state",
"permission": "server.game-client.maintenance",
"approvalLevel": "platform-admin",
"payloadSchemaRef": "schemas/bridge/game-state-patch.payload.schema.json",
"resultSchemaRef": "schemas/bridge/game-state-patch.result.schema.json",
"timeoutSeconds": 120,
"maxPayloadBytes": 4096
}
],
"snapshots": [
{
"type": "companion.health",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/companion-health.snapshot.schema.json",
"keepForSeconds": 604800,
"maxRecords": 1000
},
{
"type": "semantic.events",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/semantic-events.snapshot.schema.json",
"keepForSeconds": 604800,
"maxRecords": 1000
},
{
"type": "online.sessions",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/online-sessions.snapshot.schema.json",
"keepForSeconds": 86400,
"maxRecords": 1000
},
{
"type": "players",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/players.snapshot.schema.json",
"keepForSeconds": 86400,
"maxRecords": 1000
},
{
"type": "player.state",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/player-state.snapshot.schema.json",
"keepForSeconds": 86400,
"maxRecords": 1000
},
{
"type": "squads",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/squads.snapshot.schema.json",
"keepForSeconds": 86400,
"maxRecords": 1000
},
{
"type": "vehicles",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/vehicles.snapshot.schema.json",
"keepForSeconds": 86400,
"maxRecords": 1000
},
{
"type": "flags",
"schemaVersion": "1",
"schemaRef": "schemas/bridge/flags.snapshot.schema.json",
"keepForSeconds": 86400,
"maxRecords": 1000
}
],
"queryTemplates": [],
"operationTemplates": [],
"commandRetentionSeconds": 604800,
"maxCommands": 1000,
"features": [
{
"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"
]
}
],
"pages": [
{
"pageKey": "players",
"snapshotTypes": [
"players",
"online.sessions"
],
"featureKeys": []
},
{
"pageKey": "squads",
"snapshotTypes": [
"squads",
"flags"
],
"featureKeys": []
},
{
"pageKey": "live-map",
"snapshotTypes": [
"players",
"vehicles",
"flags"
],
"featureKeys": []
},
{
"pageKey": "gifts",
"snapshotTypes": [
"players"
],
"featureKeys": []
}
],
"companion": {
"profileKey": "scum-client-manager",
"configTemplateKey": "client-config",
"configSchemaRef": "schemas/companion/config.schema.json",
"configFormat": "yaml",
"platformBaseUrlSource": "run-control",
"registrationProof": "hmac-sha256",
"proofMaterialSource": "component-package",
"proofMaterialEnv": "SCUM_COMPONENT_PROOF",
"sessionMode": "component-session",
"tlsPolicy": "verify-system-roots",
"heartbeatIntervalSeconds": 30,
"commandPollIntervalSeconds": 5,
"requestTimeoutSeconds": 15
}
},
"scumLiveData": {
"schemaVersion": "1",
"probe": {
"capability": "remote.run.db.sqlite.probe",
"targetKey": "scum-database",
"bounds": {
"maxObjects": 256,
"maxColumnsPerObject": 128,
"maxIndexesPerObject": 64,
"maxForeignKeys": 64,
"maxCardinalityReads": 64,
"maxSampleRows": 3,
"timeoutMs": 5000,
"maxResultBytes": 524288
}
},
"capabilityGates": [
{ "capability": "schema-probe", "gate": "enabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "evidenceStatus": "compatible", "safeReason": "当前绑定 durable schema probe 已返回匹配的 redacted schema fingerprint。" },
{ "capability": "players.read", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "requiredAssetDigests": ["sha256:b3359f3c5939a410a98ddfccb920791044df76da4f8e5df4e726a9fe58423520", "sha256:d9c262d0b4f1b600b608c8279a6dfb052de1a605fe1286ddc15f74892eace4fc"], "evidenceStatus": "missing", "safeReason": "schema 和 asset 已匹配;等待 SQLite-template terminal envelope 验证后启用。" },
{ "capability": "player-details.read", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "requiredAssetDigests": ["sha256:c980807b736f8988cd7c37ecb97c72e5e707050450ebc8c539dccec06c60e1f8", "sha256:919c5f68f74fdb0743fa5d9b59aeecd003dcdac5bc51e52d3a486ed1045c9a48"], "evidenceStatus": "missing", "safeReason": "详情和经济只读 asset 已匹配;等待 terminal envelope 验证后启用。" },
{ "capability": "squads.read", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "requiredAssetDigests": ["sha256:e7746ac4f4ea86038c1a035087154d4dc3a622fdb14b3ad94b45fec819486f50"], "evidenceStatus": "missing", "safeReason": "队伍只读 asset 已匹配;rank 和 leader 语义保持 nullable,等待 envelope 验证。" },
{ "capability": "squad-members.read", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "requiredAssetDigests": ["sha256:e49b634d8a63b0d1f979706ff4a99050c11b5661d494f72897e89da6554f0654"], "evidenceStatus": "missing", "safeReason": "成员 join asset 已匹配;等待 SQLite-template terminal envelope 验证后启用。" },
{ "capability": "vehicles.read", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "requiredAssetDigests": ["sha256:e2362451c3a4392adeca38c5e81055674f78e982cee710a33717b3d06bb78dc3"], "evidenceStatus": "missing", "safeReason": "载具 identity 和坐标 asset 已匹配;ownership 保持 nullable,等待 envelope 验证。" },
{ "capability": "flags.read", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "requiredAssetDigests": ["sha256:42ddc6e8a237b7d576834845d1b1d5b2a2fc087668579eac0e3dc08ce2941000"], "evidenceStatus": "missing", "safeReason": "旗子和 base join asset 已匹配;territory 语义保持 gated,等待 envelope 验证。" },
{ "capability": "positions.read", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0", "requiredAssetDigests": ["sha256:88629de001e6882ce9e72bf5f0b17770d408c665869d04cd768c2e3fdfb9f790", "sha256:74800836553c7e4372a0747c5e9511adcee940b057194488bbf65bf164df372b", "sha256:f1941109167a86818e9e71996821884aeb8bd7e863584454b891e525695ba478"], "evidenceStatus": "missing", "safeReason": "坐标 query 和 map transform 已匹配;等待 envelope 验证且不声明 sub-10s cadence。" },
{ "capability": "profile-xml.write", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "evidenceStatus": "missing", "safeReason": "等待 XML patch safety、backup、offline、readback 和 855 映射验证。" },
{ "capability": "economy-command.write", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "evidenceStatus": "missing", "safeReason": "等待 Fame 和 currency command 的确认读回语义验证。" },
{ "capability": "gift-command.write", "gate": "disabled", "adapterVersion": "scum-live-data-v1", "evidenceStatus": "missing", "safeReason": "等待 gift catalog、transport 和 conclusive receipt 验证。" }
],
"logParsers": [
{
"key": "scum-login-log-login-parser",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/login-log-parser.json",
"digest": "sha256:264835fb36255071fed46dd50724ec511986db901ac8056b08ddafb10f5f0056",
"parserVersion": "scum-login-log-v1",
"sourceKey": "scum-login-events",
"eventType": "scum.login",
"eventSchemaRef": "schemas/log-events/login.event.schema.json",
"maxLineBytes": 4096,
"cursorPolicy": "source-generation-sequence",
"privacy": { "stripNetworkIdentifiers": true, "logicalEventIdentity": "native-or-sanitized-fields" }
},
{
"key": "scum-login-log-logout-parser",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/login-log-parser.json",
"digest": "sha256:264835fb36255071fed46dd50724ec511986db901ac8056b08ddafb10f5f0056",
"parserVersion": "scum-login-log-v1",
"sourceKey": "scum-login-events",
"eventType": "scum.logout",
"eventSchemaRef": "schemas/log-events/logout.event.schema.json",
"maxLineBytes": 4096,
"cursorPolicy": "source-generation-sequence",
"privacy": { "stripNetworkIdentifiers": true, "logicalEventIdentity": "native-or-sanitized-fields" }
}
],
"sqliteQueries": [
{
"key": "scum-players-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/players-read.json",
"digest": "sha256:b3359f3c5939a410a98ddfccb920791044df76da4f8e5df4e726a9fe58423520",
"capability": "players.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/players-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/players-read.result.schema.json",
"maxRows": 100,
"timeoutMs": 2000,
"maxResultBytes": 65536
},
{
"key": "scum-player-details-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/player-details-read.json",
"digest": "sha256:c980807b736f8988cd7c37ecb97c72e5e707050450ebc8c539dccec06c60e1f8",
"capability": "player-details.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/player-details-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/player-details-read.result.schema.json",
"maxRows": 1,
"timeoutMs": 2000,
"maxResultBytes": 32768
},
{
"key": "scum-player-economy-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/player-economy-read.json",
"digest": "sha256:919c5f68f74fdb0743fa5d9b59aeecd003dcdac5bc51e52d3a486ed1045c9a48",
"capability": "player-details.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/player-economy-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/player-economy-read.result.schema.json",
"maxRows": 16,
"timeoutMs": 2000,
"maxResultBytes": 32768
},
{
"key": "scum-player-session-enrichment-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/player-session-enrichment-read.json",
"digest": "sha256:d9c262d0b4f1b600b608c8279a6dfb052de1a605fe1286ddc15f74892eace4fc",
"capability": "players.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/player-session-enrichment-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/player-session-enrichment-read.result.schema.json",
"maxRows": 1,
"timeoutMs": 2000,
"maxResultBytes": 32768
},
{
"key": "scum-squads-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/squads-read.json",
"digest": "sha256:e7746ac4f4ea86038c1a035087154d4dc3a622fdb14b3ad94b45fec819486f50",
"capability": "squads.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/squads-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/squads-read.result.schema.json",
"maxRows": 100,
"timeoutMs": 2000,
"maxResultBytes": 65536
},
{
"key": "scum-squad-members-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/squad-members-read.json",
"digest": "sha256:e49b634d8a63b0d1f979706ff4a99050c11b5661d494f72897e89da6554f0654",
"capability": "squad-members.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/squad-members-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/squad-members-read.result.schema.json",
"maxRows": 500,
"timeoutMs": 2000,
"maxResultBytes": 131072
},
{
"key": "scum-vehicles-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/vehicles-read.json",
"digest": "sha256:e2362451c3a4392adeca38c5e81055674f78e982cee710a33717b3d06bb78dc3",
"capability": "vehicles.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/vehicles-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/vehicles-read.result.schema.json",
"maxRows": 500,
"timeoutMs": 2000,
"maxResultBytes": 262144
},
{
"key": "scum-flags-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/flags-read.json",
"digest": "sha256:42ddc6e8a237b7d576834845d1b1d5b2a2fc087668579eac0e3dc08ce2941000",
"capability": "flags.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/flags-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/flags-read.result.schema.json",
"maxRows": 200,
"timeoutMs": 2000,
"maxResultBytes": 65536
},
{
"key": "scum-positions-read",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/queries/positions-read.json",
"digest": "sha256:88629de001e6882ce9e72bf5f0b17770d408c665869d04cd768c2e3fdfb9f790",
"capability": "positions.read",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"transportKey": "scum-database",
"targetKey": "scum-database",
"parameterSchemaRef": "schemas/scum-live/positions-read.parameters.schema.json",
"resultSchemaRef": "schemas/scum-live/positions-read.result.schema.json",
"maxRows": 500,
"timeoutMs": 2000,
"maxResultBytes": 262144
}
],
"mapAssets": [
{
"key": "scum-current-service-coordinate-map",
"adapterVersion": "scum-live-data-v1",
"assetPath": "assets/scum-live/map/current-service-map.json",
"digest": "sha256:74800836553c7e4372a0747c5e9511adcee940b057194488bbf65bf164df372b",
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
"metadataSchemaRef": "schemas/scum-live/map-metadata.schema.json",
"transformAssetPath": "assets/scum-live/map/current-service-transform.json",
"transformDigest": "sha256:f1941109167a86818e9e71996821884aeb8bd7e863584454b891e525695ba478",
"worldBounds": {
"minX": -901009.4375,
"minY": -883992.5625,
"maxX": 612580.0625,
"maxY": 615977.375
},
"image": {
"width": 4096,
"height": 4096
}
}
]
},
"permissions": [
"server.create",
"server.read",
"server.lifecycle",
"server.files.read",
"server.files.write",
"server.logs.read",
"server.artifacts.read",
"server.artifacts.write",
"server.remote.access",
"ai.invoke",
"server.run.distribution",
"server.dependencies.manage",
"server.client-manager.manage",
"server.game-client.read",
"server.game-client.command",
"server.game-client.maintenance"
],
"actions": {
"install": "actions/install.json",
"start": "actions/start.json",
"stop": "actions/stop.json",
"restart": "actions/restart.json",
"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": "assets/scum-live/login-log-parser.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/players-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/player-details-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/player-economy-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/player-session-enrichment-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/squads-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/squad-members-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/vehicles-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/flags-read.json",
"mode": 384
},
{
"path": "assets/scum-live/queries/positions-read.json",
"mode": 384
},
{
"path": "assets/scum-live/map/current-service-map.json",
"mode": 384
},
{
"path": "assets/scum-live/map/current-service-transform.json",
"mode": 384
}
],
"productionLifecycle": {
"operations": [
"install",
"enable",
"disable",
"upgrade",
"rollback",
"retire",
"dependency-check"
],
"dependencyPolicy": "required",
"approvalRequired": [
"disable",
"rollback",
"retire"
]
},
"pages": [
{
"key": "players",
"title": "用户管理",
"path": "/players",
"bundleKey": "scum-server-plugin",
"bundleVersion": "1.0.4",
"bundleIntegritySha256": "sha256:8b57e66b529dd35cd277ee2e5b839d8844c557b690f1d57db3ec026c26b713dc",
"permissions": [
"server.read",
"server.game-client.read",
"server.game-client.command",
"server.game-client.maintenance"
],
"bridgeActions": [
"server.instances.read"
],
"featureKeys": []
},
{
"key": "squads",
"title": "队伍管理",
"path": "/squads",
"bundleKey": "scum-server-plugin",
"bundleVersion": "1.0.4",
"bundleIntegritySha256": "sha256:8b57e66b529dd35cd277ee2e5b839d8844c557b690f1d57db3ec026c26b713dc",
"permissions": [
"server.read",
"server.game-client.read"
],
"bridgeActions": [
"server.instances.read"
],
"featureKeys": []
},
{
"key": "live-map",
"title": "实时地图",
"path": "/live-map",
"bundleKey": "scum-server-plugin",
"bundleVersion": "1.0.4",
"bundleIntegritySha256": "sha256:8b57e66b529dd35cd277ee2e5b839d8844c557b690f1d57db3ec026c26b713dc",
"permissions": [
"server.read",
"server.game-client.read"
],
"bridgeActions": [
"server.instances.read"
],
"featureKeys": []
},
{
"key": "gifts",
"title": "礼包管理",
"path": "/gifts",
"bundleKey": "scum-server-plugin",
"bundleVersion": "1.0.4",
"bundleIntegritySha256": "sha256:8b57e66b529dd35cd277ee2e5b839d8844c557b690f1d57db3ec026c26b713dc",
"permissions": [
"server.read",
"server.game-client.read",
"server.game-client.command"
],
"bridgeActions": [
"server.instances.read"
],
"featureKeys": []
}
],
"ai": {
"purposes": [
"config.suggest"
],
"mediation": "platform",
"configWritePolicy": "review-required"
},
"runtimeProfiles": {
"discovery": [
{
"key": "steamcmd",
"kind": "command.version",
"targetKey": "steamcmd",
"required": true
},
{
"key": "scum-install",
"kind": "file.exists",
"targetKey": "server/install-root",
"required": true,
"platforms": [
"windows"
]
}
],
"lifecycleProfiles": [
{
"key": "run-local",
"mode": "local-process",
"capabilities": [
"process.install",
"process.start",
"process.stop",
"process.restart",
"process.status",
"remote.run.process.start",
"remote.run.process.stop"
],
"actionRefs": {
"install": "actions/install.json",
"start": "actions/start.json",
"stop": "actions/stop.json",
"restart": "actions/restart.json",
"status": "actions/status.json"
},
"transportKeys": [
"server-files"
],
"platforms": [
"windows"
]
},
{
"key": "scum-client",
"mode": "custom-client",
"capabilities": [
"client-manager.deploy",
"client-manager.control",
"logs.read"
],
"clientManagerRef": "scum-client-manager",
"platforms": [
"windows"
]
}
],
"dependencyProbes": [
{
"key": "steamcmd",
"kind": "command.version",
"targetKey": "steamcmd",
"required": true,
"platforms": [
"windows",
"linux"
]
},
{
"key": "sqlite",
"kind": "package.installed",
"targetKey": "sqlite-driver",
"required": false,
"platforms": [
"windows",
"linux"
]
}
],
"installPlans": [
{
"key": "install-scum-server",
"title": "Install SCUM Dedicated Server",
"platforms": [
"windows"
],
"steps": [
{
"type": "steamcmd-app",
"targetKey": "server/install-root",
"packageManager": "steamcmd",
"packageName": "3792580"
}
]
},
{
"key": "install-steamcmd-linux",
"title": "Install SteamCMD",
"platforms": [
"linux"
],
"steps": [
{
"type": "package",
"targetKey": "steamcmd",
"packageManager": "apt",
"packageName": "steamcmd"
}
]
}
],
"logSources": [
{
"key": "scum-console-stdout",
"kind": "process.stdout",
"targetKey": "scum/server-process",
"streamKey": "scum.console.stdout",
"cursorKind": "sequence",
"retentionDays": 30
},
{
"key": "scum-console-stderr",
"kind": "process.stderr",
"targetKey": "scum/server-process",
"streamKey": "scum.console.stderr",
"cursorKind": "sequence",
"retentionDays": 30
},
{
"key": "scum-chat-events",
"kind": "file.tail",
"targetKey": "logs/chat",
"streamKey": "scum.chat",
"cursorKind": "fingerprint",
"retentionDays": 90
},
{
"key": "scum-server-events",
"kind": "file.tail",
"targetKey": "logs/server",
"streamKey": "scum.server",
"cursorKind": "fingerprint",
"retentionDays": 90
},
{
"key": "scum-login-events",
"kind": "file.tail",
"targetKey": "logs/login",
"streamKey": "scum.login",
"cursorKind": "fingerprint",
"retentionDays": 90
},
{
"key": "scum-kill-events",
"kind": "file.tail",
"targetKey": "logs/kill",
"streamKey": "scum.kill",
"cursorKind": "fingerprint",
"retentionDays": 90
},
{
"key": "scum-trade-events",
"kind": "file.tail",
"targetKey": "logs/trade",
"streamKey": "scum.trade",
"cursorKind": "fingerprint",
"retentionDays": 90
},
{
"key": "scum-admin-events",
"kind": "file.tail",
"targetKey": "logs/admin",
"streamKey": "scum.admin",
"cursorKind": "fingerprint",
"retentionDays": 90
},
{
"key": "scum-performance-events",
"kind": "file.tail",
"targetKey": "logs/performance",
"streamKey": "scum.performance",
"cursorKind": "fingerprint",
"retentionDays": 30
},
{
"key": "scum-client-events",
"kind": "client-manager",
"targetKey": "scum-client-manager",
"streamKey": "scum.client",
"cursorKind": "sequence",
"retentionDays": 30
}
],
"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-chat",
"title": "SCUM chat message",
"sourceKey": "scum-chat-events",
"eventType": "scum.chat",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/chat.event.schema.json",
"retentionDays": 90,
"severity": "info"
},
{
"key": "scum-login",
"title": "SCUM player login",
"sourceKey": "scum-login-events",
"eventType": "scum.login",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/login.event.schema.json",
"retentionDays": 90,
"severity": "info"
},
{
"key": "scum-logout",
"title": "SCUM player logout",
"sourceKey": "scum-login-events",
"eventType": "scum.logout",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/logout.event.schema.json",
"retentionDays": 90,
"severity": "info"
},
{
"key": "scum-kill",
"title": "SCUM player kill",
"sourceKey": "scum-kill-events",
"eventType": "scum.kill",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/kill.event.schema.json",
"retentionDays": 90,
"severity": "info"
},
{
"key": "scum-trade",
"title": "SCUM trade activity",
"sourceKey": "scum-trade-events",
"eventType": "scum.trade",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/trade.event.schema.json",
"retentionDays": 90,
"severity": "info"
},
{
"key": "scum-mine",
"title": "SCUM mine activity",
"sourceKey": "scum-server-events",
"eventType": "scum.mine",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/mine.event.schema.json",
"retentionDays": 90,
"severity": "warning"
},
{
"key": "scum-unlock",
"title": "SCUM unlock activity",
"sourceKey": "scum-server-events",
"eventType": "scum.unlock",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/unlock.event.schema.json",
"retentionDays": 90,
"severity": "warning"
},
{
"key": "scum-admin",
"title": "SCUM admin activity",
"sourceKey": "scum-admin-events",
"eventType": "scum.admin",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/admin.event.schema.json",
"retentionDays": 90,
"severity": "warning"
},
{
"key": "scum-performance",
"title": "SCUM server performance",
"sourceKey": "scum-performance-events",
"eventType": "scum.performance",
"permission": "server.logs.read",
"schemaRef": "schemas/log-events/performance.event.schema.json",
"retentionDays": 30,
"severity": "info"
}
],
"transportProfiles": [
{
"key": "server-files",
"kind": "file",
"targetKey": "server-root",
"capabilities": [
"remote.run.files.read",
"remote.run.files.write"
]
},
{
"key": "ftp",
"kind": "ftp",
"targetKey": "ftp-root",
"capabilities": [
"remote.ftp.read",
"remote.ftp.write"
]
},
{
"key": "rsync",
"kind": "rsync",
"targetKey": "rsync-root",
"capabilities": [
"remote.rsync.read",
"remote.rsync.write"
]
},
{
"key": "scum-database",
"kind": "sqlite",
"targetKey": "scum-database",
"capabilities": [
"remote.run.db.sqlite.probe",
"remote.run.db.sqlite.query",
"remote.run.protected.sql"
]
},
{
"key": "scum-management",
"kind": "rcon",
"targetKey": "scum-management",
"capabilities": [
"remote.run.protected.rcon"
]
},
{
"key": "scum-program",
"kind": "program",
"targetKey": "scum-program",
"capabilities": [
"remote.run.program.command"
]
}
],
"dataTargets": [
{
"key": "scum-database",
"kind": "sqlite.snapshot",
"transportKey": "scum-database",
"sourceRootKey": "server-root",
"sourcePath": "SCUM/Saved/SaveFiles/SCUM.db",
"workspaceKey": "databases/scum-database",
"refreshPolicy": "on-demand-snapshot",
"maxBytes": 1073741824,
"platforms": [
"windows"
]
}
],
"clientManagers": [
{
"key": "scum-client-manager",
"displayName": "SCUM Client Manager",
"version": "1.0.0",
"repository": {
"url": "https://github.com/F88888/scum_client.git",
"revisionPolicy": "branch",
"branch": "main"
},
"supportedTargets": [
{
"os": "windows",
"arch": "amd64"
}
],
"build": {
"system": "go",
"entryRef": "main.go"
},
"configTemplates": [
{
"key": "client-config",
"templateRef": "config.yaml.example",
"outputRef": "config.yaml"
}
],
"outputArtifacts": [
"scum_client.exe"
],
"deployment": {
"mode": "run-supervised",
"executableRef": "scum_client.exe",
"autoStart": true,
"requiredRunCapabilities": [
"client-manager.deploy",
"client-manager.control",
"client-manager.update",
"client-manager.rollback",
"client-manager.uninstall"
]
},
"lifecycle": {
"actions": [
"start",
"stop",
"restart",
"status",
"update",
"rollback",
"uninstall"
],
"startupTimeoutSeconds": 60,
"stopTimeoutSeconds": 30
},
"health": {
"mode": "component-heartbeat",
"intervalSeconds": 30,
"degradedAfterSeconds": 90,
"offlineAfterSeconds": 120,
"requiredCapabilities": [
"component.register",
"component.heartbeat",
"component.health",
"component.control",
"game-client.bridge",
"logs.stream"
]
},
"updatePolicy": {
"strategy": "manual-staged",
"requireApproval": true,
"healthConfirmationSeconds": 60,
"retainPrevious": true
}
}
]
}
}