catalogue's working set starts empty and a host gives it the seats it read (UseSeats over SeatsFromDefinitions); the node-engine's verbs and events take the seat's name from the caller. Tests take their seats from seatlisttest. Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
43 lines
1.1 KiB
JSON
43 lines
1.1 KiB
JSON
{
|
|
"format": 1,
|
|
"seat": "node-display-server",
|
|
"scope": "node",
|
|
"grain": "seat-list",
|
|
"decision": "novox/hq ADR 0208",
|
|
"verbs": [
|
|
{
|
|
"name": "displays",
|
|
"description": "The monitors connected now, each with its identity, its modes and where it is placed; and the layout profile in force, if one matches.",
|
|
"input": {
|
|
"properties": {},
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "layout",
|
|
"description": "The monitor layout profiles, keyed by the connected monitors' identities: list them, save the current arrangement under a name, or apply one.",
|
|
"input": {
|
|
"properties": {
|
|
"action": {
|
|
"description": "list, save or apply",
|
|
"enum": [
|
|
"list",
|
|
"save",
|
|
"apply"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "the profile to save or apply (save and apply only)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"action"
|
|
],
|
|
"type": "object"
|
|
}
|
|
}
|
|
]
|
|
}
|