feat(scum): gate live data on schema evidence
This commit is contained in:
@@ -43,6 +43,7 @@ export type RunCapability =
|
||||
| "remote.run.process.start"
|
||||
| "remote.run.process.stop"
|
||||
| "remote.run.db.mysql.query"
|
||||
| "remote.run.db.sqlite.probe"
|
||||
| "remote.run.db.sqlite.query"
|
||||
| "remote.run.logs.transfer"
|
||||
| "remote.run.rcon.command"
|
||||
@@ -268,6 +269,55 @@ export interface GameClientBridgeQueryTemplateDeclaration {
|
||||
|
||||
export type GameClientBridgeOperationKind = "rcon" | "sqlite-mutation";
|
||||
|
||||
export type SCUMLiveDataCapability =
|
||||
| "schema-probe"
|
||||
| "players.read"
|
||||
| "player-details.read"
|
||||
| "squads.read"
|
||||
| "squad-members.read"
|
||||
| "vehicles.read"
|
||||
| "flags.read"
|
||||
| "positions.read"
|
||||
| "profile-xml.write"
|
||||
| "economy-command.write"
|
||||
| "gift-command.write";
|
||||
|
||||
export type SCUMLiveDataGateState = "disabled" | "enabled";
|
||||
export type SCUMLiveDataEvidenceStatus = "missing" | "compatible" | "incompatible" | "failed";
|
||||
|
||||
export interface SCUMLiveDataCapabilityGateDeclaration {
|
||||
capability: SCUMLiveDataCapability;
|
||||
gate: SCUMLiveDataGateState;
|
||||
adapterVersion: string;
|
||||
requiredSchemaFingerprint?: string;
|
||||
requiredAssetDigests?: `sha256:${string}`[];
|
||||
evidenceStatus: SCUMLiveDataEvidenceStatus;
|
||||
safeReason: string;
|
||||
}
|
||||
|
||||
export interface SCUMSchemaProbeBoundsDeclaration {
|
||||
maxObjects: number;
|
||||
maxColumnsPerObject: number;
|
||||
maxIndexesPerObject: number;
|
||||
maxForeignKeys: number;
|
||||
maxCardinalityReads: number;
|
||||
maxSampleRows: number;
|
||||
timeoutMs: number;
|
||||
maxResultBytes: number;
|
||||
}
|
||||
|
||||
export interface SCUMSchemaProbeDeclaration {
|
||||
capability: Extract<RunCapability, "remote.run.db.sqlite.probe">;
|
||||
targetKey: string;
|
||||
bounds: SCUMSchemaProbeBoundsDeclaration;
|
||||
}
|
||||
|
||||
export interface SCUMLiveDataManifestDeclaration {
|
||||
schemaVersion: "1";
|
||||
probe: SCUMSchemaProbeDeclaration;
|
||||
capabilityGates: SCUMLiveDataCapabilityGateDeclaration[];
|
||||
}
|
||||
|
||||
export interface GameClientBridgeOperationSafety {
|
||||
requiresApproval?: boolean;
|
||||
requiresOfflinePlayer?: boolean;
|
||||
@@ -722,6 +772,7 @@ export interface GamePluginManifest {
|
||||
remoteAccess?: GamePluginRemoteAccess;
|
||||
runtimeProfiles?: GamePluginRuntimeProfiles;
|
||||
gameClientBridge?: GameClientBridgeManifest;
|
||||
scumLiveData?: SCUMLiveDataManifestDeclaration;
|
||||
actions?: GamePluginActions;
|
||||
assetFiles?: PluginAssetFile[];
|
||||
productionLifecycle: {
|
||||
|
||||
Reference in New Issue
Block a user