@mhome/core-protocol 1.4.1 → 1.4.2

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.
@@ -1,27 +1,25 @@
1
1
  {
2
2
  "valid": [
3
3
  { "name": "empty request", "value": {} },
4
- { "name": "provider request", "value": { "profileId": "provider-1" } },
5
- { "name": "watch status request", "value": { "deviceId": "camera-1" } },
4
+ { "name": "device request", "value": { "deviceId": "camera-1" } },
6
5
  { "name": "watch set request", "value": { "deviceId": "camera-1", "enabled": true } },
7
6
  {
8
7
  "name": "management snapshot",
9
8
  "value": {
10
9
  "providers": [{ "id": "onvif", "displayName": "ONVIF", "description": "ONVIF cameras", "supportsMultipleCameras": true }],
11
- "profiles": [{ "id": "provider-1", "providerType": "onvif", "displayName": "Home", "health": "ready", "cameraCount": 1, "createdAt": "2026-01-01T00:00:00Z", "updatedAt": "2026-01-01T00:00:00Z" }],
12
- "devices": [{ "id": "camera-1", "providerProfileId": "provider-1", "providerNativeId": "front-door", "name": "Front Door", "capabilities": ["state.cameraMotion"] }],
10
+ "devices": [{ "id": "camera-1", "name": "Front Door", "capabilities": ["state.cameraMotion"], "health": "ready" }],
13
11
  "onlineStates": [{ "id": "camera-1", "state": "online", "observedAt": 1767225600, "source": "onvif" }],
14
12
  "watchStates": [{ "ok": true, "deviceId": "camera-1", "enabled": false }]
15
13
  }
16
14
  },
17
15
  { "name": "device list", "value": { "devices": [], "onlineStates": [] } },
18
- { "name": "provider mutation", "value": { "profileId": "provider-1", "deviceIds": ["camera-1"], "changed": true } },
16
+ { "name": "device mutation", "value": { "deviceIds": ["camera-1"], "changed": true } },
19
17
  { "name": "watch response", "value": { "ok": true, "deviceId": "camera-1", "enabled": true } },
20
18
  { "name": "operation error", "value": { "ok": false, "reason": "CAMERA_OPERATION_FAILED", "detail": "failed" } }
21
19
  ],
22
20
  "invalid": [
23
21
  { "name": "watch mutation missing enabled", "value": { "deviceId": "camera-1", "unexpected": true } },
24
- { "name": "unknown health", "value": { "providers": [], "profiles": [{ "id": "provider-1", "providerType": "onvif", "displayName": "Home", "health": "unknown", "cameraCount": 0, "createdAt": "now", "updatedAt": "now" }], "devices": [], "onlineStates": [], "watchStates": [] } },
25
- { "name": "device leaks internal field", "value": { "devices": [{ "id": "camera-1", "providerProfileId": "provider-1", "providerNativeId": "front-door", "name": "Front Door", "capabilities": [], "supportsLocalAnalytics": true }], "onlineStates": [] } }
22
+ { "name": "unknown health", "value": { "providers": [], "devices": [{ "id": "camera-1", "name": "Front", "capabilities": [], "health": "unknown" }], "onlineStates": [], "watchStates": [] } },
23
+ { "name": "device leaks internal field", "value": { "devices": [{ "id": "camera-1", "name": "Front Door", "capabilities": [], "health": "ready", "sourceUid": "secret" }], "onlineStates": [] } }
26
24
  ]
27
25
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.core.v1",
3
- "contractVersion": "1.4.1",
3
+ "contractVersion": "1.4.2",
4
4
  "protocols": {
5
5
  "llm": {
6
6
  "completeTarget": "/llm/complete"
@@ -23,14 +23,12 @@
23
23
  "routes": {
24
24
  "deviceList": "device/list",
25
25
  "managementSnapshot": "management/snapshot",
26
- "providerRefresh": "provider/refresh",
27
- "providerRemove": "provider/remove",
26
+ "deviceRemove": "device/remove",
28
27
  "watchStatus": "watch/status",
29
28
  "watchSet": "watch/set"
30
29
  },
31
30
  "flows": {
32
- "providerAdd": "provider.add",
33
- "providerEdit": "provider.edit"
31
+ "deviceAdd": "device.add"
34
32
  }
35
33
  },
36
34
  "audioBridgePlugin": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhome/core-protocol",
3
- "version": "1.4.1",
3
+ "version": "1.4.2",
4
4
  "description": "Build-time protocol artifacts for mhome.core",
5
5
  "license": "MIT",
6
6
  "repository": {
package/protocol.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "protocol": "mhome.core",
3
- "contractVersion": "1.4.1",
3
+ "contractVersion": "1.4.2",
4
4
  "manifest": "manifest/core.v1.json",
5
5
  "schemas": {
6
6
  "normalizedInbound": "schema/normalized-inbound.v4.schema.json",
@@ -4,27 +4,17 @@
4
4
  "title": "Camera Plugin management values",
5
5
  "oneOf": [
6
6
  { "$ref": "#/$defs/emptyRequest" },
7
- { "$ref": "#/$defs/providerProfileIdRequest" },
8
- { "$ref": "#/$defs/watchStatusRequest" },
7
+ { "$ref": "#/$defs/deviceIdRequest" },
9
8
  { "$ref": "#/$defs/watchSetRequest" },
10
9
  { "$ref": "#/$defs/managementSnapshot" },
11
10
  { "$ref": "#/$defs/deviceListResponse" },
12
- { "$ref": "#/$defs/providerMutationResponse" },
11
+ { "$ref": "#/$defs/deviceMutationResponse" },
13
12
  { "$ref": "#/$defs/watchControlResponse" },
14
13
  { "$ref": "#/$defs/errorResponse" }
15
14
  ],
16
15
  "$defs": {
17
- "emptyRequest": {
18
- "type": "object",
19
- "additionalProperties": false
20
- },
21
- "providerProfileIdRequest": {
22
- "type": "object",
23
- "required": ["profileId"],
24
- "properties": { "profileId": { "type": "string", "minLength": 1 } },
25
- "additionalProperties": false
26
- },
27
- "watchStatusRequest": {
16
+ "emptyRequest": { "type": "object", "additionalProperties": false },
17
+ "deviceIdRequest": {
28
18
  "type": "object",
29
19
  "required": ["deviceId"],
30
20
  "properties": { "deviceId": { "type": "string", "minLength": 1 } },
@@ -50,36 +40,20 @@
50
40
  },
51
41
  "additionalProperties": false
52
42
  },
53
- "providerProfile": {
54
- "type": "object",
55
- "required": ["id", "providerType", "displayName", "health", "cameraCount", "createdAt", "updatedAt"],
56
- "properties": {
57
- "id": { "type": "string", "minLength": 1 },
58
- "providerType": { "type": "string", "minLength": 1 },
59
- "displayName": { "type": "string", "minLength": 1 },
60
- "health": { "enum": ["applying", "ready", "degraded", "error"] },
61
- "lastError": { "type": "string" },
62
- "cameraCount": { "type": "integer", "minimum": 0 },
63
- "createdAt": { "type": "string", "minLength": 1 },
64
- "updatedAt": { "type": "string", "minLength": 1 },
65
- "lastRefreshedAt": { "type": "string", "minLength": 1 }
66
- },
67
- "additionalProperties": false
68
- },
69
43
  "cameraDevice": {
70
44
  "type": "object",
71
- "required": ["id", "providerProfileId", "providerNativeId", "name", "capabilities"],
45
+ "required": ["id", "name", "capabilities", "health"],
72
46
  "properties": {
73
47
  "id": { "type": "string", "minLength": 1 },
74
- "providerProfileId": { "type": "string", "minLength": 1 },
75
- "providerNativeId": { "type": "string", "minLength": 1 },
76
48
  "name": { "type": "string", "minLength": 1 },
77
49
  "manufacturerName": { "type": "string", "minLength": 1 },
78
50
  "capabilities": {
79
51
  "type": "array",
80
52
  "items": { "type": "string", "minLength": 1 },
81
53
  "uniqueItems": true
82
- }
54
+ },
55
+ "health": { "enum": ["applying", "ready", "degraded", "error"] },
56
+ "lastError": { "type": "string", "minLength": 1 }
83
57
  },
84
58
  "additionalProperties": false
85
59
  },
@@ -107,10 +81,9 @@
107
81
  },
108
82
  "managementSnapshot": {
109
83
  "type": "object",
110
- "required": ["providers", "profiles", "devices", "onlineStates", "watchStates"],
84
+ "required": ["providers", "devices", "onlineStates", "watchStates"],
111
85
  "properties": {
112
86
  "providers": { "type": "array", "items": { "$ref": "#/$defs/providerCatalogItem" } },
113
- "profiles": { "type": "array", "items": { "$ref": "#/$defs/providerProfile" } },
114
87
  "devices": { "type": "array", "items": { "$ref": "#/$defs/cameraDevice" } },
115
88
  "onlineStates": { "type": "array", "items": { "$ref": "#/$defs/onlineStateObservation" } },
116
89
  "watchStates": { "type": "array", "items": { "$ref": "#/$defs/watchControlResponse" } }
@@ -126,11 +99,10 @@
126
99
  },
127
100
  "additionalProperties": false
128
101
  },
129
- "providerMutationResponse": {
102
+ "deviceMutationResponse": {
130
103
  "type": "object",
131
- "required": ["profileId", "deviceIds", "changed"],
104
+ "required": ["deviceIds", "changed"],
132
105
  "properties": {
133
- "profileId": { "type": "string", "minLength": 1 },
134
106
  "deviceIds": {
135
107
  "type": "array",
136
108
  "items": { "type": "string", "minLength": 1 },