Files
COPILOT/config/crossswitch-rules.json.template
klas 40143734fc Initial commit: COPILOT D6 Flutter keyboard controller
Flutter web app replacing legacy WPF CCTV surveillance keyboard controller.
Includes wall overview, section view with monitor grid, camera input,
PTZ control, alarm/lock/sequence BLoCs, and legacy-matching UI styling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 14:57:38 +01:00

69 lines
1.7 KiB
Plaintext

{
"$schema": "./crossswitch-rules.schema.json",
"version": "1.0",
"description": "CrossSwitch rules for logical camera/monitor mapping",
"rules": [
{
"id": "rule-001",
"name": "Direct Camera to Monitor",
"description": "Default rule - map camera directly to monitor on same server",
"enabled": true,
"priority": 100,
"conditions": {
"cameraRange": [1, 200],
"monitorRange": [1, 32]
},
"action": {
"type": "viewerConnectLive",
"routing": "auto"
}
},
{
"id": "rule-002",
"name": "Alarm Monitor Override",
"description": "Prevent switching on monitors with active alarms",
"enabled": true,
"priority": 10,
"conditions": {
"monitorHasAlarm": true,
"alarmStates": ["vasNewAlarm", "vasPresented"]
},
"action": {
"type": "deny",
"reason": "Monitor has active alarm"
}
},
{
"id": "rule-003",
"name": "Cross-Server Camera to Monitor",
"description": "Allow camera from one server to display on monitor of another",
"enabled": true,
"priority": 50,
"conditions": {
"crossServer": true
},
"action": {
"type": "viewerConnectLive",
"routing": "monitorServer",
"note": "Command goes to monitor's server, not camera's server"
}
}
],
"defaults": {
"playMode": "live",
"switchTimeout": 5000,
"verifySwitch": true,
"verifyTimeout": 500
},
"alarmMonitorReservation": {
"enabled": true,
"description": "When alarm fires, reserve monitor and switch to alarm camera",
"reservationStates": ["vasNewAlarm", "vasPresented"],
"autoRelease": false,
"releaseOnConfirm": true
}
}