@mhome/app-facade-protocol 1.113.0 → 1.115.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.
@@ -0,0 +1,465 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "operations": [
4
+ {
5
+ "target": "/app/capability/invoke",
6
+ "event": "device.command",
7
+ "input": [],
8
+ "output": [],
9
+ "hook": "capability"
10
+ },
11
+ {
12
+ "target": "/app/capability/invoke/json",
13
+ "event": "device.command",
14
+ "input": [],
15
+ "output": [],
16
+ "hook": "capability"
17
+ },
18
+ {
19
+ "target": "/app/widget/data/update",
20
+ "event": "widget.value.set",
21
+ "input": [
22
+ "widgetId",
23
+ "typedValue",
24
+ "value",
25
+ "values"
26
+ ],
27
+ "output": []
28
+ },
29
+ {
30
+ "target": "/app/widget/button/trigger",
31
+ "event": "widget.button.pressed",
32
+ "input": [
33
+ "widgetId",
34
+ "clickType"
35
+ ],
36
+ "output": []
37
+ },
38
+ {
39
+ "target": "/app/widget/circadian/runtime/update",
40
+ "event": "circadian.adjusted",
41
+ "input": [
42
+ "widgetId",
43
+ "curve",
44
+ "offset",
45
+ "multiplier"
46
+ ],
47
+ "output": []
48
+ },
49
+ {
50
+ "target": "/app/automation/start",
51
+ "event": "automation.start",
52
+ "input": [
53
+ "automationId"
54
+ ],
55
+ "output": [
56
+ "enabled",
57
+ "running"
58
+ ]
59
+ },
60
+ {
61
+ "target": "/app/automation/stop",
62
+ "event": "automation.stop",
63
+ "input": [
64
+ "automationId"
65
+ ],
66
+ "output": [
67
+ "enabled",
68
+ "running"
69
+ ]
70
+ },
71
+ {
72
+ "target": "/app/presentation/automation/generated/enable",
73
+ "event": "automation.enable",
74
+ "input": [
75
+ "automationId"
76
+ ],
77
+ "output": [
78
+ "automationId",
79
+ "enabled",
80
+ "running"
81
+ ]
82
+ },
83
+ {
84
+ "target": "/app/presentation/automation/generated/disable",
85
+ "event": "automation.disable",
86
+ "input": [
87
+ "automationId"
88
+ ],
89
+ "output": [
90
+ "automationId",
91
+ "enabled",
92
+ "running"
93
+ ]
94
+ },
95
+ {
96
+ "target": "/app/presentation/automation/generated/run",
97
+ "event": "automation.run",
98
+ "input": [
99
+ "automationId"
100
+ ],
101
+ "output": [
102
+ "automationId",
103
+ "enabled",
104
+ "running"
105
+ ]
106
+ },
107
+ {
108
+ "target": "/app/quickword/run",
109
+ "event": "quickword.invoked",
110
+ "input": [
111
+ "quickWord",
112
+ "values"
113
+ ],
114
+ "output": [
115
+ "dispatched"
116
+ ]
117
+ },
118
+ {
119
+ "target": "/app/dialog/reply",
120
+ "event": "dialog.answered",
121
+ "input": [
122
+ "dialogId",
123
+ "value"
124
+ ],
125
+ "output": [
126
+ "accepted"
127
+ ]
128
+ },
129
+ {
130
+ "target": "/app/automation/save",
131
+ "event": "automation.saved",
132
+ "input": [
133
+ "automationId",
134
+ "singleUse",
135
+ "restoreEnabled"
136
+ ],
137
+ "output": [
138
+ "automationId"
139
+ ],
140
+ "hook": "automationSource"
141
+ },
142
+ {
143
+ "target": "/app/presentation/automation/overview/save",
144
+ "event": "automation.saved",
145
+ "input": [
146
+ "automationId"
147
+ ],
148
+ "output": [
149
+ "automationId",
150
+ "enabled"
151
+ ]
152
+ },
153
+ {
154
+ "target": "/app/presentation/automation/copy",
155
+ "event": "automation.copy",
156
+ "input": [
157
+ "name"
158
+ ],
159
+ "output": [
160
+ "automationId"
161
+ ],
162
+ "hook": "automationCopy"
163
+ },
164
+ {
165
+ "target": "/app/presentation/automation/enroll",
166
+ "event": "automation.enroll",
167
+ "input": [
168
+ "name"
169
+ ],
170
+ "output": [
171
+ "automationId"
172
+ ],
173
+ "hook": "automationCopy"
174
+ },
175
+ {
176
+ "target": "/app/automation/delete",
177
+ "event": "automation.deleted",
178
+ "input": [
179
+ "automationId",
180
+ "automationIds"
181
+ ],
182
+ "output": []
183
+ },
184
+ {
185
+ "target": "/app/automation/snapshot/rollback",
186
+ "event": "automation.restored",
187
+ "input": [
188
+ "automationId",
189
+ "snapshotId"
190
+ ],
191
+ "output": [
192
+ "automationId"
193
+ ]
194
+ },
195
+ {
196
+ "target": "/app/widget/circadian/create",
197
+ "event": "circadian.configured",
198
+ "input": [
199
+ "widgetId",
200
+ "locationId",
201
+ "schedules",
202
+ "curve",
203
+ "offset",
204
+ "multiplier"
205
+ ],
206
+ "output": [
207
+ "widgetId"
208
+ ],
209
+ "hook": "circadian"
210
+ },
211
+ {
212
+ "target": "/app/widget/circadian/config/update",
213
+ "event": "circadian.configured",
214
+ "input": [
215
+ "widgetId",
216
+ "locationId",
217
+ "schedules",
218
+ "curve",
219
+ "offset",
220
+ "multiplier"
221
+ ],
222
+ "output": [
223
+ "widgetId"
224
+ ],
225
+ "hook": "circadian"
226
+ },
227
+ {
228
+ "target": "/app/widget/delete",
229
+ "event": "circadian.deleted",
230
+ "input": [
231
+ "widgetIds"
232
+ ],
233
+ "output": [],
234
+ "hook": "circadianDelete"
235
+ }
236
+ ],
237
+ "deviceCommands": {
238
+ "onOff": [
239
+ "device",
240
+ "command"
241
+ ],
242
+ "setBrightness": [
243
+ "device",
244
+ "brightness",
245
+ "transitionDuration"
246
+ ],
247
+ "setColorTemperature": [
248
+ "device",
249
+ "colorTemperature",
250
+ "transitionDuration"
251
+ ],
252
+ "setColorRGB": [
253
+ "device",
254
+ "hue",
255
+ "saturation",
256
+ "transitionDuration"
257
+ ],
258
+ "setThermostatTemperature": [
259
+ "device",
260
+ "coolingSetpoint",
261
+ "heatingSetpoint"
262
+ ],
263
+ "setThermostatMode": [
264
+ "device",
265
+ "hvacMode",
266
+ "presetMode"
267
+ ],
268
+ "setFan": [
269
+ "device",
270
+ "mode",
271
+ "speed"
272
+ ],
273
+ "coverOpenClose": [
274
+ "device",
275
+ "command",
276
+ "position",
277
+ "transitionDuration"
278
+ ],
279
+ "lockUnlock": [
280
+ "device",
281
+ "command"
282
+ ],
283
+ "playMedia": [
284
+ "device",
285
+ "providerMediaContentId",
286
+ "mediaContent"
287
+ ],
288
+ "controlMediaPlayback": [
289
+ "device",
290
+ "command"
291
+ ],
292
+ "seekMediaPlayback": [
293
+ "device",
294
+ "position"
295
+ ],
296
+ "setAudioVolume": [
297
+ "device",
298
+ "volume"
299
+ ],
300
+ "setAudioMute": [
301
+ "device",
302
+ "command"
303
+ ],
304
+ "broadcastAudio": [
305
+ "device",
306
+ "audio",
307
+ "volume",
308
+ "priority"
309
+ ],
310
+ "chime": [
311
+ "device",
312
+ "command"
313
+ ],
314
+ "dispensePetFood": [
315
+ "device",
316
+ "portions",
317
+ "weight"
318
+ ],
319
+ "cameraPtz": [
320
+ "device",
321
+ "command",
322
+ "preset",
323
+ "speed",
324
+ "duration"
325
+ ],
326
+ "setCameraRecording": [
327
+ "device",
328
+ "mode"
329
+ ],
330
+ "setCameraSetting": [
331
+ "device",
332
+ "monitoringMode",
333
+ "personRecognitionMode"
334
+ ],
335
+ "startAudioRecording": [
336
+ "device"
337
+ ],
338
+ "stopAudioRecording": [
339
+ "device"
340
+ ]
341
+ },
342
+ "deviceCapabilities": {
343
+ "audioBridge.device.command.broadcastAudio": "broadcastAudio",
344
+ "audioBridge.device.command.controlMediaPlayback": "controlMediaPlayback",
345
+ "audioBridge.device.command.playMedia": "playMedia",
346
+ "audioBridge.device.command.seekMediaPlayback": "seekMediaPlayback",
347
+ "audioBridge.device.command.setAudioMute": "setAudioMute",
348
+ "audioBridge.device.command.setAudioVolume": "setAudioVolume",
349
+ "audioBridge.device.command.startAudioRecording": "startAudioRecording",
350
+ "audioBridge.device.command.stopAudioRecording": "stopAudioRecording",
351
+ "basic.device.command.broadcastAudio": "broadcastAudio",
352
+ "basic.device.command.cameraPtz": "cameraPtz",
353
+ "basic.device.command.chime": "chime",
354
+ "basic.device.command.controlMediaPlayback": "controlMediaPlayback",
355
+ "basic.device.command.coverOpenClose": "coverOpenClose",
356
+ "basic.device.command.dispensePetFood": "dispensePetFood",
357
+ "basic.device.command.lockUnlock": "lockUnlock",
358
+ "basic.device.command.onOff": "onOff",
359
+ "basic.device.command.playMedia": "playMedia",
360
+ "basic.device.command.seekMediaPlayback": "seekMediaPlayback",
361
+ "basic.device.command.setAudioMute": "setAudioMute",
362
+ "basic.device.command.setAudioVolume": "setAudioVolume",
363
+ "basic.device.command.setBrightness": "setBrightness",
364
+ "basic.device.command.setCameraRecording": "setCameraRecording",
365
+ "basic.device.command.setCameraSetting": "setCameraSetting",
366
+ "basic.device.command.setColorRGB": "setColorRGB",
367
+ "basic.device.command.setColorTemperature": "setColorTemperature",
368
+ "basic.device.command.setFan": "setFan",
369
+ "basic.device.command.setThermostatMode": "setThermostatMode",
370
+ "basic.device.command.setThermostatTemperature": "setThermostatTemperature",
371
+ "basic.device.command.startAudioRecording": "startAudioRecording",
372
+ "basic.device.command.stopAudioRecording": "stopAudioRecording",
373
+ "camera.device.command.cameraPtz": "cameraPtz",
374
+ "camera.device.command.onOff": "onOff",
375
+ "camera.device.command.setCameraSetting": "setCameraSetting",
376
+ "mlinkGoogleCast.device.command.broadcastAudio": "broadcastAudio",
377
+ "mlinkGoogleCast.device.command.controlMediaPlayback": "controlMediaPlayback",
378
+ "mlinkGoogleCast.device.command.playMedia": "playMedia",
379
+ "mlinkGoogleCast.device.command.setAudioMute": "setAudioMute",
380
+ "mlinkGoogleCast.device.command.setAudioVolume": "setAudioVolume",
381
+ "mlinkHomeAssistant.device.command.broadcastAudio": "broadcastAudio",
382
+ "mlinkHomeAssistant.device.command.chime": "chime",
383
+ "mlinkHomeAssistant.device.command.controlMediaPlayback": "controlMediaPlayback",
384
+ "mlinkHomeAssistant.device.command.coverOpenClose": "coverOpenClose",
385
+ "mlinkHomeAssistant.device.command.lockUnlock": "lockUnlock",
386
+ "mlinkHomeAssistant.device.command.onOff": "onOff",
387
+ "mlinkHomeAssistant.device.command.playMedia": "playMedia",
388
+ "mlinkHomeAssistant.device.command.setAudioMute": "setAudioMute",
389
+ "mlinkHomeAssistant.device.command.setAudioVolume": "setAudioVolume",
390
+ "mlinkHomeAssistant.device.command.setBrightness": "setBrightness",
391
+ "mlinkHomeAssistant.device.command.setColorRGB": "setColorRGB",
392
+ "mlinkHomeAssistant.device.command.setColorTemperature": "setColorTemperature",
393
+ "mlinkHomeAssistant.device.command.setFan": "setFan",
394
+ "mlinkHomeAssistant.device.command.setThermostatMode": "setThermostatMode",
395
+ "mlinkHomeAssistant.device.command.setThermostatTemperature": "setThermostatTemperature",
396
+ "mlinkHue.device.command.onOff": "onOff",
397
+ "mlinkHue.device.command.setBrightness": "setBrightness",
398
+ "mlinkHue.device.command.setColorRGB": "setColorRGB",
399
+ "mlinkHue.device.command.setColorTemperature": "setColorTemperature",
400
+ "mlinkLutron.device.command.coverOpenClose": "coverOpenClose",
401
+ "mlinkLutron.device.command.onOff": "onOff",
402
+ "mlinkLutron.device.command.setBrightness": "setBrightness",
403
+ "mlinkLutron.device.command.setFan": "setFan",
404
+ "mlinkMatter.device.command.coverOpenClose": "coverOpenClose",
405
+ "mlinkMatter.device.command.lockUnlock": "lockUnlock",
406
+ "mlinkMatter.device.command.onOff": "onOff",
407
+ "mlinkMatter.device.command.setAudioMute": "setAudioMute",
408
+ "mlinkMatter.device.command.setAudioVolume": "setAudioVolume",
409
+ "mlinkMatter.device.command.setBrightness": "setBrightness",
410
+ "mlinkMatter.device.command.setColorRGB": "setColorRGB",
411
+ "mlinkMatter.device.command.setColorTemperature": "setColorTemperature",
412
+ "mlinkMatter.device.command.setFan": "setFan",
413
+ "mlinkMatter.device.command.setThermostatMode": "setThermostatMode",
414
+ "mlinkMatter.device.command.setThermostatTemperature": "setThermostatTemperature",
415
+ "mlinkShelly.device.command.coverOpenClose": "coverOpenClose",
416
+ "mlinkShelly.device.command.onOff": "onOff",
417
+ "mlinkShelly.device.command.setBrightness": "setBrightness",
418
+ "mlinkShelly.device.command.setColorRGB": "setColorRGB",
419
+ "mlinkShelly.device.command.setColorTemperature": "setColorTemperature",
420
+ "mlinkSmartThings.device.command.broadcastAudio": "broadcastAudio",
421
+ "mlinkSmartThings.device.command.chime": "chime",
422
+ "mlinkSmartThings.device.command.controlMediaPlayback": "controlMediaPlayback",
423
+ "mlinkSmartThings.device.command.coverOpenClose": "coverOpenClose",
424
+ "mlinkSmartThings.device.command.lockUnlock": "lockUnlock",
425
+ "mlinkSmartThings.device.command.onOff": "onOff",
426
+ "mlinkSmartThings.device.command.setAudioMute": "setAudioMute",
427
+ "mlinkSmartThings.device.command.setAudioVolume": "setAudioVolume",
428
+ "mlinkSmartThings.device.command.setBrightness": "setBrightness",
429
+ "mlinkSmartThings.device.command.setColorRGB": "setColorRGB",
430
+ "mlinkSmartThings.device.command.setColorTemperature": "setColorTemperature",
431
+ "mlinkSmartThings.device.command.setFan": "setFan",
432
+ "mlinkSmartThings.device.command.setThermostatMode": "setThermostatMode",
433
+ "mlinkSmartThings.device.command.setThermostatTemperature": "setThermostatTemperature",
434
+ "mlinkSonos.device.command.broadcastAudio": "broadcastAudio",
435
+ "mlinkSonos.device.command.controlMediaPlayback": "controlMediaPlayback",
436
+ "mlinkSonos.device.command.playMedia": "playMedia",
437
+ "mlinkSonos.device.command.setAudioMute": "setAudioMute",
438
+ "mlinkSonos.device.command.setAudioVolume": "setAudioVolume",
439
+ "playground.device.command.broadcastAudio": "broadcastAudio",
440
+ "playground.device.command.chime": "chime",
441
+ "playground.device.command.controlMediaPlayback": "controlMediaPlayback",
442
+ "playground.device.command.coverOpenClose": "coverOpenClose",
443
+ "playground.device.command.lockUnlock": "lockUnlock",
444
+ "playground.device.command.onOff": "onOff",
445
+ "playground.device.command.playMedia": "playMedia",
446
+ "playground.device.command.setAudioMute": "setAudioMute",
447
+ "playground.device.command.setAudioVolume": "setAudioVolume",
448
+ "playground.device.command.setBrightness": "setBrightness",
449
+ "playground.device.command.setColorRGB": "setColorRGB",
450
+ "playground.device.command.setColorTemperature": "setColorTemperature",
451
+ "playground.device.command.setFan": "setFan",
452
+ "playground.device.command.setThermostatMode": "setThermostatMode",
453
+ "playground.device.command.setThermostatTemperature": "setThermostatTemperature",
454
+ "smartLife.device.command.onOff": "onOff",
455
+ "smartLife.device.command.setBrightness": "setBrightness",
456
+ "smartLife.device.command.setColorRGB": "setColorRGB",
457
+ "smartLife.device.command.setColorTemperature": "setColorTemperature",
458
+ "smartLife.device.command.setFan": "setFan",
459
+ "xiaomi.device.command.onOff": "onOff",
460
+ "xiaomi.device.command.setBrightness": "setBrightness",
461
+ "xiaomi.device.command.setColorRGB": "setColorRGB",
462
+ "xiaomi.device.command.setColorTemperature": "setColorTemperature",
463
+ "xiaomi.device.command.setFan": "setFan"
464
+ }
465
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.app-facade.routing.v1",
3
- "contractVersion": "1.113.0",
3
+ "contractVersion": "1.115.0",
4
4
  "targetPrefix": "/app/",
5
5
  "default": {
6
6
  "execution": "scopeMode"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.messaging.targets.v1",
3
- "contractVersion": "1.113.0",
3
+ "contractVersion": "1.115.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.113.0",
3
+ "version": "1.115.0",
4
4
  "description": "Build-time protocol artifacts for mhome.app-facade",
5
5
  "license": "MIT",
6
6
  "repository": {
package/protocol.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "protocol": "mhome.app-facade",
3
- "contractVersion": "1.113.0",
3
+ "contractVersion": "1.115.0",
4
4
  "manifest": "manifest/app-facade.v1.json",
5
5
  "schemas": {
6
6
  "storage": "schema/storage.v1.schema.json",
7
+ "householdRecording": "schema/household-recording.v1.schema.json",
7
8
  "nowAttention": "schema/now-attention.v1.schema.json",
8
9
  "billing": "schema/billing.v1.schema.json",
9
10
  "pluginInstall": "schema/plugin-install.v1.schema.json",
@@ -4,44 +4,158 @@
4
4
  "title": "App Facade call",
5
5
  "type": "object",
6
6
  "additionalProperties": false,
7
- "required": ["control", "input"],
7
+ "required": [
8
+ "control",
9
+ "input"
10
+ ],
8
11
  "properties": {
9
12
  "control": {
10
13
  "type": "object",
11
14
  "additionalProperties": false,
12
- "required": ["mode"],
15
+ "required": [
16
+ "mode"
17
+ ],
13
18
  "properties": {
14
- "mode": { "enum": ["direct", "prepare", "commit", "reject"] },
15
- "preparedActionId": { "type": "string", "minLength": 1, "pattern": ".*\\S.*" },
16
- "approvalToken": { "type": "string", "minLength": 1, "pattern": ".*\\S.*" },
17
- "responseDetail": { "enum": ["full", "essential"] }
19
+ "mode": {
20
+ "enum": [
21
+ "direct",
22
+ "prepare",
23
+ "commit",
24
+ "reject"
25
+ ]
26
+ },
27
+ "preparedActionId": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "pattern": ".*\\S.*"
31
+ },
32
+ "approvalToken": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "pattern": ".*\\S.*"
36
+ },
37
+ "responseDetail": {
38
+ "enum": [
39
+ "full",
40
+ "essential"
41
+ ]
42
+ }
18
43
  },
19
44
  "allOf": [
20
45
  {
21
- "if": { "properties": { "mode": { "enum": ["direct", "prepare"] } } },
46
+ "if": {
47
+ "properties": {
48
+ "mode": {
49
+ "enum": [
50
+ "direct",
51
+ "prepare"
52
+ ]
53
+ }
54
+ }
55
+ },
22
56
  "then": {
23
57
  "not": {
24
58
  "anyOf": [
25
- { "properties": { "preparedActionId": {} }, "required": ["preparedActionId"] },
26
- { "properties": { "approvalToken": {} }, "required": ["approvalToken"] }
59
+ {
60
+ "properties": {
61
+ "preparedActionId": {}
62
+ },
63
+ "required": [
64
+ "preparedActionId"
65
+ ]
66
+ },
67
+ {
68
+ "properties": {
69
+ "approvalToken": {}
70
+ },
71
+ "required": [
72
+ "approvalToken"
73
+ ]
74
+ }
27
75
  ]
28
76
  }
29
77
  }
30
78
  },
31
79
  {
32
- "if": { "properties": { "mode": { "const": "commit" } } },
33
- "then": { "properties": { "preparedActionId": {}, "approvalToken": {} }, "required": ["preparedActionId", "approvalToken"] }
80
+ "if": {
81
+ "properties": {
82
+ "mode": {
83
+ "const": "commit"
84
+ }
85
+ }
86
+ },
87
+ "then": {
88
+ "properties": {
89
+ "preparedActionId": {},
90
+ "approvalToken": {}
91
+ },
92
+ "required": [
93
+ "preparedActionId",
94
+ "approvalToken"
95
+ ]
96
+ }
34
97
  },
35
98
  {
36
- "if": { "properties": { "mode": { "const": "reject" } } },
99
+ "if": {
100
+ "properties": {
101
+ "mode": {
102
+ "const": "reject"
103
+ }
104
+ }
105
+ },
37
106
  "then": {
38
- "properties": { "preparedActionId": {} },
39
- "required": ["preparedActionId"],
40
- "not": { "properties": { "approvalToken": {} }, "required": ["approvalToken"] }
107
+ "properties": {
108
+ "preparedActionId": {}
109
+ },
110
+ "required": [
111
+ "preparedActionId"
112
+ ],
113
+ "not": {
114
+ "properties": {
115
+ "approvalToken": {}
116
+ },
117
+ "required": [
118
+ "approvalToken"
119
+ ]
120
+ }
41
121
  }
42
122
  }
43
123
  ]
44
124
  },
45
- "input": true
125
+ "input": true,
126
+ "source": {
127
+ "type": [
128
+ "object",
129
+ "null"
130
+ ],
131
+ "additionalProperties": false,
132
+ "required": [
133
+ "kind"
134
+ ],
135
+ "properties": {
136
+ "kind": {
137
+ "enum": [
138
+ "ui",
139
+ "agent",
140
+ "messaging",
141
+ "cli",
142
+ "skill",
143
+ "mcp"
144
+ ]
145
+ },
146
+ "page": {
147
+ "type": [
148
+ "string",
149
+ "null"
150
+ ]
151
+ },
152
+ "cardId": {
153
+ "type": [
154
+ "string",
155
+ "null"
156
+ ]
157
+ }
158
+ }
159
+ }
46
160
  }
47
161
  }