@mhome/app-facade-protocol 1.43.0 → 1.44.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
@@ -69,23 +69,21 @@ Host inventory and management on the selected Hub through `/app/system/hosts/*`.
69
69
  A native Client remains the path when no local Hub is selected. Lion's legacy
70
70
  controller annotations and non-`/app/*` protocols are outside this contract.
71
71
 
72
- ### System plugin catalog
73
-
74
- `/app/plugin/catalog/list` returns `manifest/plugin-catalog.v1.json` from Cloud,
75
- without requiring a local Space or connected Hub. Authentication and Space
76
- membership still apply. Core also serves this catalog for clients with an older
77
- routing manifest. The response schema is `schema/plugin-catalog.v1.schema.json`.
78
-
79
- The catalog describes supported types, not installed software or bindings.
80
- `componentId` joins to Host runtime inspection; `nodeType` joins to existing
81
- Plugin candidate and installed/binding queries. Platform installability and
82
- versions come from the Host release catalog, not this directory.
83
-
84
- Core and Cloud embed generated copies. After editing the catalog, run
85
- `node scripts/sync-plugin-catalog.mjs --write <core-resource> <cloud-resource>`
86
- from the Foundation root; omit `--write` to check conformance. Resource paths are
87
- `src/application/plugin-catalog.v1.json` (Core) and
88
- `src/main/resources/app/plugin-catalog.v1.json` (Cloud module-service).
72
+ ### Plugin catalog
73
+
74
+ `/app/plugin/catalog/list` reads publisher-signed platform indexes under
75
+ `https://install.mhome.ai/plugins/stable/<platform>/catalog.bundle.json`.
76
+ Cloud serves this browsing view without a connected Hub. Authentication and
77
+ Space membership still apply. Core exposes the same response for local callers.
78
+ The response schema is `schema/plugin-catalog.v1.schema.json`; `platformErrors`
79
+ reports unavailable indexes while preserving results from other platforms.
80
+
81
+ Foundation defines contracts, not the list of Plugins. Plugin source owns its
82
+ definition; releases publish it with each immutable per-version manifest.
83
+ `componentId` joins Host inventory, and `nodeType` joins candidates and bindings.
84
+ Catalog availability is a browsing hint. Binding uses `/node/metadata` from the
85
+ actual running Node, verifies publisher evidence, and persists that definition
86
+ with the binding. A cached latest catalog never overrides installed facts.
89
87
 
90
88
  ## Shared messaging codes (1.10)
91
89
 
@@ -97,3 +95,5 @@ Code creation may omit bot/account and group/surface identifiers. The receiving
97
95
  Client sessions. Host inventory and operations use `/app/system/hosts/get` and
98
96
  `/app/system/hosts/runtime`, forwarding cloud-issued User tokens through the
99
97
  current Core. First claim is direct LAN only. See [SYSTEM.md](SYSTEM.md).
98
+
99
+ Business operation permissions are declared once in [the authorization manifest](manifest/authorization.v1.json), consumed by Core and Lion. See [business authorization](contract/authorization-v1.md).
@@ -362,11 +362,12 @@ scan runs waits for it. `revision` increases on every observable change.
362
362
  `delivering` on it is `activateBefore` plus 30 seconds.
363
363
 
364
364
  Only the device's durable `commissioned` response confirms successful setup.
365
- Lost LAN delivery confirmation or activation status fails the attempt, even
366
- when Lion has already activated its credential. Expiry fails or times out the
367
- attempt. The commissioner does not recover interrupted setup through Lion's
368
- credential status. The user selects the network-ready device again, establishes
369
- a fresh LAN session and reads its actual activation status.
365
+ Lost LAN confirmation triggers at most three reconnections to this attempt's
366
+ endpoint. Each connection reestablishes channel security and checks device,
367
+ environment and enrollment identity before reading status. Never issue or
368
+ deliver a second credential during recovery. Failure to confirm, or expiry,
369
+ ends the attempt; the user may then select the network-ready device again.
370
+ Cloud state alone never confirms successful device setup.
370
371
 
371
372
  A refused `deliver` fails with `delivery_failed` carrying the pod's `reason`
372
373
  (`invalid_payload` or `wrong_state`) in `detail`. When the pod
@@ -0,0 +1,618 @@
1
+ [
2
+ {
3
+ "name": "owner:/app/device/list",
4
+ "principal": {
5
+ "kind": "user",
6
+ "userId": "owner"
7
+ },
8
+ "memberRole": "OWNER",
9
+ "tenantId": "tenant",
10
+ "scopeId": "space",
11
+ "target": "/app/device/list",
12
+ "allowed": true
13
+ },
14
+ {
15
+ "name": "owner:/app/capability/invoke",
16
+ "principal": {
17
+ "kind": "user",
18
+ "userId": "owner"
19
+ },
20
+ "memberRole": "OWNER",
21
+ "tenantId": "tenant",
22
+ "scopeId": "space",
23
+ "target": "/app/capability/invoke",
24
+ "allowed": true
25
+ },
26
+ {
27
+ "name": "owner:/app/hub/restart",
28
+ "principal": {
29
+ "kind": "user",
30
+ "userId": "owner"
31
+ },
32
+ "memberRole": "OWNER",
33
+ "tenantId": "tenant",
34
+ "scopeId": "space",
35
+ "target": "/app/hub/restart",
36
+ "allowed": true
37
+ },
38
+ {
39
+ "name": "owner:/app/user/profile/get",
40
+ "principal": {
41
+ "kind": "user",
42
+ "userId": "owner"
43
+ },
44
+ "memberRole": "OWNER",
45
+ "tenantId": "tenant",
46
+ "scopeId": "space",
47
+ "target": "/app/user/profile/get",
48
+ "allowed": true
49
+ },
50
+ {
51
+ "name": "owner:/app/plugin/camera/device/list",
52
+ "principal": {
53
+ "kind": "user",
54
+ "userId": "owner"
55
+ },
56
+ "memberRole": "OWNER",
57
+ "tenantId": "tenant",
58
+ "scopeId": "space",
59
+ "target": "/app/plugin/camera/device/list",
60
+ "allowed": true
61
+ },
62
+ {
63
+ "name": "owner:/unknown",
64
+ "principal": {
65
+ "kind": "user",
66
+ "userId": "owner"
67
+ },
68
+ "memberRole": "OWNER",
69
+ "tenantId": "tenant",
70
+ "scopeId": "space",
71
+ "target": "/unknown",
72
+ "allowed": false
73
+ },
74
+ {
75
+ "name": "owner:/app/artifact/internal/read",
76
+ "principal": {
77
+ "kind": "user",
78
+ "userId": "owner"
79
+ },
80
+ "memberRole": "OWNER",
81
+ "tenantId": "tenant",
82
+ "scopeId": "space",
83
+ "target": "/app/artifact/internal/read",
84
+ "allowed": false
85
+ },
86
+ {
87
+ "name": "member:/app/device/list",
88
+ "principal": {
89
+ "kind": "user",
90
+ "userId": "member"
91
+ },
92
+ "memberRole": "MEMBER",
93
+ "tenantId": "tenant",
94
+ "scopeId": "space",
95
+ "target": "/app/device/list",
96
+ "allowed": true
97
+ },
98
+ {
99
+ "name": "member:/app/capability/invoke",
100
+ "principal": {
101
+ "kind": "user",
102
+ "userId": "member"
103
+ },
104
+ "memberRole": "MEMBER",
105
+ "tenantId": "tenant",
106
+ "scopeId": "space",
107
+ "target": "/app/capability/invoke",
108
+ "allowed": true
109
+ },
110
+ {
111
+ "name": "member:/app/hub/restart",
112
+ "principal": {
113
+ "kind": "user",
114
+ "userId": "member"
115
+ },
116
+ "memberRole": "MEMBER",
117
+ "tenantId": "tenant",
118
+ "scopeId": "space",
119
+ "target": "/app/hub/restart",
120
+ "allowed": false
121
+ },
122
+ {
123
+ "name": "member:/app/user/profile/get",
124
+ "principal": {
125
+ "kind": "user",
126
+ "userId": "member"
127
+ },
128
+ "memberRole": "MEMBER",
129
+ "tenantId": "tenant",
130
+ "scopeId": "space",
131
+ "target": "/app/user/profile/get",
132
+ "allowed": true
133
+ },
134
+ {
135
+ "name": "member:/app/plugin/camera/device/list",
136
+ "principal": {
137
+ "kind": "user",
138
+ "userId": "member"
139
+ },
140
+ "memberRole": "MEMBER",
141
+ "tenantId": "tenant",
142
+ "scopeId": "space",
143
+ "target": "/app/plugin/camera/device/list",
144
+ "allowed": true
145
+ },
146
+ {
147
+ "name": "member:/unknown",
148
+ "principal": {
149
+ "kind": "user",
150
+ "userId": "member"
151
+ },
152
+ "memberRole": "MEMBER",
153
+ "tenantId": "tenant",
154
+ "scopeId": "space",
155
+ "target": "/unknown",
156
+ "allowed": false
157
+ },
158
+ {
159
+ "name": "member:/app/artifact/internal/read",
160
+ "principal": {
161
+ "kind": "user",
162
+ "userId": "member"
163
+ },
164
+ "memberRole": "MEMBER",
165
+ "tenantId": "tenant",
166
+ "scopeId": "space",
167
+ "target": "/app/artifact/internal/read",
168
+ "allowed": false
169
+ },
170
+ {
171
+ "name": "removed:/app/device/list",
172
+ "principal": {
173
+ "kind": "user",
174
+ "userId": "former"
175
+ },
176
+ "memberRole": null,
177
+ "tenantId": "tenant",
178
+ "scopeId": "space",
179
+ "target": "/app/device/list",
180
+ "allowed": false
181
+ },
182
+ {
183
+ "name": "removed:/app/capability/invoke",
184
+ "principal": {
185
+ "kind": "user",
186
+ "userId": "former"
187
+ },
188
+ "memberRole": null,
189
+ "tenantId": "tenant",
190
+ "scopeId": "space",
191
+ "target": "/app/capability/invoke",
192
+ "allowed": false
193
+ },
194
+ {
195
+ "name": "removed:/app/hub/restart",
196
+ "principal": {
197
+ "kind": "user",
198
+ "userId": "former"
199
+ },
200
+ "memberRole": null,
201
+ "tenantId": "tenant",
202
+ "scopeId": "space",
203
+ "target": "/app/hub/restart",
204
+ "allowed": false
205
+ },
206
+ {
207
+ "name": "removed:/app/user/profile/get",
208
+ "principal": {
209
+ "kind": "user",
210
+ "userId": "former"
211
+ },
212
+ "memberRole": null,
213
+ "tenantId": "tenant",
214
+ "scopeId": "space",
215
+ "target": "/app/user/profile/get",
216
+ "allowed": true
217
+ },
218
+ {
219
+ "name": "removed:/app/plugin/camera/device/list",
220
+ "principal": {
221
+ "kind": "user",
222
+ "userId": "former"
223
+ },
224
+ "memberRole": null,
225
+ "tenantId": "tenant",
226
+ "scopeId": "space",
227
+ "target": "/app/plugin/camera/device/list",
228
+ "allowed": false
229
+ },
230
+ {
231
+ "name": "removed:/unknown",
232
+ "principal": {
233
+ "kind": "user",
234
+ "userId": "former"
235
+ },
236
+ "memberRole": null,
237
+ "tenantId": "tenant",
238
+ "scopeId": "space",
239
+ "target": "/unknown",
240
+ "allowed": false
241
+ },
242
+ {
243
+ "name": "removed:/app/artifact/internal/read",
244
+ "principal": {
245
+ "kind": "user",
246
+ "userId": "former"
247
+ },
248
+ "memberRole": null,
249
+ "tenantId": "tenant",
250
+ "scopeId": "space",
251
+ "target": "/app/artifact/internal/read",
252
+ "allowed": false
253
+ },
254
+ {
255
+ "name": "space:/app/device/list",
256
+ "principal": {
257
+ "kind": "space",
258
+ "tenantId": "tenant",
259
+ "scopeId": "space"
260
+ },
261
+ "memberRole": null,
262
+ "tenantId": "tenant",
263
+ "scopeId": "space",
264
+ "target": "/app/device/list",
265
+ "allowed": true
266
+ },
267
+ {
268
+ "name": "space:/app/capability/invoke",
269
+ "principal": {
270
+ "kind": "space",
271
+ "tenantId": "tenant",
272
+ "scopeId": "space"
273
+ },
274
+ "memberRole": null,
275
+ "tenantId": "tenant",
276
+ "scopeId": "space",
277
+ "target": "/app/capability/invoke",
278
+ "allowed": true
279
+ },
280
+ {
281
+ "name": "space:/app/hub/restart",
282
+ "principal": {
283
+ "kind": "space",
284
+ "tenantId": "tenant",
285
+ "scopeId": "space"
286
+ },
287
+ "memberRole": null,
288
+ "tenantId": "tenant",
289
+ "scopeId": "space",
290
+ "target": "/app/hub/restart",
291
+ "allowed": false
292
+ },
293
+ {
294
+ "name": "space:/app/user/profile/get",
295
+ "principal": {
296
+ "kind": "space",
297
+ "tenantId": "tenant",
298
+ "scopeId": "space"
299
+ },
300
+ "memberRole": null,
301
+ "tenantId": "tenant",
302
+ "scopeId": "space",
303
+ "target": "/app/user/profile/get",
304
+ "allowed": false
305
+ },
306
+ {
307
+ "name": "space:/app/plugin/camera/device/list",
308
+ "principal": {
309
+ "kind": "space",
310
+ "tenantId": "tenant",
311
+ "scopeId": "space"
312
+ },
313
+ "memberRole": null,
314
+ "tenantId": "tenant",
315
+ "scopeId": "space",
316
+ "target": "/app/plugin/camera/device/list",
317
+ "allowed": true
318
+ },
319
+ {
320
+ "name": "space:/unknown",
321
+ "principal": {
322
+ "kind": "space",
323
+ "tenantId": "tenant",
324
+ "scopeId": "space"
325
+ },
326
+ "memberRole": null,
327
+ "tenantId": "tenant",
328
+ "scopeId": "space",
329
+ "target": "/unknown",
330
+ "allowed": false
331
+ },
332
+ {
333
+ "name": "space:/app/artifact/internal/read",
334
+ "principal": {
335
+ "kind": "space",
336
+ "tenantId": "tenant",
337
+ "scopeId": "space"
338
+ },
339
+ "memberRole": null,
340
+ "tenantId": "tenant",
341
+ "scopeId": "space",
342
+ "target": "/app/artifact/internal/read",
343
+ "allowed": false
344
+ },
345
+ {
346
+ "name": "space-cannot-borrow-owner:/app/device/list",
347
+ "principal": {
348
+ "kind": "space",
349
+ "tenantId": "tenant",
350
+ "scopeId": "space"
351
+ },
352
+ "memberRole": "OWNER",
353
+ "tenantId": "tenant",
354
+ "scopeId": "space",
355
+ "target": "/app/device/list",
356
+ "allowed": true
357
+ },
358
+ {
359
+ "name": "space-cannot-borrow-owner:/app/capability/invoke",
360
+ "principal": {
361
+ "kind": "space",
362
+ "tenantId": "tenant",
363
+ "scopeId": "space"
364
+ },
365
+ "memberRole": "OWNER",
366
+ "tenantId": "tenant",
367
+ "scopeId": "space",
368
+ "target": "/app/capability/invoke",
369
+ "allowed": true
370
+ },
371
+ {
372
+ "name": "space-cannot-borrow-owner:/app/hub/restart",
373
+ "principal": {
374
+ "kind": "space",
375
+ "tenantId": "tenant",
376
+ "scopeId": "space"
377
+ },
378
+ "memberRole": "OWNER",
379
+ "tenantId": "tenant",
380
+ "scopeId": "space",
381
+ "target": "/app/hub/restart",
382
+ "allowed": false
383
+ },
384
+ {
385
+ "name": "space-cannot-borrow-owner:/app/user/profile/get",
386
+ "principal": {
387
+ "kind": "space",
388
+ "tenantId": "tenant",
389
+ "scopeId": "space"
390
+ },
391
+ "memberRole": "OWNER",
392
+ "tenantId": "tenant",
393
+ "scopeId": "space",
394
+ "target": "/app/user/profile/get",
395
+ "allowed": false
396
+ },
397
+ {
398
+ "name": "space-cannot-borrow-owner:/app/plugin/camera/device/list",
399
+ "principal": {
400
+ "kind": "space",
401
+ "tenantId": "tenant",
402
+ "scopeId": "space"
403
+ },
404
+ "memberRole": "OWNER",
405
+ "tenantId": "tenant",
406
+ "scopeId": "space",
407
+ "target": "/app/plugin/camera/device/list",
408
+ "allowed": true
409
+ },
410
+ {
411
+ "name": "space-cannot-borrow-owner:/unknown",
412
+ "principal": {
413
+ "kind": "space",
414
+ "tenantId": "tenant",
415
+ "scopeId": "space"
416
+ },
417
+ "memberRole": "OWNER",
418
+ "tenantId": "tenant",
419
+ "scopeId": "space",
420
+ "target": "/unknown",
421
+ "allowed": false
422
+ },
423
+ {
424
+ "name": "space-cannot-borrow-owner:/app/artifact/internal/read",
425
+ "principal": {
426
+ "kind": "space",
427
+ "tenantId": "tenant",
428
+ "scopeId": "space"
429
+ },
430
+ "memberRole": "OWNER",
431
+ "tenantId": "tenant",
432
+ "scopeId": "space",
433
+ "target": "/app/artifact/internal/read",
434
+ "allowed": false
435
+ },
436
+ {
437
+ "name": "foreign-space:/app/device/list",
438
+ "principal": {
439
+ "kind": "space",
440
+ "tenantId": "tenant",
441
+ "scopeId": "other"
442
+ },
443
+ "memberRole": null,
444
+ "tenantId": "tenant",
445
+ "scopeId": "space",
446
+ "target": "/app/device/list",
447
+ "allowed": false
448
+ },
449
+ {
450
+ "name": "foreign-space:/app/capability/invoke",
451
+ "principal": {
452
+ "kind": "space",
453
+ "tenantId": "tenant",
454
+ "scopeId": "other"
455
+ },
456
+ "memberRole": null,
457
+ "tenantId": "tenant",
458
+ "scopeId": "space",
459
+ "target": "/app/capability/invoke",
460
+ "allowed": false
461
+ },
462
+ {
463
+ "name": "foreign-space:/app/hub/restart",
464
+ "principal": {
465
+ "kind": "space",
466
+ "tenantId": "tenant",
467
+ "scopeId": "other"
468
+ },
469
+ "memberRole": null,
470
+ "tenantId": "tenant",
471
+ "scopeId": "space",
472
+ "target": "/app/hub/restart",
473
+ "allowed": false
474
+ },
475
+ {
476
+ "name": "foreign-space:/app/user/profile/get",
477
+ "principal": {
478
+ "kind": "space",
479
+ "tenantId": "tenant",
480
+ "scopeId": "other"
481
+ },
482
+ "memberRole": null,
483
+ "tenantId": "tenant",
484
+ "scopeId": "space",
485
+ "target": "/app/user/profile/get",
486
+ "allowed": false
487
+ },
488
+ {
489
+ "name": "foreign-space:/app/plugin/camera/device/list",
490
+ "principal": {
491
+ "kind": "space",
492
+ "tenantId": "tenant",
493
+ "scopeId": "other"
494
+ },
495
+ "memberRole": null,
496
+ "tenantId": "tenant",
497
+ "scopeId": "space",
498
+ "target": "/app/plugin/camera/device/list",
499
+ "allowed": false
500
+ },
501
+ {
502
+ "name": "foreign-space:/unknown",
503
+ "principal": {
504
+ "kind": "space",
505
+ "tenantId": "tenant",
506
+ "scopeId": "other"
507
+ },
508
+ "memberRole": null,
509
+ "tenantId": "tenant",
510
+ "scopeId": "space",
511
+ "target": "/unknown",
512
+ "allowed": false
513
+ },
514
+ {
515
+ "name": "foreign-space:/app/artifact/internal/read",
516
+ "principal": {
517
+ "kind": "space",
518
+ "tenantId": "tenant",
519
+ "scopeId": "other"
520
+ },
521
+ "memberRole": null,
522
+ "tenantId": "tenant",
523
+ "scopeId": "space",
524
+ "target": "/app/artifact/internal/read",
525
+ "allowed": false
526
+ },
527
+ {
528
+ "name": "foreign-tenant:/app/device/list",
529
+ "principal": {
530
+ "kind": "space",
531
+ "tenantId": "other",
532
+ "scopeId": "space"
533
+ },
534
+ "memberRole": null,
535
+ "tenantId": "tenant",
536
+ "scopeId": "space",
537
+ "target": "/app/device/list",
538
+ "allowed": false
539
+ },
540
+ {
541
+ "name": "foreign-tenant:/app/capability/invoke",
542
+ "principal": {
543
+ "kind": "space",
544
+ "tenantId": "other",
545
+ "scopeId": "space"
546
+ },
547
+ "memberRole": null,
548
+ "tenantId": "tenant",
549
+ "scopeId": "space",
550
+ "target": "/app/capability/invoke",
551
+ "allowed": false
552
+ },
553
+ {
554
+ "name": "foreign-tenant:/app/hub/restart",
555
+ "principal": {
556
+ "kind": "space",
557
+ "tenantId": "other",
558
+ "scopeId": "space"
559
+ },
560
+ "memberRole": null,
561
+ "tenantId": "tenant",
562
+ "scopeId": "space",
563
+ "target": "/app/hub/restart",
564
+ "allowed": false
565
+ },
566
+ {
567
+ "name": "foreign-tenant:/app/user/profile/get",
568
+ "principal": {
569
+ "kind": "space",
570
+ "tenantId": "other",
571
+ "scopeId": "space"
572
+ },
573
+ "memberRole": null,
574
+ "tenantId": "tenant",
575
+ "scopeId": "space",
576
+ "target": "/app/user/profile/get",
577
+ "allowed": false
578
+ },
579
+ {
580
+ "name": "foreign-tenant:/app/plugin/camera/device/list",
581
+ "principal": {
582
+ "kind": "space",
583
+ "tenantId": "other",
584
+ "scopeId": "space"
585
+ },
586
+ "memberRole": null,
587
+ "tenantId": "tenant",
588
+ "scopeId": "space",
589
+ "target": "/app/plugin/camera/device/list",
590
+ "allowed": false
591
+ },
592
+ {
593
+ "name": "foreign-tenant:/unknown",
594
+ "principal": {
595
+ "kind": "space",
596
+ "tenantId": "other",
597
+ "scopeId": "space"
598
+ },
599
+ "memberRole": null,
600
+ "tenantId": "tenant",
601
+ "scopeId": "space",
602
+ "target": "/unknown",
603
+ "allowed": false
604
+ },
605
+ {
606
+ "name": "foreign-tenant:/app/artifact/internal/read",
607
+ "principal": {
608
+ "kind": "space",
609
+ "tenantId": "other",
610
+ "scopeId": "space"
611
+ },
612
+ "memberRole": null,
613
+ "tenantId": "tenant",
614
+ "scopeId": "space",
615
+ "target": "/app/artifact/internal/read",
616
+ "allowed": false
617
+ }
618
+ ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.v1",
3
- "contractVersion": "1.43.0",
3
+ "contractVersion": "1.44.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",
@@ -11,7 +11,10 @@
11
11
  "/app/artifact/resolve",
12
12
  "/app/artifact/put",
13
13
  "/app/artifact/import",
14
- "/app/artifact/delete"
14
+ "/app/artifact/delete",
15
+ "/app/artifact/upload/start",
16
+ "/app/artifact/upload/complete",
17
+ "/app/artifact/upload/cancel"
15
18
  ]
16
19
  },
17
20
  "hub": {
@@ -33,7 +36,6 @@
33
36
  "plugin": {
34
37
  "extensionVersion": "v1",
35
38
  "targetPrefix": "/app/plugin",
36
- "catalog": "manifest/plugin-catalog.v1.json",
37
39
  "catalogSchema": "schema/plugin-catalog.v1.schema.json",
38
40
  "exactRequestTargets": [
39
41
  "/app/plugin/catalog/list",
@@ -145,5 +147,7 @@
145
147
  "authorizationTarget": "/app/host/authorization",
146
148
  "authorizationSchema": "schema/host-authorization.v1.schema.json"
147
149
  }
148
- }
150
+ },
151
+ "authorization": "manifest/authorization.v1.json",
152
+ "delegatedCallSchema": "schema/delegated-call.v1.schema.json"
149
153
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.host-provision.targets.v1",
3
- "contractVersion": "1.43.0",
3
+ "contractVersion": "1.44.0",
4
4
  "contract": "contract/host-provisioning-v1.md",
5
5
  "localTargets": [
6
6
  "/local/host/provision/start",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.hub.targets.v1",
3
- "contractVersion": "1.43.0",
3
+ "contractVersion": "1.44.0",
4
4
  "appTargets": [
5
5
  "/app/hub/get",
6
6
  "/app/hub/remove",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.pod.targets.v1",
3
- "contractVersion": "1.43.0",
3
+ "contractVersion": "1.44.0",
4
4
  "contract": "contract/pod-commissioning-v1.md",
5
5
  "localTargets": [
6
6
  "/local/pod/discovery/start",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.routing.v1",
3
- "contractVersion": "1.43.0",
3
+ "contractVersion": "1.44.0",
4
4
  "targetPrefix": "/app/",
5
5
  "default": {
6
6
  "execution": "scopeMode",
@@ -30,7 +30,10 @@
30
30
  "/app/scope/context/get",
31
31
  "/app/artifact/put",
32
32
  "/app/artifact/import",
33
- "/app/artifact/delete"
33
+ "/app/artifact/delete",
34
+ "/app/artifact/upload/start",
35
+ "/app/artifact/upload/complete",
36
+ "/app/artifact/upload/cancel"
34
37
  ],
35
38
  "hubPrefixes": [
36
39
  "/app/plugin/",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.messaging.targets.v1",
3
- "contractVersion": "1.43.0",
3
+ "contractVersion": "1.44.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.43.0",
3
+ "version": "1.44.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.43.0",
3
+ "contractVersion": "1.44.0",
4
4
  "manifest": "manifest/app-facade.v1.json",
5
5
  "schemas": {
6
6
  "hostAuthorization": "schema/host-authorization.v1.schema.json",