@mhome/app-facade-protocol 1.15.1 → 1.18.1

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
@@ -60,11 +60,10 @@ Relay permission is separate from execution authority so a client
60
60
  cannot silently turn every Hub request into a cloud-proxied request.
61
61
 
62
62
  The checked-in Rust table is generated from that manifest, and non-Rust clients
63
- consume the same manifest from the npm protocol package. A native Host may
64
- supervise Hub and Node processes, but it is not a public App Facade executor;
65
- Host process management is provided by the native Client, independent of the selected
66
- Hub. Lion's legacy controller annotations and non-`/app/*` protocols are
67
- outside this contract.
63
+ consume the same manifest from the npm protocol package. Local Spaces execute
64
+ Host inventory and management on the selected Hub through `/app/system/hosts/*`.
65
+ A native Client remains the path when no local Hub is selected. Lion's legacy
66
+ controller annotations and non-`/app/*` protocols are outside this contract.
68
67
 
69
68
  ### System plugin catalog
70
69
 
@@ -76,8 +75,7 @@ routing manifest. The response schema is `schema/plugin-catalog.v1.schema.json`.
76
75
  The catalog describes supported types, not installed software or bindings.
77
76
  `componentId` joins to Host runtime inspection; `nodeType` joins to existing
78
77
  Plugin candidate and installed/binding queries. Platform installability and
79
- versions come from the Host release catalog, not this directory. Host inventory
80
- is a native management API, not a portable App Facade executor.
78
+ versions come from the Host release catalog, not this directory.
81
79
 
82
80
  Core and Cloud embed generated copies. After editing the catalog, run
83
81
  `node scripts/sync-plugin-catalog.mjs --write <core-resource> <cloud-resource>`
@@ -92,6 +90,7 @@ Code creation may omit bot/account and group/surface identifiers. The receiving
92
90
  ## Space runtime observations
93
91
 
94
92
  `/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).
93
+ client sessions; `/app/system/hosts/get`, `/app/system/hosts/runtime`, and
94
+ `/app/system/hosts/claim` are Hub-vantage Host inventory, management, and
95
+ first-claim. These remain Hub-owned with cloud relay and Space membership. See
96
+ [SYSTEM.md](SYSTEM.md).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.v1",
3
- "contractVersion": "1.15.1",
3
+ "contractVersion": "1.18.1",
4
4
  "callSchema": "schema/facade-call.v1.schema.json",
5
5
  "routing": "manifest/routing.v1.json",
6
6
  "routingSchema": "schema/routing.v1.schema.json",
@@ -77,9 +77,18 @@
77
77
  "system": {
78
78
  "contract": "mhome.system.instances.v1",
79
79
  "schema": "schema/system-instances.v1.schema.json",
80
+ "hostsContract": "mhome.system.hosts.v1",
81
+ "hostsSchema": "schema/system-hosts.v1.schema.json",
82
+ "hostsRuntimeContract": "mhome.system.hosts.runtime.v1",
83
+ "hostsRuntimeSchema": "schema/system-hosts-runtime.v1.schema.json",
84
+ "hostsClaimContract": "mhome.system.hosts.claim.v1",
85
+ "hostsClaimSchema": "schema/system-hosts-claim.v1.schema.json",
80
86
  "requestTargets": [
81
87
  "/app/system/instances/get",
82
- "/app/system/clients/get"
88
+ "/app/system/clients/get",
89
+ "/app/system/hosts/get",
90
+ "/app/system/hosts/runtime",
91
+ "/app/system/hosts/claim"
83
92
  ]
84
93
  }
85
94
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.hub.targets.v1",
3
- "contractVersion": "1.15.1",
3
+ "contractVersion": "1.18.1",
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.15.1",
3
+ "contractVersion": "1.18.1",
4
4
  "targetPrefix": "/app/",
5
5
  "default": {
6
6
  "execution": "scopeMode",
@@ -33,7 +33,8 @@
33
33
  "/app/object-storage/",
34
34
  "/app/runtime/",
35
35
  "/app/system/instances/",
36
- "/app/system/clients/"
36
+ "/app/system/clients/",
37
+ "/app/system/hosts/"
37
38
  ],
38
39
  "requestPlacementPrefixes": [
39
40
  "/app/messaging/"
@@ -49,7 +50,10 @@
49
50
  "/app/object-storage/folders/list",
50
51
  "/app/object-storage/settings/update",
51
52
  "/app/system/instances/get",
52
- "/app/system/clients/get"
53
+ "/app/system/clients/get",
54
+ "/app/system/hosts/get",
55
+ "/app/system/hosts/runtime",
56
+ "/app/system/hosts/claim"
53
57
  ]
54
58
  }
55
59
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.messaging.targets.v1",
3
- "contractVersion": "1.15.1",
3
+ "contractVersion": "1.18.1",
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.15.1",
3
+ "version": "1.18.1",
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.15.1",
3
+ "contractVersion": "1.18.1",
4
4
  "manifest": "manifest/app-facade.v1.json",
5
5
  "schemas": {
6
6
  "call": "schema/facade-call.v1.schema.json",
@@ -10,6 +10,8 @@
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
+ "systemHosts": "schema/system-hosts.v1.schema.json",
14
+ "systemHostsRuntime": "schema/system-hosts-runtime.v1.schema.json",
13
15
  "systemInstances": "schema/system-instances.v1.schema.json",
14
16
  "topology": "schema/topology.v1.schema.json",
15
17
  "deviceTopology": "schema/device-topology.v1.schema.json"
@@ -0,0 +1,22 @@
1
+ {
2
+ "type": "object",
3
+ "additionalProperties": false,
4
+ "required": [
5
+ "contract",
6
+ "scopeId",
7
+ "hostId",
8
+ "result"
9
+ ],
10
+ "properties": {
11
+ "contract": {
12
+ "const": "mhome.system.hosts.runtime.v1"
13
+ },
14
+ "scopeId": {
15
+ "type": "string"
16
+ },
17
+ "hostId": {
18
+ "type": "string"
19
+ },
20
+ "result": {}
21
+ }
22
+ }
@@ -0,0 +1,249 @@
1
+ {
2
+ "type": "object",
3
+ "additionalProperties": false,
4
+ "required": [
5
+ "contract",
6
+ "scopeId",
7
+ "observedAtMs",
8
+ "hosts"
9
+ ],
10
+ "properties": {
11
+ "contract": {
12
+ "const": "mhome.system.hosts.v1"
13
+ },
14
+ "scopeId": {
15
+ "type": "string"
16
+ },
17
+ "observedAtMs": {
18
+ "type": "integer",
19
+ "minimum": 0
20
+ },
21
+ "hosts": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "required": [
27
+ "hostId",
28
+ "hostName",
29
+ "hostType",
30
+ "source",
31
+ "reachable",
32
+ "claimable",
33
+ "info"
34
+ ],
35
+ "properties": {
36
+ "hostId": {
37
+ "type": "string"
38
+ },
39
+ "hostName": {
40
+ "type": "string"
41
+ },
42
+ "hostType": {
43
+ "type": "string"
44
+ },
45
+ "source": {
46
+ "enum": [
47
+ "local",
48
+ "mdns"
49
+ ]
50
+ },
51
+ "reachable": {
52
+ "type": "boolean"
53
+ },
54
+ "claimable": {
55
+ "type": "boolean"
56
+ },
57
+ "info": {
58
+ "type": "object",
59
+ "additionalProperties": false,
60
+ "required": [
61
+ "status",
62
+ "data",
63
+ "observedAtMs",
64
+ "lastAttemptAtMs",
65
+ "stale",
66
+ "errorCode"
67
+ ],
68
+ "properties": {
69
+ "status": {
70
+ "enum": [
71
+ "ok",
72
+ "unavailable",
73
+ "unsupported",
74
+ "notQueried"
75
+ ]
76
+ },
77
+ "data": {
78
+ "anyOf": [
79
+ {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": [
83
+ "hostId",
84
+ "hostName",
85
+ "hostType",
86
+ "os",
87
+ "osVersion",
88
+ "cpu",
89
+ "memory",
90
+ "disk",
91
+ "gpus"
92
+ ],
93
+ "properties": {
94
+ "hostId": {
95
+ "type": "string"
96
+ },
97
+ "hostName": {
98
+ "type": "string"
99
+ },
100
+ "hostType": {
101
+ "type": "string"
102
+ },
103
+ "os": {
104
+ "type": "string"
105
+ },
106
+ "osVersion": {
107
+ "anyOf": [
108
+ {
109
+ "type": "string"
110
+ },
111
+ {
112
+ "type": "null"
113
+ }
114
+ ]
115
+ },
116
+ "cpu": {
117
+ "type": "object",
118
+ "additionalProperties": false,
119
+ "required": [
120
+ "arch",
121
+ "logicalCores",
122
+ "model"
123
+ ],
124
+ "properties": {
125
+ "arch": {
126
+ "type": "string"
127
+ },
128
+ "logicalCores": {
129
+ "type": "integer",
130
+ "minimum": 0
131
+ },
132
+ "model": {
133
+ "type": "string"
134
+ }
135
+ }
136
+ },
137
+ "memory": {
138
+ "type": "object",
139
+ "additionalProperties": false,
140
+ "required": [
141
+ "totalBytes"
142
+ ],
143
+ "properties": {
144
+ "totalBytes": {
145
+ "type": "integer",
146
+ "minimum": 0
147
+ }
148
+ }
149
+ },
150
+ "disk": {
151
+ "anyOf": [
152
+ {
153
+ "type": "object",
154
+ "additionalProperties": false,
155
+ "required": [
156
+ "totalBytes"
157
+ ],
158
+ "properties": {
159
+ "totalBytes": {
160
+ "type": "integer",
161
+ "minimum": 0
162
+ }
163
+ }
164
+ },
165
+ {
166
+ "type": "null"
167
+ }
168
+ ]
169
+ },
170
+ "gpus": {
171
+ "type": "array",
172
+ "items": {
173
+ "type": "object",
174
+ "additionalProperties": false,
175
+ "required": [
176
+ "vendor",
177
+ "name",
178
+ "memoryBytes"
179
+ ],
180
+ "properties": {
181
+ "vendor": {
182
+ "type": "string"
183
+ },
184
+ "name": {
185
+ "type": "string"
186
+ },
187
+ "memoryBytes": {
188
+ "anyOf": [
189
+ {
190
+ "type": "integer",
191
+ "minimum": 0
192
+ },
193
+ {
194
+ "type": "null"
195
+ }
196
+ ]
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ },
203
+ {
204
+ "type": "null"
205
+ }
206
+ ]
207
+ },
208
+ "observedAtMs": {
209
+ "anyOf": [
210
+ {
211
+ "type": "integer",
212
+ "minimum": 0
213
+ },
214
+ {
215
+ "type": "null"
216
+ }
217
+ ]
218
+ },
219
+ "lastAttemptAtMs": {
220
+ "anyOf": [
221
+ {
222
+ "type": "integer",
223
+ "minimum": 0
224
+ },
225
+ {
226
+ "type": "null"
227
+ }
228
+ ]
229
+ },
230
+ "stale": {
231
+ "type": "boolean"
232
+ },
233
+ "errorCode": {
234
+ "anyOf": [
235
+ {
236
+ "type": "string"
237
+ },
238
+ {
239
+ "type": "null"
240
+ }
241
+ ]
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
+ }
248
+ }
249
+ }