diff --git a/plugins/manifests/game-plugin.manifest.schema.json b/plugins/manifests/game-plugin.manifest.schema.json index f509885..60c18e7 100644 --- a/plugins/manifests/game-plugin.manifest.schema.json +++ b/plugins/manifests/game-plugin.manifest.schema.json @@ -120,17 +120,17 @@ "items": { "$ref": "#/$defs/runtimeLogSource" }, "uniqueItems": true }, - "logEvents": { - "type": "array", - "items": { "$ref": "#/$defs/runtimeLogEvent" }, - "uniqueItems": true, - "maxItems": 128 - }, "transportProfiles": { "type": "array", "items": { "$ref": "#/$defs/runtimeTransportProfile" }, "uniqueItems": true }, + "dataTargets": { + "type": "array", + "items": { "$ref": "#/$defs/runtimeDataTarget" }, + "uniqueItems": true, + "maxItems": 16 + }, "clientManagers": { "type": "array", "items": { "$ref": "#/$defs/runtimeClientManagerProfile" }, @@ -254,11 +254,6 @@ "items": { "$ref": "#/$defs/gameClientBridgeQueryTemplate" }, "maxItems": 128 }, - "logProjections": { - "type": "array", - "items": { "$ref": "#/$defs/gameClientBridgeLogProjection" }, - "maxItems": 128 - }, "lifecycleProjections": { "type": "array", "items": { "$ref": "#/$defs/gameClientBridgeLifecycleProjection" }, @@ -362,51 +357,6 @@ "mergeExisting": { "type": "boolean" } } }, - "gameClientBridgeLogProjection": { - "type": "object", - "required": ["key", "streamKeys", "steps", "correlationFields", "maxInterveningLines", "target"], - "additionalProperties": false, - "properties": { - "key": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,159}$" }, - "streamKeys": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,159}$" }, "uniqueItems": true, "minItems": 1, "maxItems": 64 }, - "steps": { "type": "array", "items": { "$ref": "#/$defs/gameClientBridgeLogProjectionStep" }, "minItems": 1, "maxItems": 64 }, - "correlationFields": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]{0,79}$" }, "uniqueItems": true, "minItems": 1, "maxItems": 64 }, - "maxInterveningLines": { "type": "integer", "minimum": 0, "maximum": 100000 }, - "target": { "$ref": "#/$defs/gameClientBridgeLogProjectionTarget" }, - "presence": { "$ref": "#/$defs/gameClientBridgeLogProjectionPresence" } - } - }, - "gameClientBridgeLogProjectionStep": { - "type": "object", - "required": ["pattern"], - "additionalProperties": false, - "properties": { - "pattern": { "type": "string", "minLength": 1, "maxLength": 16384 } - } - }, - "gameClientBridgeLogProjectionTarget": { - "type": "object", - "required": ["collection", "upsertKeys", "captureMappings"], - "additionalProperties": false, - "properties": { - "collection": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,119}$" }, - "upsertKeys": { "type": "array", "items": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "uniqueItems": true, "minItems": 1, "maxItems": 8 }, - "captureMappings": { "type": "object", "minProperties": 1, "maxProperties": 64, "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "additionalProperties": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]{0,79}$" } }, - "hashMappings": { "type": "object", "maxProperties": 64, "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "additionalProperties": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_]{0,79}$" } }, - "fixedValues": { "type": "object", "maxProperties": 64, "propertyNames": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, "additionalProperties": { "type": "string", "maxLength": 4096 } }, - "observedAtField": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" } - } - }, - "gameClientBridgeLogProjectionPresence": { - "type": "object", - "required": ["timestampField", "activeWindowSeconds"], - "additionalProperties": false, - "properties": { - "timestampField": { "type": "string", "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,79}$" }, - "activeWindowSeconds": { "type": "integer", "minimum": 1, "maximum": 31536000 }, - "activityTarget": { "$ref": "#/$defs/gameClientBridgeLogProjectionTarget" } - } - }, "gameClientBridgeLifecycleProjection": { "type": "object", "required": ["key", "capabilities", "target"], @@ -445,12 +395,11 @@ }, "gameClientBridgeDataPack": { "type": "object", - "required": ["key", "databaseUserVersion", "logParserRefs", "configMapRefs"], + "required": ["key", "databaseUserVersion", "configMapRefs"], "additionalProperties": false, "properties": { "key": { "$ref": "#/$defs/logicalKey" }, "databaseUserVersion": { "type": "integer", "minimum": 1 }, - "logParserRefs": { "type": "array", "items": { "$ref": "#/$defs/relativeJsonRef" }, "uniqueItems": true, "minItems": 1 }, "configMapRefs": { "type": "array", "items": { "$ref": "#/$defs/relativeJsonRef" }, "uniqueItems": true, "minItems": 1 }, "dataRefs": { "type": "array", "items": { "$ref": "#/$defs/relativeJsonRef" }, "uniqueItems": true } } @@ -760,21 +709,6 @@ "retentionDays": { "type": "integer", "minimum": 1, "maximum": 365 } } }, - "runtimeLogEvent": { - "type": "object", - "required": ["key", "title", "sourceKey", "eventType", "permission", "schemaRef", "retentionDays", "severity"], - "additionalProperties": false, - "properties": { - "key": { "$ref": "#/$defs/logicalKey" }, - "title": { "type": "string", "minLength": 1, "maxLength": 80 }, - "sourceKey": { "$ref": "#/$defs/logicalKey" }, - "eventType": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]{0,119}$" }, - "permission": { "$ref": "#/$defs/pluginPermission" }, - "schemaRef": { "$ref": "#/$defs/relativeJsonRef" }, - "retentionDays": { "type": "integer", "minimum": 1, "maximum": 365 }, - "severity": { "enum": ["info", "notice", "warning", "critical"] } - } - }, "runtimeTransportProfile": { "type": "object", "required": ["key", "kind", "capabilities"], @@ -786,6 +720,22 @@ "capabilities": { "type": "array", "items": { "$ref": "#/$defs/runCapability" }, "uniqueItems": true, "minItems": 1 } } }, + "runtimeDataTarget": { + "type": "object", + "required": ["key", "kind", "transportKey", "sourceRootKey", "sourcePath", "workspaceKey", "refreshPolicy", "maxBytes"], + "additionalProperties": false, + "properties": { + "key": { "$ref": "#/$defs/logicalKey" }, + "kind": { "const": "sqlite.snapshot" }, + "transportKey": { "$ref": "#/$defs/logicalKey" }, + "sourceRootKey": { "$ref": "#/$defs/logicalKey" }, + "sourcePath": { "$ref": "#/$defs/relativePathRef" }, + "workspaceKey": { "type": "string", "pattern": "^databases/[a-zA-Z0-9._/-]+$", "maxLength": 120 }, + "refreshPolicy": { "const": "on-demand-snapshot" }, + "maxBytes": { "type": "integer", "minimum": 1, "maximum": 1073741824 }, + "platforms": { "type": "array", "items": { "$ref": "#/$defs/runtimePlatform" }, "uniqueItems": true } + } + }, "relativePathRef": { "type": "string", "pattern": "^(?!/)(?![A-Za-z]:)(?!.*://)(?!.*\\.\\.)[a-zA-Z0-9_./-]+$",