@mhome/app-facade-protocol 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -62,7 +62,7 @@ cannot silently turn every Hub request into a cloud-proxied request.
62
62
  The checked-in Rust table is generated from that manifest, and non-Rust clients
63
63
  consume the same manifest from the npm protocol package. A native Host may
64
64
  supervise Hub and Node processes, but it is not a public App Facade executor;
65
- Host process management remains an implementation detail behind the selected
65
+ Host process management is provided by the native Client, independent of the selected
66
66
  Hub. Lion's legacy controller annotations and non-`/app/*` protocols are
67
67
  outside this contract.
68
68
 
@@ -89,6 +89,9 @@ from the Foundation root; omit `--write` to check conformance. Resource paths ar
89
89
 
90
90
  Code creation may omit bot/account and group/surface identifiers. The receiving authenticated provider determines the bot; shared candidates are confirmed in the App. The existing actor link claim status/confirm/event endpoints carry both kinds, distinguished by `kind` (`link` by default, or `bind`). Bind code responses include `challengeId`; completed bind claims omit `linkId`. Private link completes on receipt. A code is single-use within its provider and service deployment, never a cross-provider or cross-Hub credential.
91
91
 
92
- ## System inventory
92
+ ## Space runtime observations
93
93
 
94
- The system facade is executed by the local Space Hub, with Cloud relay allowed. All Space members may read it. The Hub reads its Host discovery snapshot and queries LAN Host info, service inventory and metrics. Host does not aggregate remote machines. Instances are derived exclusively from the authenticated tenant/Space commissioned records; disconnected does not mean unloaded. Client sessions use a separate endpoint. No remote Space lifecycle queries or graph coordinates are part of this contract. Legacy topology is deprecated; consumers migrate to system inventory.
94
+ `/app/system/instances/get` reads Space instances; `/app/system/clients/get` reads
95
+ client sessions. These remain Hub-owned with cloud relay and Space membership.
96
+ Host management is owned by the native Client and defined in core-api; it is never
97
+ an App Facade operation. See [SYSTEM.md](SYSTEM.md).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.v1",
3
- "contractVersion": "1.12.0",
3
+ "contractVersion": "1.14.0",
4
4
  "callSchema": "schema/facade-call.v1.schema.json",
5
5
  "routing": "manifest/routing.v1.json",
6
6
  "routingSchema": "schema/routing.v1.schema.json",
@@ -75,18 +75,11 @@
75
75
  "sessionPersistence": "memory"
76
76
  },
77
77
  "system": {
78
- "contract": "mhome.system.inventory.v1",
79
- "schema": "schema/system-inventory.v1.schema.json",
78
+ "contract": "mhome.system.instances.v1",
79
+ "schema": "schema/system-instances.v1.schema.json",
80
80
  "requestTargets": [
81
- "/app/system/inventory/get",
82
- "/app/system/clients/get",
83
- "/app/system/host/metrics/get",
84
- "/app/system/host/inspect",
85
- "/app/system/host/plan",
86
- "/app/system/host/start",
87
- "/app/system/host/operation/get",
88
- "/app/system/host/restart",
89
- "/app/system/host/permissions/get"
81
+ "/app/system/instances/get",
82
+ "/app/system/clients/get"
90
83
  ]
91
84
  }
92
85
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.hub.targets.v1",
3
- "contractVersion": "1.12.0",
3
+ "contractVersion": "1.14.0",
4
4
  "appTargets": [
5
5
  "/app/hub/get",
6
6
  "/app/hub/remove",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.routing.v1",
3
- "contractVersion": "1.12.0",
3
+ "contractVersion": "1.14.0",
4
4
  "targetPrefix": "/app/",
5
5
  "default": {
6
6
  "execution": "scopeMode",
@@ -32,9 +32,8 @@
32
32
  "/app/interaction-flow/",
33
33
  "/app/object-storage/",
34
34
  "/app/runtime/",
35
- "/app/system/inventory/",
36
- "/app/system/clients/",
37
- "/app/system/host/"
35
+ "/app/system/instances/",
36
+ "/app/system/clients/"
38
37
  ],
39
38
  "requestPlacementPrefixes": [
40
39
  "/app/messaging/"
@@ -49,15 +48,8 @@
49
48
  "/app/object-storage/folders/update",
50
49
  "/app/object-storage/folders/list",
51
50
  "/app/object-storage/settings/update",
52
- "/app/system/inventory/get",
53
- "/app/system/clients/get",
54
- "/app/system/host/metrics/get",
55
- "/app/system/host/inspect",
56
- "/app/system/host/plan",
57
- "/app/system/host/start",
58
- "/app/system/host/operation/get",
59
- "/app/system/host/restart",
60
- "/app/system/host/permissions/get"
51
+ "/app/system/instances/get",
52
+ "/app/system/clients/get"
61
53
  ]
62
54
  }
63
55
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.messaging.targets.v1",
3
- "contractVersion": "1.12.0",
3
+ "contractVersion": "1.14.0",
4
4
  "requestTargets": [
5
5
  "/app/messaging/provider/list",
6
6
  "/app/messaging/provider-account/list",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhome/app-facade-protocol",
3
- "version": "1.12.0",
3
+ "version": "1.14.0",
4
4
  "description": "Build-time protocol artifacts for mhome.app-facade",
5
5
  "license": "MIT",
6
6
  "repository": {
package/protocol.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "protocol": "mhome.app-facade",
3
- "contractVersion": "1.12.0",
3
+ "contractVersion": "1.14.0",
4
4
  "manifest": "manifest/app-facade.v1.json",
5
5
  "schemas": {
6
6
  "call": "schema/facade-call.v1.schema.json",
@@ -10,9 +10,7 @@
10
10
  "hubState": "schema/hub-state.v1.schema.json",
11
11
  "localHubState": "schema/local-hub-state.v1.schema.json",
12
12
  "systemClients": "schema/system-clients.v1.schema.json",
13
- "systemPermissions": "schema/system-permissions.v1.schema.json",
14
- "systemMetrics": "schema/system-metrics.v1.schema.json",
15
- "systemInventory": "schema/system-inventory.v1.schema.json",
13
+ "systemInstances": "schema/system-instances.v1.schema.json",
16
14
  "topology": "schema/topology.v1.schema.json",
17
15
  "deviceTopology": "schema/device-topology.v1.schema.json"
18
16
  },
@@ -0,0 +1,185 @@
1
+ {
2
+ "type": "object",
3
+ "additionalProperties": false,
4
+ "required": [
5
+ "contract",
6
+ "scopeId",
7
+ "observedAtMs",
8
+ "instances"
9
+ ],
10
+ "properties": {
11
+ "contract": {
12
+ "const": "mhome.system.instances.v1"
13
+ },
14
+ "scopeId": {
15
+ "type": "string"
16
+ },
17
+ "observedAtMs": {
18
+ "type": "integer",
19
+ "minimum": 0
20
+ },
21
+ "instances": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "required": [
27
+ "id",
28
+ "kind",
29
+ "hostId",
30
+ "serviceId",
31
+ "displayName",
32
+ "nodeType",
33
+ "hubId",
34
+ "commissioned",
35
+ "lifecycle",
36
+ "hubConnection",
37
+ "cloudConnection",
38
+ "health"
39
+ ],
40
+ "properties": {
41
+ "id": {
42
+ "type": "string"
43
+ },
44
+ "kind": {
45
+ "enum": [
46
+ "hub",
47
+ "node"
48
+ ]
49
+ },
50
+ "hostId": {
51
+ "type": "string"
52
+ },
53
+ "serviceId": {
54
+ "type": "string"
55
+ },
56
+ "displayName": {
57
+ "type": "string"
58
+ },
59
+ "nodeType": {
60
+ "anyOf": [
61
+ {
62
+ "type": "string"
63
+ },
64
+ {
65
+ "type": "null"
66
+ }
67
+ ]
68
+ },
69
+ "hubId": {
70
+ "type": "string"
71
+ },
72
+ "commissioned": {
73
+ "type": "boolean"
74
+ },
75
+ "lifecycle": {
76
+ "anyOf": [
77
+ {
78
+ "enum": [
79
+ "active",
80
+ "inactive"
81
+ ]
82
+ },
83
+ {
84
+ "type": "null"
85
+ }
86
+ ]
87
+ },
88
+ "hubConnection": {
89
+ "anyOf": [
90
+ {
91
+ "enum": [
92
+ "connected",
93
+ "disconnected"
94
+ ]
95
+ },
96
+ {
97
+ "type": "null"
98
+ }
99
+ ]
100
+ },
101
+ "cloudConnection": {
102
+ "anyOf": [
103
+ {
104
+ "enum": [
105
+ "connected",
106
+ "disconnected"
107
+ ]
108
+ },
109
+ {
110
+ "type": "null"
111
+ }
112
+ ]
113
+ },
114
+ "health": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": [
118
+ "status",
119
+ "data",
120
+ "observedAtMs",
121
+ "lastAttemptAtMs",
122
+ "stale",
123
+ "errorCode"
124
+ ],
125
+ "properties": {
126
+ "status": {
127
+ "enum": [
128
+ "ok",
129
+ "unavailable",
130
+ "unsupported",
131
+ "notQueried"
132
+ ]
133
+ },
134
+ "data": {
135
+ "anyOf": [
136
+ {
137
+ "type": "string"
138
+ },
139
+ {
140
+ "type": "null"
141
+ }
142
+ ]
143
+ },
144
+ "observedAtMs": {
145
+ "anyOf": [
146
+ {
147
+ "type": "integer",
148
+ "minimum": 0
149
+ },
150
+ {
151
+ "type": "null"
152
+ }
153
+ ]
154
+ },
155
+ "lastAttemptAtMs": {
156
+ "anyOf": [
157
+ {
158
+ "type": "integer",
159
+ "minimum": 0
160
+ },
161
+ {
162
+ "type": "null"
163
+ }
164
+ ]
165
+ },
166
+ "stale": {
167
+ "type": "boolean"
168
+ },
169
+ "errorCode": {
170
+ "anyOf": [
171
+ {
172
+ "type": "string"
173
+ },
174
+ {
175
+ "type": "null"
176
+ }
177
+ ]
178
+ }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
@@ -1,517 +0,0 @@
1
- {
2
- "type": "object",
3
- "additionalProperties": false,
4
- "required": [
5
- "contract",
6
- "scopeId",
7
- "observedAtMs",
8
- "discoveryError",
9
- "hosts",
10
- "instances"
11
- ],
12
- "properties": {
13
- "contract": {
14
- "const": "mhome.system.inventory.v1"
15
- },
16
- "scopeId": {
17
- "type": "string"
18
- },
19
- "observedAtMs": {
20
- "type": "integer",
21
- "minimum": 0
22
- },
23
- "discoveryError": {
24
- "anyOf": [
25
- {
26
- "type": "string"
27
- },
28
- {
29
- "type": "null"
30
- }
31
- ]
32
- },
33
- "hosts": {
34
- "type": "array",
35
- "items": {
36
- "type": "object",
37
- "additionalProperties": false,
38
- "required": [
39
- "hostId",
40
- "hostName",
41
- "hostType",
42
- "isHubHost",
43
- "source",
44
- "reachable",
45
- "info",
46
- "services"
47
- ],
48
- "properties": {
49
- "hostId": {
50
- "type": "string"
51
- },
52
- "hostName": {
53
- "type": "string"
54
- },
55
- "hostType": {
56
- "type": "string"
57
- },
58
- "isHubHost": {
59
- "type": "boolean"
60
- },
61
- "source": {
62
- "enum": [
63
- "local",
64
- "mdns",
65
- "commissioned"
66
- ]
67
- },
68
- "reachable": {
69
- "type": "boolean"
70
- },
71
- "info": {
72
- "type": "object",
73
- "additionalProperties": false,
74
- "required": [
75
- "status",
76
- "data",
77
- "observedAtMs",
78
- "lastAttemptAtMs",
79
- "stale",
80
- "errorCode"
81
- ],
82
- "properties": {
83
- "status": {
84
- "enum": [
85
- "ok",
86
- "unavailable",
87
- "unsupported",
88
- "notQueried"
89
- ]
90
- },
91
- "data": {
92
- "anyOf": [
93
- {
94
- "type": "object",
95
- "additionalProperties": false,
96
- "required": [
97
- "hostId",
98
- "hostName",
99
- "hostType",
100
- "os",
101
- "osVersion",
102
- "cpu",
103
- "memory",
104
- "disk",
105
- "gpus"
106
- ],
107
- "properties": {
108
- "hostId": {
109
- "type": "string"
110
- },
111
- "hostName": {
112
- "type": "string"
113
- },
114
- "hostType": {
115
- "type": "string"
116
- },
117
- "os": {
118
- "type": "string"
119
- },
120
- "osVersion": {
121
- "anyOf": [
122
- {
123
- "type": "string"
124
- },
125
- {
126
- "type": "null"
127
- }
128
- ]
129
- },
130
- "cpu": {
131
- "type": "object",
132
- "additionalProperties": false,
133
- "required": [
134
- "arch",
135
- "logicalCores",
136
- "model"
137
- ],
138
- "properties": {
139
- "arch": {
140
- "type": "string"
141
- },
142
- "logicalCores": {
143
- "type": "integer",
144
- "minimum": 0
145
- },
146
- "model": {
147
- "type": "string"
148
- }
149
- }
150
- },
151
- "memory": {
152
- "type": "object",
153
- "additionalProperties": false,
154
- "required": [
155
- "totalBytes"
156
- ],
157
- "properties": {
158
- "totalBytes": {
159
- "type": "integer",
160
- "minimum": 0
161
- }
162
- }
163
- },
164
- "disk": {
165
- "anyOf": [
166
- {
167
- "type": "object",
168
- "additionalProperties": false,
169
- "required": [
170
- "totalBytes"
171
- ],
172
- "properties": {
173
- "totalBytes": {
174
- "type": "integer",
175
- "minimum": 0
176
- }
177
- }
178
- },
179
- {
180
- "type": "null"
181
- }
182
- ]
183
- },
184
- "gpus": {
185
- "type": "array",
186
- "items": {
187
- "type": "object",
188
- "additionalProperties": false,
189
- "required": [
190
- "vendor",
191
- "name",
192
- "memoryBytes"
193
- ],
194
- "properties": {
195
- "vendor": {
196
- "type": "string"
197
- },
198
- "name": {
199
- "type": "string"
200
- },
201
- "memoryBytes": {
202
- "anyOf": [
203
- {
204
- "type": "integer",
205
- "minimum": 0
206
- },
207
- {
208
- "type": "null"
209
- }
210
- ]
211
- }
212
- }
213
- }
214
- }
215
- }
216
- },
217
- {
218
- "type": "null"
219
- }
220
- ]
221
- },
222
- "observedAtMs": {
223
- "anyOf": [
224
- {
225
- "type": "integer",
226
- "minimum": 0
227
- },
228
- {
229
- "type": "null"
230
- }
231
- ]
232
- },
233
- "lastAttemptAtMs": {
234
- "anyOf": [
235
- {
236
- "type": "integer",
237
- "minimum": 0
238
- },
239
- {
240
- "type": "null"
241
- }
242
- ]
243
- },
244
- "stale": {
245
- "type": "boolean"
246
- },
247
- "errorCode": {
248
- "anyOf": [
249
- {
250
- "type": "string"
251
- },
252
- {
253
- "type": "null"
254
- }
255
- ]
256
- }
257
- }
258
- },
259
- "services": {
260
- "type": "object",
261
- "additionalProperties": false,
262
- "required": [
263
- "status",
264
- "data",
265
- "observedAtMs",
266
- "lastAttemptAtMs",
267
- "stale",
268
- "errorCode"
269
- ],
270
- "properties": {
271
- "status": {
272
- "enum": [
273
- "ok",
274
- "unavailable",
275
- "unsupported",
276
- "notQueried"
277
- ]
278
- },
279
- "data": {
280
- "anyOf": [
281
- {
282
- "type": "array",
283
- "items": {
284
- "type": "object",
285
- "additionalProperties": false,
286
- "required": [
287
- "serviceId",
288
- "version",
289
- "kind",
290
- "status"
291
- ],
292
- "properties": {
293
- "serviceId": {
294
- "type": "string"
295
- },
296
- "version": {
297
- "type": "string"
298
- },
299
- "kind": {
300
- "type": "string"
301
- },
302
- "status": {
303
- "type": "string"
304
- }
305
- }
306
- }
307
- },
308
- {
309
- "type": "null"
310
- }
311
- ]
312
- },
313
- "observedAtMs": {
314
- "anyOf": [
315
- {
316
- "type": "integer",
317
- "minimum": 0
318
- },
319
- {
320
- "type": "null"
321
- }
322
- ]
323
- },
324
- "lastAttemptAtMs": {
325
- "anyOf": [
326
- {
327
- "type": "integer",
328
- "minimum": 0
329
- },
330
- {
331
- "type": "null"
332
- }
333
- ]
334
- },
335
- "stale": {
336
- "type": "boolean"
337
- },
338
- "errorCode": {
339
- "anyOf": [
340
- {
341
- "type": "string"
342
- },
343
- {
344
- "type": "null"
345
- }
346
- ]
347
- }
348
- }
349
- }
350
- }
351
- }
352
- },
353
- "instances": {
354
- "type": "array",
355
- "items": {
356
- "type": "object",
357
- "additionalProperties": false,
358
- "required": [
359
- "id",
360
- "kind",
361
- "hostId",
362
- "serviceId",
363
- "displayName",
364
- "nodeType",
365
- "hubId",
366
- "commissioned",
367
- "lifecycle",
368
- "hubConnection",
369
- "cloudConnection",
370
- "health"
371
- ],
372
- "properties": {
373
- "id": {
374
- "type": "string"
375
- },
376
- "kind": {
377
- "enum": [
378
- "hub",
379
- "node"
380
- ]
381
- },
382
- "hostId": {
383
- "type": "string"
384
- },
385
- "serviceId": {
386
- "type": "string"
387
- },
388
- "displayName": {
389
- "type": "string"
390
- },
391
- "nodeType": {
392
- "anyOf": [
393
- {
394
- "type": "string"
395
- },
396
- {
397
- "type": "null"
398
- }
399
- ]
400
- },
401
- "hubId": {
402
- "type": "string"
403
- },
404
- "commissioned": {
405
- "type": "boolean"
406
- },
407
- "lifecycle": {
408
- "anyOf": [
409
- {
410
- "enum": [
411
- "active",
412
- "inactive"
413
- ]
414
- },
415
- {
416
- "type": "null"
417
- }
418
- ]
419
- },
420
- "hubConnection": {
421
- "anyOf": [
422
- {
423
- "enum": [
424
- "connected",
425
- "disconnected"
426
- ]
427
- },
428
- {
429
- "type": "null"
430
- }
431
- ]
432
- },
433
- "cloudConnection": {
434
- "anyOf": [
435
- {
436
- "enum": [
437
- "connected",
438
- "disconnected"
439
- ]
440
- },
441
- {
442
- "type": "null"
443
- }
444
- ]
445
- },
446
- "health": {
447
- "type": "object",
448
- "additionalProperties": false,
449
- "required": [
450
- "status",
451
- "data",
452
- "observedAtMs",
453
- "lastAttemptAtMs",
454
- "stale",
455
- "errorCode"
456
- ],
457
- "properties": {
458
- "status": {
459
- "enum": [
460
- "ok",
461
- "unavailable",
462
- "unsupported",
463
- "notQueried"
464
- ]
465
- },
466
- "data": {
467
- "anyOf": [
468
- {
469
- "type": "string"
470
- },
471
- {
472
- "type": "null"
473
- }
474
- ]
475
- },
476
- "observedAtMs": {
477
- "anyOf": [
478
- {
479
- "type": "integer",
480
- "minimum": 0
481
- },
482
- {
483
- "type": "null"
484
- }
485
- ]
486
- },
487
- "lastAttemptAtMs": {
488
- "anyOf": [
489
- {
490
- "type": "integer",
491
- "minimum": 0
492
- },
493
- {
494
- "type": "null"
495
- }
496
- ]
497
- },
498
- "stale": {
499
- "type": "boolean"
500
- },
501
- "errorCode": {
502
- "anyOf": [
503
- {
504
- "type": "string"
505
- },
506
- {
507
- "type": "null"
508
- }
509
- ]
510
- }
511
- }
512
- }
513
- }
514
- }
515
- }
516
- }
517
- }
@@ -1,225 +0,0 @@
1
- {
2
- "type": "object",
3
- "additionalProperties": false,
4
- "required": [
5
- "hostId",
6
- "sample"
7
- ],
8
- "properties": {
9
- "hostId": {
10
- "type": "string"
11
- },
12
- "sample": {
13
- "type": "object",
14
- "additionalProperties": false,
15
- "required": [
16
- "status",
17
- "data",
18
- "observedAtMs",
19
- "lastAttemptAtMs",
20
- "stale",
21
- "errorCode"
22
- ],
23
- "properties": {
24
- "status": {
25
- "enum": [
26
- "ok",
27
- "unavailable",
28
- "unsupported",
29
- "notQueried"
30
- ]
31
- },
32
- "data": {
33
- "anyOf": [
34
- {
35
- "type": "object",
36
- "additionalProperties": false,
37
- "required": [
38
- "hostId",
39
- "sampledAtMs",
40
- "cpuUsagePercent",
41
- "memoryAvailableBytes",
42
- "diskAvailableBytes",
43
- "networkReceivedBytesPerSecond",
44
- "networkSentBytesPerSecond",
45
- "services"
46
- ],
47
- "properties": {
48
- "hostId": {
49
- "type": "string"
50
- },
51
- "sampledAtMs": {
52
- "type": "integer",
53
- "minimum": 0
54
- },
55
- "cpuUsagePercent": {
56
- "anyOf": [
57
- {
58
- "type": "number"
59
- },
60
- {
61
- "type": "null"
62
- }
63
- ]
64
- },
65
- "memoryAvailableBytes": {
66
- "anyOf": [
67
- {
68
- "type": "integer",
69
- "minimum": 0
70
- },
71
- {
72
- "type": "null"
73
- }
74
- ]
75
- },
76
- "diskAvailableBytes": {
77
- "anyOf": [
78
- {
79
- "type": "integer",
80
- "minimum": 0
81
- },
82
- {
83
- "type": "null"
84
- }
85
- ]
86
- },
87
- "networkReceivedBytesPerSecond": {
88
- "anyOf": [
89
- {
90
- "type": "number"
91
- },
92
- {
93
- "type": "null"
94
- }
95
- ]
96
- },
97
- "networkSentBytesPerSecond": {
98
- "anyOf": [
99
- {
100
- "type": "number"
101
- },
102
- {
103
- "type": "null"
104
- }
105
- ]
106
- },
107
- "services": {
108
- "type": "array",
109
- "items": {
110
- "type": "object",
111
- "additionalProperties": false,
112
- "required": [
113
- "serviceId",
114
- "status",
115
- "sampleState",
116
- "processCount",
117
- "cpuUsagePercent",
118
- "memoryResidentBytes",
119
- "diskReadBytesPerSecond",
120
- "diskWrittenBytesPerSecond"
121
- ],
122
- "properties": {
123
- "serviceId": {
124
- "type": "string"
125
- },
126
- "status": {
127
- "type": "string"
128
- },
129
- "sampleState": {
130
- "type": "string"
131
- },
132
- "processCount": {
133
- "type": "integer",
134
- "minimum": 0
135
- },
136
- "cpuUsagePercent": {
137
- "anyOf": [
138
- {
139
- "type": "number"
140
- },
141
- {
142
- "type": "null"
143
- }
144
- ]
145
- },
146
- "memoryResidentBytes": {
147
- "anyOf": [
148
- {
149
- "type": "integer",
150
- "minimum": 0
151
- },
152
- {
153
- "type": "null"
154
- }
155
- ]
156
- },
157
- "diskReadBytesPerSecond": {
158
- "anyOf": [
159
- {
160
- "type": "number"
161
- },
162
- {
163
- "type": "null"
164
- }
165
- ]
166
- },
167
- "diskWrittenBytesPerSecond": {
168
- "anyOf": [
169
- {
170
- "type": "number"
171
- },
172
- {
173
- "type": "null"
174
- }
175
- ]
176
- }
177
- }
178
- }
179
- }
180
- }
181
- },
182
- {
183
- "type": "null"
184
- }
185
- ]
186
- },
187
- "observedAtMs": {
188
- "anyOf": [
189
- {
190
- "type": "integer",
191
- "minimum": 0
192
- },
193
- {
194
- "type": "null"
195
- }
196
- ]
197
- },
198
- "lastAttemptAtMs": {
199
- "anyOf": [
200
- {
201
- "type": "integer",
202
- "minimum": 0
203
- },
204
- {
205
- "type": "null"
206
- }
207
- ]
208
- },
209
- "stale": {
210
- "type": "boolean"
211
- },
212
- "errorCode": {
213
- "anyOf": [
214
- {
215
- "type": "string"
216
- },
217
- {
218
- "type": "null"
219
- }
220
- ]
221
- }
222
- }
223
- }
224
- }
225
- }
@@ -1,274 +0,0 @@
1
- {
2
- "type": "object",
3
- "additionalProperties": false,
4
- "required": [
5
- "hostId",
6
- "snapshot"
7
- ],
8
- "properties": {
9
- "hostId": {
10
- "type": "string",
11
- "minLength": 1
12
- },
13
- "snapshot": {
14
- "type": "object",
15
- "additionalProperties": false,
16
- "required": [
17
- "status",
18
- "data",
19
- "observedAtMs",
20
- "lastAttemptAtMs",
21
- "stale",
22
- "errorCode"
23
- ],
24
- "properties": {
25
- "status": {
26
- "enum": [
27
- "ok",
28
- "unavailable",
29
- "unsupported",
30
- "notQueried"
31
- ]
32
- },
33
- "data": {
34
- "anyOf": [
35
- {
36
- "type": "object",
37
- "additionalProperties": false,
38
- "required": [
39
- "hostId",
40
- "subjectId",
41
- "subjectName",
42
- "hostVersion",
43
- "platform",
44
- "observedAtMs",
45
- "permissions",
46
- "declarationErrors"
47
- ],
48
- "properties": {
49
- "hostId": {
50
- "type": "string",
51
- "minLength": 1
52
- },
53
- "subjectId": {
54
- "type": "string",
55
- "minLength": 1
56
- },
57
- "subjectName": {
58
- "type": "string",
59
- "minLength": 1
60
- },
61
- "hostVersion": {
62
- "type": "string",
63
- "minLength": 1
64
- },
65
- "platform": {
66
- "type": "string",
67
- "minLength": 1
68
- },
69
- "observedAtMs": {
70
- "type": "integer",
71
- "minimum": 0
72
- },
73
- "permissions": {
74
- "type": "array",
75
- "items": {
76
- "type": "object",
77
- "additionalProperties": false,
78
- "required": [
79
- "permission",
80
- "state",
81
- "evidence",
82
- "observedAtMs",
83
- "uses",
84
- "supportedActions",
85
- "error"
86
- ],
87
- "properties": {
88
- "permission": {
89
- "oneOf": [
90
- {
91
- "type": "object",
92
- "additionalProperties": false,
93
- "required": [
94
- "id"
95
- ],
96
- "properties": {
97
- "id": {
98
- "enum": [
99
- "localNetwork",
100
- "bluetooth",
101
- "microphone",
102
- "reminders"
103
- ]
104
- }
105
- }
106
- },
107
- {
108
- "type": "object",
109
- "additionalProperties": false,
110
- "required": [
111
- "id",
112
- "targetBundleId"
113
- ],
114
- "properties": {
115
- "id": {
116
- "const": "automation"
117
- },
118
- "targetBundleId": {
119
- "type": "string",
120
- "minLength": 1
121
- }
122
- }
123
- }
124
- ]
125
- },
126
- "state": {
127
- "enum": [
128
- "unknown",
129
- "notDetermined",
130
- "granted",
131
- "denied",
132
- "restricted",
133
- "unsupported"
134
- ]
135
- },
136
- "evidence": {
137
- "enum": [
138
- "system",
139
- "probe",
140
- "unavailable"
141
- ]
142
- },
143
- "observedAtMs": {
144
- "anyOf": [
145
- {
146
- "type": "integer",
147
- "minimum": 0
148
- },
149
- {
150
- "type": "null"
151
- }
152
- ]
153
- },
154
- "uses": {
155
- "type": "array",
156
- "items": {
157
- "type": "object",
158
- "additionalProperties": false,
159
- "required": [
160
- "componentId",
161
- "componentName",
162
- "feature",
163
- "reason"
164
- ],
165
- "properties": {
166
- "componentId": {
167
- "type": "string",
168
- "minLength": 1
169
- },
170
- "componentName": {
171
- "type": "string",
172
- "minLength": 1
173
- },
174
- "feature": {
175
- "type": "string",
176
- "minLength": 1
177
- },
178
- "reason": {
179
- "type": "string",
180
- "minLength": 1
181
- }
182
- }
183
- }
184
- },
185
- "supportedActions": {
186
- "type": "array",
187
- "uniqueItems": true,
188
- "items": {
189
- "enum": [
190
- "request",
191
- "openSettings"
192
- ]
193
- }
194
- },
195
- "error": {
196
- "anyOf": [
197
- {
198
- "type": "string"
199
- },
200
- {
201
- "type": "null"
202
- }
203
- ]
204
- }
205
- }
206
- }
207
- },
208
- "declarationErrors": {
209
- "type": "array",
210
- "items": {
211
- "type": "object",
212
- "additionalProperties": false,
213
- "required": [
214
- "componentId",
215
- "message"
216
- ],
217
- "properties": {
218
- "componentId": {
219
- "type": "string",
220
- "minLength": 1
221
- },
222
- "message": {
223
- "type": "string",
224
- "minLength": 1
225
- }
226
- }
227
- }
228
- }
229
- }
230
- },
231
- {
232
- "type": "null"
233
- }
234
- ]
235
- },
236
- "observedAtMs": {
237
- "anyOf": [
238
- {
239
- "type": "integer",
240
- "minimum": 0
241
- },
242
- {
243
- "type": "null"
244
- }
245
- ]
246
- },
247
- "lastAttemptAtMs": {
248
- "anyOf": [
249
- {
250
- "type": "integer",
251
- "minimum": 0
252
- },
253
- {
254
- "type": "null"
255
- }
256
- ]
257
- },
258
- "stale": {
259
- "type": "boolean"
260
- },
261
- "errorCode": {
262
- "anyOf": [
263
- {
264
- "type": "string"
265
- },
266
- {
267
- "type": "null"
268
- }
269
- ]
270
- }
271
- }
272
- }
273
- }
274
- }