@mhome/app-facade-protocol 1.85.0 → 1.90.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.
@@ -650,5 +650,93 @@
650
650
  "scopeId": "space",
651
651
  "target": "/app/agent/credit/usage",
652
652
  "allowed": false
653
+ },
654
+ {
655
+ "name": "owner:/app/now/attention/list",
656
+ "principal": {
657
+ "kind": "user",
658
+ "userId": "owner"
659
+ },
660
+ "memberRole": "OWNER",
661
+ "tenantId": "tenant",
662
+ "scopeId": "space",
663
+ "target": "/app/now/attention/list",
664
+ "allowed": true
665
+ },
666
+ {
667
+ "name": "member:/app/now/attention/list",
668
+ "principal": {
669
+ "kind": "user",
670
+ "userId": "member"
671
+ },
672
+ "memberRole": "MEMBER",
673
+ "tenantId": "tenant",
674
+ "scopeId": "space",
675
+ "target": "/app/now/attention/list",
676
+ "allowed": true
677
+ },
678
+ {
679
+ "name": "removed:/app/now/attention/list",
680
+ "principal": {
681
+ "kind": "user",
682
+ "userId": "former"
683
+ },
684
+ "memberRole": null,
685
+ "tenantId": "tenant",
686
+ "scopeId": "space",
687
+ "target": "/app/now/attention/list",
688
+ "allowed": false
689
+ },
690
+ {
691
+ "name": "space:/app/now/attention/list",
692
+ "principal": {
693
+ "kind": "space",
694
+ "tenantId": "tenant",
695
+ "scopeId": "space"
696
+ },
697
+ "memberRole": null,
698
+ "tenantId": "tenant",
699
+ "scopeId": "space",
700
+ "target": "/app/now/attention/list",
701
+ "allowed": true
702
+ },
703
+ {
704
+ "name": "space-cannot-borrow-owner:/app/now/attention/list",
705
+ "principal": {
706
+ "kind": "space",
707
+ "tenantId": "tenant",
708
+ "scopeId": "space"
709
+ },
710
+ "memberRole": "OWNER",
711
+ "tenantId": "tenant",
712
+ "scopeId": "space",
713
+ "target": "/app/now/attention/list",
714
+ "allowed": true
715
+ },
716
+ {
717
+ "name": "foreign-space:/app/now/attention/list",
718
+ "principal": {
719
+ "kind": "space",
720
+ "tenantId": "tenant",
721
+ "scopeId": "other"
722
+ },
723
+ "memberRole": null,
724
+ "tenantId": "tenant",
725
+ "scopeId": "space",
726
+ "target": "/app/now/attention/list",
727
+ "allowed": false
728
+ },
729
+ {
730
+ "name": "foreign-tenant:/app/now/attention/list",
731
+ "principal": {
732
+ "kind": "space",
733
+ "tenantId": "other",
734
+ "scopeId": "space"
735
+ },
736
+ "memberRole": null,
737
+ "tenantId": "tenant",
738
+ "scopeId": "space",
739
+ "target": "/app/now/attention/list",
740
+ "allowed": false
653
741
  }
654
742
  ]
@@ -6,7 +6,8 @@
6
6
  {
7
7
  "id": "evening",
8
8
  "spaceId": "space-a",
9
- "releaseId": "mlink:example.evening@1.0.0"
9
+ "releaseId": "mlink:example.evening@1.0.0",
10
+ "baseUi": "default"
10
11
  }
11
12
  ],
12
13
  "overrides": [
@@ -17,7 +18,8 @@
17
18
  "rendererId": "evening-light",
18
19
  "config": {
19
20
  "accent": "#c04040"
20
- }
21
+ },
22
+ "baseUi": "default"
21
23
  }
22
24
  ],
23
25
  "releases": [
@@ -71,7 +73,8 @@
71
73
  "sizeBytes": 1,
72
74
  "sha256": "0000000000000000000000000000000000000000000000000000000000000000"
73
75
  }
74
- ]
76
+ ],
77
+ "baseUi": "default"
75
78
  }
76
79
  }
77
80
  ]
@@ -314,14 +314,14 @@
314
314
  "essential": {
315
315
  "since": "10min",
316
316
  "from": 0,
317
- "until": "1970-01-01 00:00:00 +00:00 (UTC)",
317
+ "until": "1970-01-01 00:00:00.100 +00:00 (UTC)",
318
318
  "activities": [
319
319
  {
320
320
  "automationId": "a1",
321
321
  "automationName": "Morning",
322
322
  "automationType": "TASK_FLOW",
323
323
  "activityType": "RUN_FAILED",
324
- "timestamp": "1970-01-01 00:00:00 +00:00 (UTC)",
324
+ "timestamp": "1970-01-01 00:00:00.100 +00:00 (UTC)",
325
325
  "instanceId": "run",
326
326
  "threadId": 0,
327
327
  "singleUse": false
@@ -377,7 +377,7 @@
377
377
  "name": "Morning",
378
378
  "threadId": 0,
379
379
  "instanceId": "run",
380
- "timestamp": "1970-01-01 00:00:00 +00:00 (UTC)",
380
+ "timestamp": "1970-01-01 00:00:00.100 +00:00 (UTC)",
381
381
  "status": "failed",
382
382
  "reportMode": "STD",
383
383
  "logCount": 2,
@@ -389,18 +389,18 @@
389
389
  "code": "TIMEOUT"
390
390
  },
391
391
  "revision": 3,
392
- "startedAt": "1970-01-01 00:00:00 +00:00 (UTC)",
393
- "finishedAt": "1970-01-01 00:00:00 +00:00 (UTC)",
392
+ "startedAt": "1970-01-01 00:00:00.090 +00:00 (UTC)",
393
+ "finishedAt": "1970-01-01 00:00:00.100 +00:00 (UTC)",
394
394
  "logs": [
395
395
  {
396
396
  "level": "INFO",
397
397
  "message": "Invoked device",
398
- "timestamp": "1970-01-01 00:00:00 +00:00 (UTC)"
398
+ "timestamp": "1970-01-01 00:00:00.100 +00:00 (UTC)"
399
399
  },
400
400
  {
401
401
  "level": "ERROR",
402
402
  "message": "Timed out",
403
- "timestamp": "1970-01-01 00:00:00 +00:00 (UTC)"
403
+ "timestamp": "1970-01-01 00:00:00.100 +00:00 (UTC)"
404
404
  }
405
405
  ]
406
406
  }
@@ -430,7 +430,7 @@
430
430
  "snapshots": [
431
431
  {
432
432
  "snapshotId": "v1",
433
- "createdAt": "1970-01-01 00:00:00 +00:00 (UTC)",
433
+ "createdAt": "1970-01-01 00:00:00.090 +00:00 (UTC)",
434
434
  "description": "Prior behavior",
435
435
  "automationType": "TASK_FLOW"
436
436
  }
@@ -669,7 +669,8 @@
669
669
  "capabilityId": "command.onOff",
670
670
  "data": {
671
671
  "value": false,
672
- "level": 0
672
+ "level": 0,
673
+ "optional": null
673
674
  },
674
675
  "traceSteps": [
675
676
  {
@@ -753,7 +754,9 @@
753
754
  "deviceName": "Button",
754
755
  "capabilityId": "event.click",
755
756
  "changedAt": "2026-10-27 01:59:58 +00:00 (UTC)",
756
- "event": {}
757
+ "event": {
758
+ "value": null
759
+ }
757
760
  },
758
761
  {
759
762
  "deviceId": "d4",
@@ -1136,7 +1139,10 @@
1136
1139
  "status": "success",
1137
1140
  "essential": {
1138
1141
  "spaceId": "space-demo",
1139
- "configured": false
1142
+ "configured": false,
1143
+ "hub": null,
1144
+ "operation": null,
1145
+ "revocation": null
1140
1146
  }
1141
1147
  },
1142
1148
  {
@@ -1201,7 +1207,8 @@
1201
1207
  "activatedAt": 1800000001000,
1202
1208
  "connection": {
1203
1209
  "state": "unknown",
1204
- "source": "unavailable"
1210
+ "source": "unavailable",
1211
+ "spaceId": null
1205
1212
  }
1206
1213
  }
1207
1214
  ],
@@ -1277,7 +1284,8 @@
1277
1284
  "status": "active",
1278
1285
  "providerData": {
1279
1286
  "botUsername": "ExampleBot"
1280
- }
1287
+ },
1288
+ "statusMessage": null
1281
1289
  }
1282
1290
  ]
1283
1291
  }
@@ -1355,11 +1363,13 @@
1355
1363
  "toVersion": "1.0.0",
1356
1364
  "compatibility": {
1357
1365
  "coreProtocol": 1
1358
- }
1366
+ },
1367
+ "fromVersion": null
1359
1368
  }
1360
1369
  ]
1361
1370
  }
1362
- }
1371
+ },
1372
+ "error": null
1363
1373
  }
1364
1374
  },
1365
1375
  {
@@ -1380,7 +1390,9 @@
1380
1390
  "hostId": "host-demo",
1381
1391
  "state": "queued",
1382
1392
  "phase": "queued",
1383
- "updatedAtMs": 1800000000000
1393
+ "updatedAtMs": 1800000000000,
1394
+ "error": null,
1395
+ "result": null
1384
1396
  }
1385
1397
  },
1386
1398
  {
@@ -1402,7 +1414,8 @@
1402
1414
  "state": "failed",
1403
1415
  "phase": "interrupted",
1404
1416
  "updatedAtMs": 1800000000000,
1405
- "error": "Host operation interrupted"
1417
+ "error": "Host operation interrupted",
1418
+ "result": null
1406
1419
  }
1407
1420
  },
1408
1421
  {
@@ -1572,7 +1585,9 @@
1572
1585
  "supported": true,
1573
1586
  "selectable": true,
1574
1587
  "structurallyValid": false,
1575
- "reason": "Repair required"
1588
+ "reason": "Repair required",
1589
+ "enabled": null,
1590
+ "catalogError": null
1576
1591
  }
1577
1592
  ],
1578
1593
  "runtime": {
@@ -1610,18 +1625,24 @@
1610
1625
  "toVersion": "1.0.0",
1611
1626
  "compatibility": {
1612
1627
  "coreProtocol": 1
1613
- }
1628
+ },
1629
+ "fromVersion": null
1614
1630
  }
1615
1631
  ]
1616
1632
  }
1617
- }
1633
+ },
1634
+ "error": null
1618
1635
  }
1619
1636
  ],
1620
1637
  "protocolVersion": 1,
1621
1638
  "platform": "macos-arm64",
1622
1639
  "managementMode": "desktop",
1623
1640
  "catalogLoading": false,
1624
- "pluginCatalogLoading": false
1641
+ "pluginCatalogLoading": false,
1642
+ "unsupportedReason": null,
1643
+ "pluginCatalogError": null,
1644
+ "runtimeError": null,
1645
+ "catalogError": null
1625
1646
  }
1626
1647
  }
1627
1648
  },
@@ -1633,7 +1654,8 @@
1633
1654
  "detail": {
1634
1655
  "status": "unavailable",
1635
1656
  "error": "notObserved",
1636
- "stale": false
1657
+ "stale": false,
1658
+ "data": null
1637
1659
  }
1638
1660
  }
1639
1661
  ],
@@ -1644,7 +1666,7 @@
1644
1666
  },
1645
1667
  {
1646
1668
  "name": "card-skin-release-detail",
1647
- "target": "/app/card-skins/catalog/release/get",
1669
+ "target": "/app/ui/customize/cards/catalog/release/get",
1648
1670
  "data": {
1649
1671
  "id": "release-demo",
1650
1672
  "baseUrl": "https://example.invalid/skin/",
@@ -1689,7 +1711,8 @@
1689
1711
  }
1690
1712
  }
1691
1713
  }
1692
- ]
1714
+ ],
1715
+ "baseUi": "default"
1693
1716
  }
1694
1717
  },
1695
1718
  "status": "success",
@@ -1727,13 +1750,14 @@
1727
1750
  }
1728
1751
  }
1729
1752
  }
1730
- ]
1753
+ ],
1754
+ "baseUi": "default"
1731
1755
  }
1732
1756
  }
1733
1757
  },
1734
1758
  {
1735
1759
  "name": "card-skin-release-list",
1736
- "target": "/app/card-skins/catalog/release/list",
1760
+ "target": "/app/ui/customize/cards/catalog/release/list",
1737
1761
  "data": {
1738
1762
  "releases": [
1739
1763
  {
@@ -1780,7 +1804,8 @@
1780
1804
  }
1781
1805
  }
1782
1806
  }
1783
- ]
1807
+ ],
1808
+ "baseUi": "default"
1784
1809
  }
1785
1810
  }
1786
1811
  ]
@@ -1813,7 +1838,8 @@
1813
1838
  "mode": "builtin"
1814
1839
  }
1815
1840
  }
1816
- ]
1841
+ ],
1842
+ "baseUi": "default"
1817
1843
  }
1818
1844
  }
1819
1845
  ]
@@ -1821,7 +1847,7 @@
1821
1847
  },
1822
1848
  {
1823
1849
  "name": "card-skin-selection",
1824
- "target": "/app/card-skins/selection/get",
1850
+ "target": "/app/ui/customize/cards/selection/get",
1825
1851
  "data": {
1826
1852
  "revision": "revision-demo",
1827
1853
  "selection": {
@@ -1829,7 +1855,8 @@
1829
1855
  {
1830
1856
  "id": "installation-demo",
1831
1857
  "spaceId": "space-demo",
1832
- "releaseId": "release-demo"
1858
+ "releaseId": "release-demo",
1859
+ "baseUi": "default"
1833
1860
  }
1834
1861
  ],
1835
1862
  "overrides": [
@@ -1840,7 +1867,8 @@
1840
1867
  "rendererId": "switch",
1841
1868
  "config": {
1842
1869
  "color": "red"
1843
- }
1870
+ },
1871
+ "baseUi": "default"
1844
1872
  }
1845
1873
  ],
1846
1874
  "releases": [
@@ -1888,7 +1916,8 @@
1888
1916
  }
1889
1917
  }
1890
1918
  }
1891
- ]
1919
+ ],
1920
+ "baseUi": "default"
1892
1921
  }
1893
1922
  }
1894
1923
  ]
@@ -1902,7 +1931,8 @@
1902
1931
  {
1903
1932
  "id": "installation-demo",
1904
1933
  "spaceId": "space-demo",
1905
- "releaseId": "release-demo"
1934
+ "releaseId": "release-demo",
1935
+ "baseUi": "default"
1906
1936
  }
1907
1937
  ],
1908
1938
  "overrides": [
@@ -1913,7 +1943,8 @@
1913
1943
  "rendererId": "switch",
1914
1944
  "config": {
1915
1945
  "color": "red"
1916
- }
1946
+ },
1947
+ "baseUi": "default"
1917
1948
  }
1918
1949
  ],
1919
1950
  "releases": [
@@ -1942,7 +1973,8 @@
1942
1973
  "mode": "builtin"
1943
1974
  }
1944
1975
  }
1945
- ]
1976
+ ],
1977
+ "baseUi": "default"
1946
1978
  }
1947
1979
  }
1948
1980
  ]
@@ -1951,7 +1983,7 @@
1951
1983
  },
1952
1984
  {
1953
1985
  "name": "card-skin-empty-ack",
1954
- "target": "/app/card-skins/install",
1986
+ "target": "/app/ui/customize/cards/install",
1955
1987
  "data": {},
1956
1988
  "status": "success",
1957
1989
  "essential": {}
@@ -1968,7 +2000,9 @@
1968
2000
  "status": "success",
1969
2001
  "essential": {
1970
2002
  "name": "Example user",
1971
- "email": "user@example.com"
2003
+ "email": "user@example.com",
2004
+ "avatarUrl": null,
2005
+ "avatarExpiresAtMs": null
1972
2006
  }
1973
2007
  },
1974
2008
  {
@@ -2127,7 +2161,11 @@
2127
2161
  "provider": "local_example",
2128
2162
  "model": "demo-chat",
2129
2163
  "source": "override",
2130
- "configuredModel": "demo-chat"
2164
+ "configuredModel": "demo-chat",
2165
+ "fastMode": null,
2166
+ "thinking": null,
2167
+ "reasoningEffort": null,
2168
+ "temperature": null
2131
2169
  }
2132
2170
  ],
2133
2171
  "defaultProviders": [
@@ -2221,7 +2259,8 @@
2221
2259
  "readinessByUseCase": {
2222
2260
  "chat": {
2223
2261
  "ready": true,
2224
- "modelCount": 1
2262
+ "modelCount": 1,
2263
+ "reason": null
2225
2264
  }
2226
2265
  }
2227
2266
  }
@@ -2519,7 +2558,11 @@
2519
2558
  "provider": "local_example",
2520
2559
  "model": "demo-chat",
2521
2560
  "source": "override",
2522
- "configuredModel": "demo-chat"
2561
+ "configuredModel": "demo-chat",
2562
+ "fastMode": null,
2563
+ "thinking": null,
2564
+ "reasoningEffort": null,
2565
+ "temperature": null
2523
2566
  }
2524
2567
  ],
2525
2568
  "defaultProviders": [],
@@ -2842,7 +2885,8 @@
2842
2885
  },
2843
2886
  {
2844
2887
  "cardId": "card-2",
2845
- "title": "Unpositioned"
2888
+ "title": "Unpositioned",
2889
+ "layout": null
2846
2890
  }
2847
2891
  ]
2848
2892
  }
@@ -3216,7 +3260,7 @@
3216
3260
  "code": "INVALID_RESPONSE"
3217
3261
  },
3218
3262
  {
3219
- "name": "essential omits null object fields recursively",
3263
+ "name": "essential preserves explicit null object fields",
3220
3264
  "target": "/app/test/read",
3221
3265
  "status": "success",
3222
3266
  "data": {
@@ -3248,19 +3292,22 @@
3248
3292
  "list": [],
3249
3293
  "object": {},
3250
3294
  "text": "null",
3251
- "profile": "field: null\nKeep this line\n"
3295
+ "profile": "field: null\nKeep this line\n",
3296
+ "missing": null
3252
3297
  },
3253
3298
  "rows": [
3254
3299
  null,
3255
3300
  {
3256
- "id": "row-1"
3301
+ "id": "row-1",
3302
+ "missing": null
3257
3303
  },
3258
3304
  {}
3259
- ]
3305
+ ],
3306
+ "missing": null
3260
3307
  }
3261
3308
  },
3262
3309
  {
3263
- "name": "partial essential omits missing diagnostics",
3310
+ "name": "partial essential preserves explicit null diagnostics",
3264
3311
  "target": "/app/room/devices/move",
3265
3312
  "status": "partial",
3266
3313
  "data": {
@@ -3283,13 +3330,15 @@
3283
3330
  "notMoved": [
3284
3331
  {
3285
3332
  "deviceId": "b",
3286
- "reason": "offline"
3333
+ "reason": "offline",
3334
+ "retryAfter": null
3287
3335
  }
3288
- ]
3336
+ ],
3337
+ "missing": null
3289
3338
  }
3290
3339
  },
3291
3340
  {
3292
- "name": "error essential omits missing diagnostics",
3341
+ "name": "error essential preserves explicit null diagnostics",
3293
3342
  "target": "/app/automation/save",
3294
3343
  "status": "error",
3295
3344
  "code": "OPERATION_FAILED",
@@ -3313,8 +3362,10 @@
3313
3362
  "message": "Failed",
3314
3363
  "retry": false,
3315
3364
  "details": {
3316
- "remaining": []
3317
- }
3365
+ "remaining": [],
3366
+ "missing": null
3367
+ },
3368
+ "missing": null
3318
3369
  }
3319
3370
  }
3320
3371
  }
@@ -3768,5 +3819,125 @@
3768
3819
  }
3769
3820
  ]
3770
3821
  }
3822
+ },
3823
+ {
3824
+ "name": "widget-unset-value-preserves-null",
3825
+ "target": "/app/widget/value/get",
3826
+ "status": "success",
3827
+ "data": {
3828
+ "items": [
3829
+ {
3830
+ "resource": {
3831
+ "value": null,
3832
+ "widgetId": "value-d",
3833
+ "revision": 1
3834
+ },
3835
+ "requestedId": "value-d",
3836
+ "found": true
3837
+ }
3838
+ ]
3839
+ },
3840
+ "essential": {
3841
+ "items": [
3842
+ {
3843
+ "resource": {
3844
+ "value": null,
3845
+ "widgetId": "value-d",
3846
+ "revision": 1
3847
+ },
3848
+ "requestedId": "value-d",
3849
+ "found": true
3850
+ }
3851
+ ]
3852
+ }
3853
+ },
3854
+ {
3855
+ "name": "widget-cleared-history-preserves-null",
3856
+ "target": "/app/widget/history/list",
3857
+ "status": "success",
3858
+ "data": {
3859
+ "widgetId": "value-d",
3860
+ "history": [
3861
+ {
3862
+ "timestamp": 1767225600,
3863
+ "value": null
3864
+ }
3865
+ ]
3866
+ },
3867
+ "essential": {
3868
+ "widgetId": "value-d",
3869
+ "history": [
3870
+ {
3871
+ "timestamp": "2026-01-01 00:00:00 +00:00 (UTC)",
3872
+ "value": null
3873
+ }
3874
+ ]
3875
+ }
3876
+ },
3877
+ {
3878
+ "name": "widget-fractional-timestamp-keeps-millis",
3879
+ "target": "/app/widget/value/get",
3880
+ "status": "success",
3881
+ "data": {
3882
+ "items": [
3883
+ {
3884
+ "resource": {
3885
+ "value": {
3886
+ "_type": "Timestamp",
3887
+ "value": 1767225600123
3888
+ },
3889
+ "widgetId": "value-d",
3890
+ "revision": 1
3891
+ },
3892
+ "requestedId": "value-d",
3893
+ "found": true
3894
+ }
3895
+ ]
3896
+ },
3897
+ "essential": {
3898
+ "items": [
3899
+ {
3900
+ "resource": {
3901
+ "value": {
3902
+ "_type": "Timestamp",
3903
+ "value": "2026-01-01 00:00:00.123 +00:00 (UTC)"
3904
+ },
3905
+ "widgetId": "value-d",
3906
+ "revision": 1
3907
+ },
3908
+ "requestedId": "value-d",
3909
+ "found": true
3910
+ }
3911
+ ]
3912
+ }
3913
+ },
3914
+ {
3915
+ "name": "widget-list-omits-only-optional-metadata",
3916
+ "target": "/app/widget/list",
3917
+ "status": "success",
3918
+ "data": {
3919
+ "widgets": [
3920
+ {
3921
+ "id": "value-d",
3922
+ "name": "Level",
3923
+ "description": null,
3924
+ "tag": null,
3925
+ "type": "basic.widget.DataWidget",
3926
+ "dataType": "Number",
3927
+ "repeated": false
3928
+ }
3929
+ ]
3930
+ },
3931
+ "essential": {
3932
+ "widgets": [
3933
+ {
3934
+ "id": "value-d",
3935
+ "name": "Level",
3936
+ "type": "basic.widget.DataWidget",
3937
+ "dataType": "Number",
3938
+ "repeated": false
3939
+ }
3940
+ ]
3941
+ }
3771
3942
  }
3772
3943
  ]