@camstack/addon-export-hap 1.2.95 → 1.2.97
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/dist/hap-export.addon.js +129 -70
- package/dist/hap-export.addon.mjs +129 -70
- package/package.json +1 -1
package/dist/hap-export.addon.js
CHANGED
|
@@ -16612,16 +16612,16 @@ DeviceType.AlarmPanel, method(object({
|
|
|
16612
16612
|
code: string().min(1).optional()
|
|
16613
16613
|
}), _void(), {
|
|
16614
16614
|
kind: "mutation",
|
|
16615
|
-
auth: "
|
|
16615
|
+
auth: "protected"
|
|
16616
16616
|
}), method(object({
|
|
16617
16617
|
deviceId: number().int().nonnegative(),
|
|
16618
16618
|
code: string().min(1).optional()
|
|
16619
16619
|
}), _void(), {
|
|
16620
16620
|
kind: "mutation",
|
|
16621
|
-
auth: "
|
|
16621
|
+
auth: "protected"
|
|
16622
16622
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
16623
16623
|
kind: "mutation",
|
|
16624
|
-
auth: "
|
|
16624
|
+
auth: "protected"
|
|
16625
16625
|
});
|
|
16626
16626
|
/**
|
|
16627
16627
|
* Shared geometry vocabulary for on-frame shape caps — privacy-mask,
|
|
@@ -24280,7 +24280,7 @@ DeviceType.Light, method(object({
|
|
|
24280
24280
|
percentage: number().min(0).max(100)
|
|
24281
24281
|
}), _void(), {
|
|
24282
24282
|
kind: "mutation",
|
|
24283
|
-
auth: "
|
|
24283
|
+
auth: "protected"
|
|
24284
24284
|
}), object({
|
|
24285
24285
|
deviceId: number(),
|
|
24286
24286
|
percentage: number().min(0).max(100),
|
|
@@ -24288,7 +24288,7 @@ DeviceType.Light, method(object({
|
|
|
24288
24288
|
});
|
|
24289
24289
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24290
24290
|
kind: "mutation",
|
|
24291
|
-
auth: "
|
|
24291
|
+
auth: "protected"
|
|
24292
24292
|
});
|
|
24293
24293
|
/**
|
|
24294
24294
|
* camera-credentials — device-scoped cap exposing the camera's network
|
|
@@ -24451,50 +24451,50 @@ DeviceType.Thermostat, DeviceType.Climate, method(object({
|
|
|
24451
24451
|
mode: HvacModeSchema
|
|
24452
24452
|
}), _void(), {
|
|
24453
24453
|
kind: "mutation",
|
|
24454
|
-
auth: "
|
|
24454
|
+
auth: "protected"
|
|
24455
24455
|
}), method(object({
|
|
24456
24456
|
deviceId: number().int().nonnegative(),
|
|
24457
24457
|
fanMode: string().min(1)
|
|
24458
24458
|
}), _void(), {
|
|
24459
24459
|
kind: "mutation",
|
|
24460
|
-
auth: "
|
|
24460
|
+
auth: "protected"
|
|
24461
24461
|
}), method(object({
|
|
24462
24462
|
deviceId: number().int().nonnegative(),
|
|
24463
24463
|
preset: string().min(1)
|
|
24464
24464
|
}), _void(), {
|
|
24465
24465
|
kind: "mutation",
|
|
24466
|
-
auth: "
|
|
24466
|
+
auth: "protected"
|
|
24467
24467
|
}), method(object({
|
|
24468
24468
|
deviceId: number().int().nonnegative(),
|
|
24469
24469
|
target: number()
|
|
24470
24470
|
}), _void(), {
|
|
24471
24471
|
kind: "mutation",
|
|
24472
|
-
auth: "
|
|
24472
|
+
auth: "protected"
|
|
24473
24473
|
}), method(object({
|
|
24474
24474
|
deviceId: number().int().nonnegative(),
|
|
24475
24475
|
targetLow: number(),
|
|
24476
24476
|
targetHigh: number()
|
|
24477
24477
|
}), _void(), {
|
|
24478
24478
|
kind: "mutation",
|
|
24479
|
-
auth: "
|
|
24479
|
+
auth: "protected"
|
|
24480
24480
|
}), method(object({
|
|
24481
24481
|
deviceId: number().int().nonnegative(),
|
|
24482
24482
|
targetHumidity: number().min(0).max(100)
|
|
24483
24483
|
}), _void(), {
|
|
24484
24484
|
kind: "mutation",
|
|
24485
|
-
auth: "
|
|
24485
|
+
auth: "protected"
|
|
24486
24486
|
}), method(object({
|
|
24487
24487
|
deviceId: number().int().nonnegative(),
|
|
24488
24488
|
on: boolean()
|
|
24489
24489
|
}), _void(), {
|
|
24490
24490
|
kind: "mutation",
|
|
24491
|
-
auth: "
|
|
24491
|
+
auth: "protected"
|
|
24492
24492
|
}), method(object({
|
|
24493
24493
|
deviceId: number().int().nonnegative(),
|
|
24494
24494
|
on: boolean()
|
|
24495
24495
|
}), _void(), {
|
|
24496
24496
|
kind: "mutation",
|
|
24497
|
-
auth: "
|
|
24497
|
+
auth: "protected"
|
|
24498
24498
|
});
|
|
24499
24499
|
/**
|
|
24500
24500
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -24569,7 +24569,7 @@ DeviceType.Light, method(object({
|
|
|
24569
24569
|
color: ColorInputSchema
|
|
24570
24570
|
}), _void(), {
|
|
24571
24571
|
kind: "mutation",
|
|
24572
|
-
auth: "
|
|
24572
|
+
auth: "protected"
|
|
24573
24573
|
}), object({
|
|
24574
24574
|
deviceId: number(),
|
|
24575
24575
|
mode: _enum([
|
|
@@ -24730,7 +24730,7 @@ DeviceType.Control, method(object({
|
|
|
24730
24730
|
control: ControlSetValueInputSchema
|
|
24731
24731
|
}), _void(), {
|
|
24732
24732
|
kind: "mutation",
|
|
24733
|
-
auth: "
|
|
24733
|
+
auth: "protected"
|
|
24734
24734
|
});
|
|
24735
24735
|
object({
|
|
24736
24736
|
/** Lifecycle state of the cover. */
|
|
@@ -24751,25 +24751,25 @@ object({
|
|
|
24751
24751
|
});
|
|
24752
24752
|
DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24753
24753
|
kind: "mutation",
|
|
24754
|
-
auth: "
|
|
24754
|
+
auth: "protected"
|
|
24755
24755
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24756
24756
|
kind: "mutation",
|
|
24757
|
-
auth: "
|
|
24757
|
+
auth: "protected"
|
|
24758
24758
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24759
24759
|
kind: "mutation",
|
|
24760
|
-
auth: "
|
|
24760
|
+
auth: "protected"
|
|
24761
24761
|
}), method(object({
|
|
24762
24762
|
deviceId: number().int().nonnegative(),
|
|
24763
24763
|
position: number().min(0).max(100)
|
|
24764
24764
|
}), _void(), {
|
|
24765
24765
|
kind: "mutation",
|
|
24766
|
-
auth: "
|
|
24766
|
+
auth: "protected"
|
|
24767
24767
|
}), method(object({
|
|
24768
24768
|
deviceId: number().int().nonnegative(),
|
|
24769
24769
|
tiltPosition: number().min(0).max(100)
|
|
24770
24770
|
}), _void(), {
|
|
24771
24771
|
kind: "mutation",
|
|
24772
|
-
auth: "
|
|
24772
|
+
auth: "protected"
|
|
24773
24773
|
});
|
|
24774
24774
|
/**
|
|
24775
24775
|
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
@@ -24974,6 +24974,59 @@ var IdentitySampleInfoSchema = object({
|
|
|
24974
24974
|
deviceId: number().int().optional(),
|
|
24975
24975
|
base64: string().optional()
|
|
24976
24976
|
});
|
|
24977
|
+
/**
|
|
24978
|
+
* One enrolled sample, judged against the gallery it lives in.
|
|
24979
|
+
*
|
|
24980
|
+
* The gallery is the one input to recognition nobody re-reads: a sample
|
|
24981
|
+
* enrolled from the wrong face keeps voting forever, and because the matches it
|
|
24982
|
+
* pulls then look confident, nobody goes back. The 2026-09-08 audit found
|
|
24983
|
+
* exactly one such pair on this cluster — a sample scoring 0.61 against three
|
|
24984
|
+
* samples of ANOTHER person, enrolled from the same camera in the same minute,
|
|
24985
|
+
* where every other cross-identity pair sits under 0.50.
|
|
24986
|
+
*/
|
|
24987
|
+
var IdentitySampleAuditRowSchema = object({
|
|
24988
|
+
sampleId: string(),
|
|
24989
|
+
enrolledAt: number().int(),
|
|
24990
|
+
deviceId: number().int().optional(),
|
|
24991
|
+
source: _enum(["detected", "photo"]),
|
|
24992
|
+
/** The enrolled crop's media key, so the panel can show the evidence. */
|
|
24993
|
+
mediaKey: string().optional(),
|
|
24994
|
+
/**
|
|
24995
|
+
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
24996
|
+
* across feature spaces is a well-formed float with no meaning. Every number
|
|
24997
|
+
* below then says nothing — it must read as "cannot say", never as an
|
|
24998
|
+
* accusation and never as a clean bill: this list ends in a Remove button.
|
|
24999
|
+
*/
|
|
25000
|
+
comparable: boolean(),
|
|
25001
|
+
/** Mean cosine against this person's other samples. Null when there are none
|
|
25002
|
+
* to compare with — never 0, which would read as "opposite". */
|
|
25003
|
+
selfMean: number().nullable(),
|
|
25004
|
+
/** The other person this sample looks most like, when it looks like one.
|
|
25005
|
+
* This is the half that convicts: not looking like yourself can be a hard
|
|
25006
|
+
* angle; looking like someone the gallery can NAME is a mis-enrolment. */
|
|
25007
|
+
bestForeign: object({
|
|
25008
|
+
identityId: string(),
|
|
25009
|
+
name: string(),
|
|
25010
|
+
score: number()
|
|
25011
|
+
}).optional(),
|
|
25012
|
+
/** 0 = nothing to say. Higher = look at this one sooner. */
|
|
25013
|
+
suspicion: number()
|
|
25014
|
+
});
|
|
25015
|
+
var IdentitySampleAuditSchema = object({
|
|
25016
|
+
identityId: string(),
|
|
25017
|
+
name: string(),
|
|
25018
|
+
/** The cluster face model every comparison was made in. */
|
|
25019
|
+
modelId: string(),
|
|
25020
|
+
totalSamples: number().int(),
|
|
25021
|
+
comparableSamples: number().int(),
|
|
25022
|
+
flagged: number().int(),
|
|
25023
|
+
/** The bar `flagged` counts against, so the panel states the RULE and not
|
|
25024
|
+
* only its current result. */
|
|
25025
|
+
flagThreshold: number(),
|
|
25026
|
+
/** Worst first. A row with nothing to say still appears, at the bottom: the
|
|
25027
|
+
* operator asked to see the gallery, not only its accusations. */
|
|
25028
|
+
rows: array(IdentitySampleAuditRowSchema).readonly()
|
|
25029
|
+
});
|
|
24977
25030
|
var FaceInfoSchema = object({
|
|
24978
25031
|
faceId: string(),
|
|
24979
25032
|
deviceId: number().int(),
|
|
@@ -25125,7 +25178,7 @@ includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly
|
|
|
25125
25178
|
}), method(object({ id: string() }), _void(), {
|
|
25126
25179
|
kind: "mutation",
|
|
25127
25180
|
auth: "admin"
|
|
25128
|
-
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({
|
|
25181
|
+
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({ identityId: string().min(1) }), IdentitySampleAuditSchema, { auth: "admin" }), method(object({
|
|
25129
25182
|
identityId: string(),
|
|
25130
25183
|
sampleId: string()
|
|
25131
25184
|
}), _void(), {
|
|
@@ -25311,25 +25364,25 @@ DeviceType.Fan, method(object({
|
|
|
25311
25364
|
percentage: number().min(0).max(100)
|
|
25312
25365
|
}), _void(), {
|
|
25313
25366
|
kind: "mutation",
|
|
25314
|
-
auth: "
|
|
25367
|
+
auth: "protected"
|
|
25315
25368
|
}), method(object({
|
|
25316
25369
|
deviceId: number().int().nonnegative(),
|
|
25317
25370
|
preset: string().min(1)
|
|
25318
25371
|
}), _void(), {
|
|
25319
25372
|
kind: "mutation",
|
|
25320
|
-
auth: "
|
|
25373
|
+
auth: "protected"
|
|
25321
25374
|
}), method(object({
|
|
25322
25375
|
deviceId: number().int().nonnegative(),
|
|
25323
25376
|
direction: FanDirectionSchema
|
|
25324
25377
|
}), _void(), {
|
|
25325
25378
|
kind: "mutation",
|
|
25326
|
-
auth: "
|
|
25379
|
+
auth: "protected"
|
|
25327
25380
|
}), method(object({
|
|
25328
25381
|
deviceId: number().int().nonnegative(),
|
|
25329
25382
|
oscillating: boolean()
|
|
25330
25383
|
}), _void(), {
|
|
25331
25384
|
kind: "mutation",
|
|
25332
|
-
auth: "
|
|
25385
|
+
auth: "protected"
|
|
25333
25386
|
});
|
|
25334
25387
|
/**
|
|
25335
25388
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -25440,19 +25493,19 @@ DeviceType.Humidifier, method(object({
|
|
|
25440
25493
|
on: boolean()
|
|
25441
25494
|
}), _void(), {
|
|
25442
25495
|
kind: "mutation",
|
|
25443
|
-
auth: "
|
|
25496
|
+
auth: "protected"
|
|
25444
25497
|
}), method(object({
|
|
25445
25498
|
deviceId: number().int().nonnegative(),
|
|
25446
25499
|
humidity: number().min(0).max(100)
|
|
25447
25500
|
}), _void(), {
|
|
25448
25501
|
kind: "mutation",
|
|
25449
|
-
auth: "
|
|
25502
|
+
auth: "protected"
|
|
25450
25503
|
}), method(object({
|
|
25451
25504
|
deviceId: number().int().nonnegative(),
|
|
25452
25505
|
mode: string().min(1)
|
|
25453
25506
|
}), _void(), {
|
|
25454
25507
|
kind: "mutation",
|
|
25455
|
-
auth: "
|
|
25508
|
+
auth: "protected"
|
|
25456
25509
|
});
|
|
25457
25510
|
/**
|
|
25458
25511
|
* Single-metric humidity reading. Drives Home Assistant `sensor`
|
|
@@ -25922,13 +25975,13 @@ object({
|
|
|
25922
25975
|
});
|
|
25923
25976
|
DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25924
25977
|
kind: "mutation",
|
|
25925
|
-
auth: "
|
|
25978
|
+
auth: "protected"
|
|
25926
25979
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25927
25980
|
kind: "mutation",
|
|
25928
|
-
auth: "
|
|
25981
|
+
auth: "protected"
|
|
25929
25982
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25930
25983
|
kind: "mutation",
|
|
25931
|
-
auth: "
|
|
25984
|
+
auth: "protected"
|
|
25932
25985
|
});
|
|
25933
25986
|
/**
|
|
25934
25987
|
* local-network — hub-only singleton.
|
|
@@ -26188,16 +26241,16 @@ DeviceType.Lock, method(object({
|
|
|
26188
26241
|
code: string().min(1).optional()
|
|
26189
26242
|
}), _void(), {
|
|
26190
26243
|
kind: "mutation",
|
|
26191
|
-
auth: "
|
|
26244
|
+
auth: "protected"
|
|
26192
26245
|
}), method(object({
|
|
26193
26246
|
deviceId: number().int().nonnegative(),
|
|
26194
26247
|
code: string().min(1).optional()
|
|
26195
26248
|
}), _void(), {
|
|
26196
26249
|
kind: "mutation",
|
|
26197
|
-
auth: "
|
|
26250
|
+
auth: "protected"
|
|
26198
26251
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26199
26252
|
kind: "mutation",
|
|
26200
|
-
auth: "
|
|
26253
|
+
auth: "protected"
|
|
26201
26254
|
});
|
|
26202
26255
|
/**
|
|
26203
26256
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
@@ -26271,55 +26324,55 @@ object({
|
|
|
26271
26324
|
});
|
|
26272
26325
|
DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26273
26326
|
kind: "mutation",
|
|
26274
|
-
auth: "
|
|
26327
|
+
auth: "protected"
|
|
26275
26328
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26276
26329
|
kind: "mutation",
|
|
26277
|
-
auth: "
|
|
26330
|
+
auth: "protected"
|
|
26278
26331
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26279
26332
|
kind: "mutation",
|
|
26280
|
-
auth: "
|
|
26333
|
+
auth: "protected"
|
|
26281
26334
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26282
26335
|
kind: "mutation",
|
|
26283
|
-
auth: "
|
|
26336
|
+
auth: "protected"
|
|
26284
26337
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26285
26338
|
kind: "mutation",
|
|
26286
|
-
auth: "
|
|
26339
|
+
auth: "protected"
|
|
26287
26340
|
}), method(object({
|
|
26288
26341
|
deviceId: number().int().nonnegative(),
|
|
26289
26342
|
positionMs: number().int().nonnegative()
|
|
26290
26343
|
}), _void(), {
|
|
26291
26344
|
kind: "mutation",
|
|
26292
|
-
auth: "
|
|
26345
|
+
auth: "protected"
|
|
26293
26346
|
}), method(object({
|
|
26294
26347
|
deviceId: number().int().nonnegative(),
|
|
26295
26348
|
volumeLevel: number().min(0).max(100)
|
|
26296
26349
|
}), _void(), {
|
|
26297
26350
|
kind: "mutation",
|
|
26298
|
-
auth: "
|
|
26351
|
+
auth: "protected"
|
|
26299
26352
|
}), method(object({
|
|
26300
26353
|
deviceId: number().int().nonnegative(),
|
|
26301
26354
|
muted: boolean()
|
|
26302
26355
|
}), _void(), {
|
|
26303
26356
|
kind: "mutation",
|
|
26304
|
-
auth: "
|
|
26357
|
+
auth: "protected"
|
|
26305
26358
|
}), method(object({
|
|
26306
26359
|
deviceId: number().int().nonnegative(),
|
|
26307
26360
|
shuffle: boolean()
|
|
26308
26361
|
}), _void(), {
|
|
26309
26362
|
kind: "mutation",
|
|
26310
|
-
auth: "
|
|
26363
|
+
auth: "protected"
|
|
26311
26364
|
}), method(object({
|
|
26312
26365
|
deviceId: number().int().nonnegative(),
|
|
26313
26366
|
repeat: MediaPlayerRepeatSchema
|
|
26314
26367
|
}), _void(), {
|
|
26315
26368
|
kind: "mutation",
|
|
26316
|
-
auth: "
|
|
26369
|
+
auth: "protected"
|
|
26317
26370
|
}), method(object({
|
|
26318
26371
|
deviceId: number().int().nonnegative(),
|
|
26319
26372
|
source: string().min(1)
|
|
26320
26373
|
}), _void(), {
|
|
26321
26374
|
kind: "mutation",
|
|
26322
|
-
auth: "
|
|
26375
|
+
auth: "protected"
|
|
26323
26376
|
}), method(object({
|
|
26324
26377
|
deviceId: number().int().nonnegative(),
|
|
26325
26378
|
/** Media identifier / URL. */
|
|
@@ -26329,7 +26382,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
26329
26382
|
mediaType: string().min(1)
|
|
26330
26383
|
}), _void(), {
|
|
26331
26384
|
kind: "mutation",
|
|
26332
|
-
auth: "
|
|
26385
|
+
auth: "protected"
|
|
26333
26386
|
});
|
|
26334
26387
|
/**
|
|
26335
26388
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -27507,49 +27560,49 @@ DeviceType.PetFeeder, method(object({
|
|
|
27507
27560
|
hopper2: gramsPortion.optional()
|
|
27508
27561
|
}), _void(), {
|
|
27509
27562
|
kind: "mutation",
|
|
27510
|
-
auth: "
|
|
27563
|
+
auth: "protected"
|
|
27511
27564
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27512
27565
|
kind: "mutation",
|
|
27513
|
-
auth: "
|
|
27566
|
+
auth: "protected"
|
|
27514
27567
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27515
27568
|
kind: "mutation",
|
|
27516
|
-
auth: "
|
|
27569
|
+
auth: "protected"
|
|
27517
27570
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27518
27571
|
kind: "mutation",
|
|
27519
|
-
auth: "
|
|
27572
|
+
auth: "protected"
|
|
27520
27573
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27521
27574
|
kind: "mutation",
|
|
27522
|
-
auth: "
|
|
27575
|
+
auth: "protected"
|
|
27523
27576
|
}), method(object({
|
|
27524
27577
|
deviceId: number().int().nonnegative(),
|
|
27525
27578
|
soundId: number().int().nonnegative()
|
|
27526
27579
|
}), _void(), {
|
|
27527
27580
|
kind: "mutation",
|
|
27528
|
-
auth: "
|
|
27581
|
+
auth: "protected"
|
|
27529
27582
|
}), method(object({
|
|
27530
27583
|
deviceId: number().int().nonnegative(),
|
|
27531
27584
|
on: boolean()
|
|
27532
27585
|
}), _void(), {
|
|
27533
27586
|
kind: "mutation",
|
|
27534
|
-
auth: "
|
|
27587
|
+
auth: "protected"
|
|
27535
27588
|
}), method(object({
|
|
27536
27589
|
deviceId: number().int().nonnegative(),
|
|
27537
27590
|
on: boolean()
|
|
27538
27591
|
}), _void(), {
|
|
27539
27592
|
kind: "mutation",
|
|
27540
|
-
auth: "
|
|
27593
|
+
auth: "protected"
|
|
27541
27594
|
}), method(object({
|
|
27542
27595
|
deviceId: number().int().nonnegative(),
|
|
27543
27596
|
on: boolean()
|
|
27544
27597
|
}), _void(), {
|
|
27545
27598
|
kind: "mutation",
|
|
27546
|
-
auth: "
|
|
27599
|
+
auth: "protected"
|
|
27547
27600
|
}), method(object({
|
|
27548
27601
|
deviceId: number().int().nonnegative(),
|
|
27549
27602
|
level: number().int().nonnegative()
|
|
27550
27603
|
}), _void(), {
|
|
27551
27604
|
kind: "mutation",
|
|
27552
|
-
auth: "
|
|
27605
|
+
auth: "protected"
|
|
27553
27606
|
});
|
|
27554
27607
|
var VehicleSchema = object({
|
|
27555
27608
|
id: string(),
|
|
@@ -29345,7 +29398,7 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
|
|
|
29345
29398
|
on: boolean()
|
|
29346
29399
|
}), _void(), {
|
|
29347
29400
|
kind: "mutation",
|
|
29348
|
-
auth: "
|
|
29401
|
+
auth: "protected"
|
|
29349
29402
|
}), object({
|
|
29350
29403
|
deviceId: number(),
|
|
29351
29404
|
on: boolean(),
|
|
@@ -30218,25 +30271,25 @@ object({
|
|
|
30218
30271
|
});
|
|
30219
30272
|
DeviceType.Vacuum, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30220
30273
|
kind: "mutation",
|
|
30221
|
-
auth: "
|
|
30274
|
+
auth: "protected"
|
|
30222
30275
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30223
30276
|
kind: "mutation",
|
|
30224
|
-
auth: "
|
|
30277
|
+
auth: "protected"
|
|
30225
30278
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30226
30279
|
kind: "mutation",
|
|
30227
|
-
auth: "
|
|
30280
|
+
auth: "protected"
|
|
30228
30281
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30229
30282
|
kind: "mutation",
|
|
30230
|
-
auth: "
|
|
30283
|
+
auth: "protected"
|
|
30231
30284
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30232
30285
|
kind: "mutation",
|
|
30233
|
-
auth: "
|
|
30286
|
+
auth: "protected"
|
|
30234
30287
|
}), method(object({
|
|
30235
30288
|
deviceId: number().int().nonnegative(),
|
|
30236
30289
|
speed: string().min(1)
|
|
30237
30290
|
}), _void(), {
|
|
30238
30291
|
kind: "mutation",
|
|
30239
|
-
auth: "
|
|
30292
|
+
auth: "protected"
|
|
30240
30293
|
});
|
|
30241
30294
|
object({
|
|
30242
30295
|
/** Lifecycle state of the valve. */
|
|
@@ -30255,19 +30308,19 @@ object({
|
|
|
30255
30308
|
});
|
|
30256
30309
|
DeviceType.Valve, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30257
30310
|
kind: "mutation",
|
|
30258
|
-
auth: "
|
|
30311
|
+
auth: "protected"
|
|
30259
30312
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30260
30313
|
kind: "mutation",
|
|
30261
|
-
auth: "
|
|
30314
|
+
auth: "protected"
|
|
30262
30315
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30263
30316
|
kind: "mutation",
|
|
30264
|
-
auth: "
|
|
30317
|
+
auth: "protected"
|
|
30265
30318
|
}), method(object({
|
|
30266
30319
|
deviceId: number().int().nonnegative(),
|
|
30267
30320
|
position: number().min(0).max(100)
|
|
30268
30321
|
}), _void(), {
|
|
30269
30322
|
kind: "mutation",
|
|
30270
|
-
auth: "
|
|
30323
|
+
auth: "protected"
|
|
30271
30324
|
});
|
|
30272
30325
|
object({
|
|
30273
30326
|
detected: boolean(),
|
|
@@ -30301,19 +30354,19 @@ DeviceType.WaterHeater, method(object({
|
|
|
30301
30354
|
temp: number().finite()
|
|
30302
30355
|
}), _void(), {
|
|
30303
30356
|
kind: "mutation",
|
|
30304
|
-
auth: "
|
|
30357
|
+
auth: "protected"
|
|
30305
30358
|
}), method(object({
|
|
30306
30359
|
deviceId: number().int().nonnegative(),
|
|
30307
30360
|
mode: string().min(1)
|
|
30308
30361
|
}), _void(), {
|
|
30309
30362
|
kind: "mutation",
|
|
30310
|
-
auth: "
|
|
30363
|
+
auth: "protected"
|
|
30311
30364
|
}), method(object({
|
|
30312
30365
|
deviceId: number().int().nonnegative(),
|
|
30313
30366
|
on: boolean()
|
|
30314
30367
|
}), _void(), {
|
|
30315
30368
|
kind: "mutation",
|
|
30316
|
-
auth: "
|
|
30369
|
+
auth: "protected"
|
|
30317
30370
|
});
|
|
30318
30371
|
object({
|
|
30319
30372
|
/** Verbatim HA condition state (`sunny`, `cloudy`, `rainy`, …). Null
|
|
@@ -32405,6 +32458,12 @@ Object.freeze({
|
|
|
32405
32458
|
addonId: null,
|
|
32406
32459
|
access: "create"
|
|
32407
32460
|
},
|
|
32461
|
+
"faceGallery.auditIdentitySamples": {
|
|
32462
|
+
capName: "face-gallery",
|
|
32463
|
+
capScope: "system",
|
|
32464
|
+
addonId: null,
|
|
32465
|
+
access: "view"
|
|
32466
|
+
},
|
|
32408
32467
|
"faceGallery.createIdentity": {
|
|
32409
32468
|
capName: "face-gallery",
|
|
32410
32469
|
capScope: "system",
|
|
@@ -16600,16 +16600,16 @@ DeviceType.AlarmPanel, method(object({
|
|
|
16600
16600
|
code: string().min(1).optional()
|
|
16601
16601
|
}), _void(), {
|
|
16602
16602
|
kind: "mutation",
|
|
16603
|
-
auth: "
|
|
16603
|
+
auth: "protected"
|
|
16604
16604
|
}), method(object({
|
|
16605
16605
|
deviceId: number().int().nonnegative(),
|
|
16606
16606
|
code: string().min(1).optional()
|
|
16607
16607
|
}), _void(), {
|
|
16608
16608
|
kind: "mutation",
|
|
16609
|
-
auth: "
|
|
16609
|
+
auth: "protected"
|
|
16610
16610
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
16611
16611
|
kind: "mutation",
|
|
16612
|
-
auth: "
|
|
16612
|
+
auth: "protected"
|
|
16613
16613
|
});
|
|
16614
16614
|
/**
|
|
16615
16615
|
* Shared geometry vocabulary for on-frame shape caps — privacy-mask,
|
|
@@ -24268,7 +24268,7 @@ DeviceType.Light, method(object({
|
|
|
24268
24268
|
percentage: number().min(0).max(100)
|
|
24269
24269
|
}), _void(), {
|
|
24270
24270
|
kind: "mutation",
|
|
24271
|
-
auth: "
|
|
24271
|
+
auth: "protected"
|
|
24272
24272
|
}), object({
|
|
24273
24273
|
deviceId: number(),
|
|
24274
24274
|
percentage: number().min(0).max(100),
|
|
@@ -24276,7 +24276,7 @@ DeviceType.Light, method(object({
|
|
|
24276
24276
|
});
|
|
24277
24277
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24278
24278
|
kind: "mutation",
|
|
24279
|
-
auth: "
|
|
24279
|
+
auth: "protected"
|
|
24280
24280
|
});
|
|
24281
24281
|
/**
|
|
24282
24282
|
* camera-credentials — device-scoped cap exposing the camera's network
|
|
@@ -24439,50 +24439,50 @@ DeviceType.Thermostat, DeviceType.Climate, method(object({
|
|
|
24439
24439
|
mode: HvacModeSchema
|
|
24440
24440
|
}), _void(), {
|
|
24441
24441
|
kind: "mutation",
|
|
24442
|
-
auth: "
|
|
24442
|
+
auth: "protected"
|
|
24443
24443
|
}), method(object({
|
|
24444
24444
|
deviceId: number().int().nonnegative(),
|
|
24445
24445
|
fanMode: string().min(1)
|
|
24446
24446
|
}), _void(), {
|
|
24447
24447
|
kind: "mutation",
|
|
24448
|
-
auth: "
|
|
24448
|
+
auth: "protected"
|
|
24449
24449
|
}), method(object({
|
|
24450
24450
|
deviceId: number().int().nonnegative(),
|
|
24451
24451
|
preset: string().min(1)
|
|
24452
24452
|
}), _void(), {
|
|
24453
24453
|
kind: "mutation",
|
|
24454
|
-
auth: "
|
|
24454
|
+
auth: "protected"
|
|
24455
24455
|
}), method(object({
|
|
24456
24456
|
deviceId: number().int().nonnegative(),
|
|
24457
24457
|
target: number()
|
|
24458
24458
|
}), _void(), {
|
|
24459
24459
|
kind: "mutation",
|
|
24460
|
-
auth: "
|
|
24460
|
+
auth: "protected"
|
|
24461
24461
|
}), method(object({
|
|
24462
24462
|
deviceId: number().int().nonnegative(),
|
|
24463
24463
|
targetLow: number(),
|
|
24464
24464
|
targetHigh: number()
|
|
24465
24465
|
}), _void(), {
|
|
24466
24466
|
kind: "mutation",
|
|
24467
|
-
auth: "
|
|
24467
|
+
auth: "protected"
|
|
24468
24468
|
}), method(object({
|
|
24469
24469
|
deviceId: number().int().nonnegative(),
|
|
24470
24470
|
targetHumidity: number().min(0).max(100)
|
|
24471
24471
|
}), _void(), {
|
|
24472
24472
|
kind: "mutation",
|
|
24473
|
-
auth: "
|
|
24473
|
+
auth: "protected"
|
|
24474
24474
|
}), method(object({
|
|
24475
24475
|
deviceId: number().int().nonnegative(),
|
|
24476
24476
|
on: boolean()
|
|
24477
24477
|
}), _void(), {
|
|
24478
24478
|
kind: "mutation",
|
|
24479
|
-
auth: "
|
|
24479
|
+
auth: "protected"
|
|
24480
24480
|
}), method(object({
|
|
24481
24481
|
deviceId: number().int().nonnegative(),
|
|
24482
24482
|
on: boolean()
|
|
24483
24483
|
}), _void(), {
|
|
24484
24484
|
kind: "mutation",
|
|
24485
|
-
auth: "
|
|
24485
|
+
auth: "protected"
|
|
24486
24486
|
});
|
|
24487
24487
|
/**
|
|
24488
24488
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -24557,7 +24557,7 @@ DeviceType.Light, method(object({
|
|
|
24557
24557
|
color: ColorInputSchema
|
|
24558
24558
|
}), _void(), {
|
|
24559
24559
|
kind: "mutation",
|
|
24560
|
-
auth: "
|
|
24560
|
+
auth: "protected"
|
|
24561
24561
|
}), object({
|
|
24562
24562
|
deviceId: number(),
|
|
24563
24563
|
mode: _enum([
|
|
@@ -24718,7 +24718,7 @@ DeviceType.Control, method(object({
|
|
|
24718
24718
|
control: ControlSetValueInputSchema
|
|
24719
24719
|
}), _void(), {
|
|
24720
24720
|
kind: "mutation",
|
|
24721
|
-
auth: "
|
|
24721
|
+
auth: "protected"
|
|
24722
24722
|
});
|
|
24723
24723
|
object({
|
|
24724
24724
|
/** Lifecycle state of the cover. */
|
|
@@ -24739,25 +24739,25 @@ object({
|
|
|
24739
24739
|
});
|
|
24740
24740
|
DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24741
24741
|
kind: "mutation",
|
|
24742
|
-
auth: "
|
|
24742
|
+
auth: "protected"
|
|
24743
24743
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24744
24744
|
kind: "mutation",
|
|
24745
|
-
auth: "
|
|
24745
|
+
auth: "protected"
|
|
24746
24746
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24747
24747
|
kind: "mutation",
|
|
24748
|
-
auth: "
|
|
24748
|
+
auth: "protected"
|
|
24749
24749
|
}), method(object({
|
|
24750
24750
|
deviceId: number().int().nonnegative(),
|
|
24751
24751
|
position: number().min(0).max(100)
|
|
24752
24752
|
}), _void(), {
|
|
24753
24753
|
kind: "mutation",
|
|
24754
|
-
auth: "
|
|
24754
|
+
auth: "protected"
|
|
24755
24755
|
}), method(object({
|
|
24756
24756
|
deviceId: number().int().nonnegative(),
|
|
24757
24757
|
tiltPosition: number().min(0).max(100)
|
|
24758
24758
|
}), _void(), {
|
|
24759
24759
|
kind: "mutation",
|
|
24760
|
-
auth: "
|
|
24760
|
+
auth: "protected"
|
|
24761
24761
|
});
|
|
24762
24762
|
/**
|
|
24763
24763
|
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
@@ -24962,6 +24962,59 @@ var IdentitySampleInfoSchema = object({
|
|
|
24962
24962
|
deviceId: number().int().optional(),
|
|
24963
24963
|
base64: string().optional()
|
|
24964
24964
|
});
|
|
24965
|
+
/**
|
|
24966
|
+
* One enrolled sample, judged against the gallery it lives in.
|
|
24967
|
+
*
|
|
24968
|
+
* The gallery is the one input to recognition nobody re-reads: a sample
|
|
24969
|
+
* enrolled from the wrong face keeps voting forever, and because the matches it
|
|
24970
|
+
* pulls then look confident, nobody goes back. The 2026-09-08 audit found
|
|
24971
|
+
* exactly one such pair on this cluster — a sample scoring 0.61 against three
|
|
24972
|
+
* samples of ANOTHER person, enrolled from the same camera in the same minute,
|
|
24973
|
+
* where every other cross-identity pair sits under 0.50.
|
|
24974
|
+
*/
|
|
24975
|
+
var IdentitySampleAuditRowSchema = object({
|
|
24976
|
+
sampleId: string(),
|
|
24977
|
+
enrolledAt: number().int(),
|
|
24978
|
+
deviceId: number().int().optional(),
|
|
24979
|
+
source: _enum(["detected", "photo"]),
|
|
24980
|
+
/** The enrolled crop's media key, so the panel can show the evidence. */
|
|
24981
|
+
mediaKey: string().optional(),
|
|
24982
|
+
/**
|
|
24983
|
+
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
24984
|
+
* across feature spaces is a well-formed float with no meaning. Every number
|
|
24985
|
+
* below then says nothing — it must read as "cannot say", never as an
|
|
24986
|
+
* accusation and never as a clean bill: this list ends in a Remove button.
|
|
24987
|
+
*/
|
|
24988
|
+
comparable: boolean(),
|
|
24989
|
+
/** Mean cosine against this person's other samples. Null when there are none
|
|
24990
|
+
* to compare with — never 0, which would read as "opposite". */
|
|
24991
|
+
selfMean: number().nullable(),
|
|
24992
|
+
/** The other person this sample looks most like, when it looks like one.
|
|
24993
|
+
* This is the half that convicts: not looking like yourself can be a hard
|
|
24994
|
+
* angle; looking like someone the gallery can NAME is a mis-enrolment. */
|
|
24995
|
+
bestForeign: object({
|
|
24996
|
+
identityId: string(),
|
|
24997
|
+
name: string(),
|
|
24998
|
+
score: number()
|
|
24999
|
+
}).optional(),
|
|
25000
|
+
/** 0 = nothing to say. Higher = look at this one sooner. */
|
|
25001
|
+
suspicion: number()
|
|
25002
|
+
});
|
|
25003
|
+
var IdentitySampleAuditSchema = object({
|
|
25004
|
+
identityId: string(),
|
|
25005
|
+
name: string(),
|
|
25006
|
+
/** The cluster face model every comparison was made in. */
|
|
25007
|
+
modelId: string(),
|
|
25008
|
+
totalSamples: number().int(),
|
|
25009
|
+
comparableSamples: number().int(),
|
|
25010
|
+
flagged: number().int(),
|
|
25011
|
+
/** The bar `flagged` counts against, so the panel states the RULE and not
|
|
25012
|
+
* only its current result. */
|
|
25013
|
+
flagThreshold: number(),
|
|
25014
|
+
/** Worst first. A row with nothing to say still appears, at the bottom: the
|
|
25015
|
+
* operator asked to see the gallery, not only its accusations. */
|
|
25016
|
+
rows: array(IdentitySampleAuditRowSchema).readonly()
|
|
25017
|
+
});
|
|
24965
25018
|
var FaceInfoSchema = object({
|
|
24966
25019
|
faceId: string(),
|
|
24967
25020
|
deviceId: number().int(),
|
|
@@ -25113,7 +25166,7 @@ includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly
|
|
|
25113
25166
|
}), method(object({ id: string() }), _void(), {
|
|
25114
25167
|
kind: "mutation",
|
|
25115
25168
|
auth: "admin"
|
|
25116
|
-
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({
|
|
25169
|
+
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({ identityId: string().min(1) }), IdentitySampleAuditSchema, { auth: "admin" }), method(object({
|
|
25117
25170
|
identityId: string(),
|
|
25118
25171
|
sampleId: string()
|
|
25119
25172
|
}), _void(), {
|
|
@@ -25299,25 +25352,25 @@ DeviceType.Fan, method(object({
|
|
|
25299
25352
|
percentage: number().min(0).max(100)
|
|
25300
25353
|
}), _void(), {
|
|
25301
25354
|
kind: "mutation",
|
|
25302
|
-
auth: "
|
|
25355
|
+
auth: "protected"
|
|
25303
25356
|
}), method(object({
|
|
25304
25357
|
deviceId: number().int().nonnegative(),
|
|
25305
25358
|
preset: string().min(1)
|
|
25306
25359
|
}), _void(), {
|
|
25307
25360
|
kind: "mutation",
|
|
25308
|
-
auth: "
|
|
25361
|
+
auth: "protected"
|
|
25309
25362
|
}), method(object({
|
|
25310
25363
|
deviceId: number().int().nonnegative(),
|
|
25311
25364
|
direction: FanDirectionSchema
|
|
25312
25365
|
}), _void(), {
|
|
25313
25366
|
kind: "mutation",
|
|
25314
|
-
auth: "
|
|
25367
|
+
auth: "protected"
|
|
25315
25368
|
}), method(object({
|
|
25316
25369
|
deviceId: number().int().nonnegative(),
|
|
25317
25370
|
oscillating: boolean()
|
|
25318
25371
|
}), _void(), {
|
|
25319
25372
|
kind: "mutation",
|
|
25320
|
-
auth: "
|
|
25373
|
+
auth: "protected"
|
|
25321
25374
|
});
|
|
25322
25375
|
/**
|
|
25323
25376
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -25428,19 +25481,19 @@ DeviceType.Humidifier, method(object({
|
|
|
25428
25481
|
on: boolean()
|
|
25429
25482
|
}), _void(), {
|
|
25430
25483
|
kind: "mutation",
|
|
25431
|
-
auth: "
|
|
25484
|
+
auth: "protected"
|
|
25432
25485
|
}), method(object({
|
|
25433
25486
|
deviceId: number().int().nonnegative(),
|
|
25434
25487
|
humidity: number().min(0).max(100)
|
|
25435
25488
|
}), _void(), {
|
|
25436
25489
|
kind: "mutation",
|
|
25437
|
-
auth: "
|
|
25490
|
+
auth: "protected"
|
|
25438
25491
|
}), method(object({
|
|
25439
25492
|
deviceId: number().int().nonnegative(),
|
|
25440
25493
|
mode: string().min(1)
|
|
25441
25494
|
}), _void(), {
|
|
25442
25495
|
kind: "mutation",
|
|
25443
|
-
auth: "
|
|
25496
|
+
auth: "protected"
|
|
25444
25497
|
});
|
|
25445
25498
|
/**
|
|
25446
25499
|
* Single-metric humidity reading. Drives Home Assistant `sensor`
|
|
@@ -25910,13 +25963,13 @@ object({
|
|
|
25910
25963
|
});
|
|
25911
25964
|
DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25912
25965
|
kind: "mutation",
|
|
25913
|
-
auth: "
|
|
25966
|
+
auth: "protected"
|
|
25914
25967
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25915
25968
|
kind: "mutation",
|
|
25916
|
-
auth: "
|
|
25969
|
+
auth: "protected"
|
|
25917
25970
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25918
25971
|
kind: "mutation",
|
|
25919
|
-
auth: "
|
|
25972
|
+
auth: "protected"
|
|
25920
25973
|
});
|
|
25921
25974
|
/**
|
|
25922
25975
|
* local-network — hub-only singleton.
|
|
@@ -26176,16 +26229,16 @@ DeviceType.Lock, method(object({
|
|
|
26176
26229
|
code: string().min(1).optional()
|
|
26177
26230
|
}), _void(), {
|
|
26178
26231
|
kind: "mutation",
|
|
26179
|
-
auth: "
|
|
26232
|
+
auth: "protected"
|
|
26180
26233
|
}), method(object({
|
|
26181
26234
|
deviceId: number().int().nonnegative(),
|
|
26182
26235
|
code: string().min(1).optional()
|
|
26183
26236
|
}), _void(), {
|
|
26184
26237
|
kind: "mutation",
|
|
26185
|
-
auth: "
|
|
26238
|
+
auth: "protected"
|
|
26186
26239
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26187
26240
|
kind: "mutation",
|
|
26188
|
-
auth: "
|
|
26241
|
+
auth: "protected"
|
|
26189
26242
|
});
|
|
26190
26243
|
/**
|
|
26191
26244
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
@@ -26259,55 +26312,55 @@ object({
|
|
|
26259
26312
|
});
|
|
26260
26313
|
DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26261
26314
|
kind: "mutation",
|
|
26262
|
-
auth: "
|
|
26315
|
+
auth: "protected"
|
|
26263
26316
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26264
26317
|
kind: "mutation",
|
|
26265
|
-
auth: "
|
|
26318
|
+
auth: "protected"
|
|
26266
26319
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26267
26320
|
kind: "mutation",
|
|
26268
|
-
auth: "
|
|
26321
|
+
auth: "protected"
|
|
26269
26322
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26270
26323
|
kind: "mutation",
|
|
26271
|
-
auth: "
|
|
26324
|
+
auth: "protected"
|
|
26272
26325
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26273
26326
|
kind: "mutation",
|
|
26274
|
-
auth: "
|
|
26327
|
+
auth: "protected"
|
|
26275
26328
|
}), method(object({
|
|
26276
26329
|
deviceId: number().int().nonnegative(),
|
|
26277
26330
|
positionMs: number().int().nonnegative()
|
|
26278
26331
|
}), _void(), {
|
|
26279
26332
|
kind: "mutation",
|
|
26280
|
-
auth: "
|
|
26333
|
+
auth: "protected"
|
|
26281
26334
|
}), method(object({
|
|
26282
26335
|
deviceId: number().int().nonnegative(),
|
|
26283
26336
|
volumeLevel: number().min(0).max(100)
|
|
26284
26337
|
}), _void(), {
|
|
26285
26338
|
kind: "mutation",
|
|
26286
|
-
auth: "
|
|
26339
|
+
auth: "protected"
|
|
26287
26340
|
}), method(object({
|
|
26288
26341
|
deviceId: number().int().nonnegative(),
|
|
26289
26342
|
muted: boolean()
|
|
26290
26343
|
}), _void(), {
|
|
26291
26344
|
kind: "mutation",
|
|
26292
|
-
auth: "
|
|
26345
|
+
auth: "protected"
|
|
26293
26346
|
}), method(object({
|
|
26294
26347
|
deviceId: number().int().nonnegative(),
|
|
26295
26348
|
shuffle: boolean()
|
|
26296
26349
|
}), _void(), {
|
|
26297
26350
|
kind: "mutation",
|
|
26298
|
-
auth: "
|
|
26351
|
+
auth: "protected"
|
|
26299
26352
|
}), method(object({
|
|
26300
26353
|
deviceId: number().int().nonnegative(),
|
|
26301
26354
|
repeat: MediaPlayerRepeatSchema
|
|
26302
26355
|
}), _void(), {
|
|
26303
26356
|
kind: "mutation",
|
|
26304
|
-
auth: "
|
|
26357
|
+
auth: "protected"
|
|
26305
26358
|
}), method(object({
|
|
26306
26359
|
deviceId: number().int().nonnegative(),
|
|
26307
26360
|
source: string().min(1)
|
|
26308
26361
|
}), _void(), {
|
|
26309
26362
|
kind: "mutation",
|
|
26310
|
-
auth: "
|
|
26363
|
+
auth: "protected"
|
|
26311
26364
|
}), method(object({
|
|
26312
26365
|
deviceId: number().int().nonnegative(),
|
|
26313
26366
|
/** Media identifier / URL. */
|
|
@@ -26317,7 +26370,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
26317
26370
|
mediaType: string().min(1)
|
|
26318
26371
|
}), _void(), {
|
|
26319
26372
|
kind: "mutation",
|
|
26320
|
-
auth: "
|
|
26373
|
+
auth: "protected"
|
|
26321
26374
|
});
|
|
26322
26375
|
/**
|
|
26323
26376
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -27495,49 +27548,49 @@ DeviceType.PetFeeder, method(object({
|
|
|
27495
27548
|
hopper2: gramsPortion.optional()
|
|
27496
27549
|
}), _void(), {
|
|
27497
27550
|
kind: "mutation",
|
|
27498
|
-
auth: "
|
|
27551
|
+
auth: "protected"
|
|
27499
27552
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27500
27553
|
kind: "mutation",
|
|
27501
|
-
auth: "
|
|
27554
|
+
auth: "protected"
|
|
27502
27555
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27503
27556
|
kind: "mutation",
|
|
27504
|
-
auth: "
|
|
27557
|
+
auth: "protected"
|
|
27505
27558
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27506
27559
|
kind: "mutation",
|
|
27507
|
-
auth: "
|
|
27560
|
+
auth: "protected"
|
|
27508
27561
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
27509
27562
|
kind: "mutation",
|
|
27510
|
-
auth: "
|
|
27563
|
+
auth: "protected"
|
|
27511
27564
|
}), method(object({
|
|
27512
27565
|
deviceId: number().int().nonnegative(),
|
|
27513
27566
|
soundId: number().int().nonnegative()
|
|
27514
27567
|
}), _void(), {
|
|
27515
27568
|
kind: "mutation",
|
|
27516
|
-
auth: "
|
|
27569
|
+
auth: "protected"
|
|
27517
27570
|
}), method(object({
|
|
27518
27571
|
deviceId: number().int().nonnegative(),
|
|
27519
27572
|
on: boolean()
|
|
27520
27573
|
}), _void(), {
|
|
27521
27574
|
kind: "mutation",
|
|
27522
|
-
auth: "
|
|
27575
|
+
auth: "protected"
|
|
27523
27576
|
}), method(object({
|
|
27524
27577
|
deviceId: number().int().nonnegative(),
|
|
27525
27578
|
on: boolean()
|
|
27526
27579
|
}), _void(), {
|
|
27527
27580
|
kind: "mutation",
|
|
27528
|
-
auth: "
|
|
27581
|
+
auth: "protected"
|
|
27529
27582
|
}), method(object({
|
|
27530
27583
|
deviceId: number().int().nonnegative(),
|
|
27531
27584
|
on: boolean()
|
|
27532
27585
|
}), _void(), {
|
|
27533
27586
|
kind: "mutation",
|
|
27534
|
-
auth: "
|
|
27587
|
+
auth: "protected"
|
|
27535
27588
|
}), method(object({
|
|
27536
27589
|
deviceId: number().int().nonnegative(),
|
|
27537
27590
|
level: number().int().nonnegative()
|
|
27538
27591
|
}), _void(), {
|
|
27539
27592
|
kind: "mutation",
|
|
27540
|
-
auth: "
|
|
27593
|
+
auth: "protected"
|
|
27541
27594
|
});
|
|
27542
27595
|
var VehicleSchema = object({
|
|
27543
27596
|
id: string(),
|
|
@@ -29333,7 +29386,7 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
|
|
|
29333
29386
|
on: boolean()
|
|
29334
29387
|
}), _void(), {
|
|
29335
29388
|
kind: "mutation",
|
|
29336
|
-
auth: "
|
|
29389
|
+
auth: "protected"
|
|
29337
29390
|
}), object({
|
|
29338
29391
|
deviceId: number(),
|
|
29339
29392
|
on: boolean(),
|
|
@@ -30206,25 +30259,25 @@ object({
|
|
|
30206
30259
|
});
|
|
30207
30260
|
DeviceType.Vacuum, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30208
30261
|
kind: "mutation",
|
|
30209
|
-
auth: "
|
|
30262
|
+
auth: "protected"
|
|
30210
30263
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30211
30264
|
kind: "mutation",
|
|
30212
|
-
auth: "
|
|
30265
|
+
auth: "protected"
|
|
30213
30266
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30214
30267
|
kind: "mutation",
|
|
30215
|
-
auth: "
|
|
30268
|
+
auth: "protected"
|
|
30216
30269
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30217
30270
|
kind: "mutation",
|
|
30218
|
-
auth: "
|
|
30271
|
+
auth: "protected"
|
|
30219
30272
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30220
30273
|
kind: "mutation",
|
|
30221
|
-
auth: "
|
|
30274
|
+
auth: "protected"
|
|
30222
30275
|
}), method(object({
|
|
30223
30276
|
deviceId: number().int().nonnegative(),
|
|
30224
30277
|
speed: string().min(1)
|
|
30225
30278
|
}), _void(), {
|
|
30226
30279
|
kind: "mutation",
|
|
30227
|
-
auth: "
|
|
30280
|
+
auth: "protected"
|
|
30228
30281
|
});
|
|
30229
30282
|
object({
|
|
30230
30283
|
/** Lifecycle state of the valve. */
|
|
@@ -30243,19 +30296,19 @@ object({
|
|
|
30243
30296
|
});
|
|
30244
30297
|
DeviceType.Valve, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30245
30298
|
kind: "mutation",
|
|
30246
|
-
auth: "
|
|
30299
|
+
auth: "protected"
|
|
30247
30300
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30248
30301
|
kind: "mutation",
|
|
30249
|
-
auth: "
|
|
30302
|
+
auth: "protected"
|
|
30250
30303
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
30251
30304
|
kind: "mutation",
|
|
30252
|
-
auth: "
|
|
30305
|
+
auth: "protected"
|
|
30253
30306
|
}), method(object({
|
|
30254
30307
|
deviceId: number().int().nonnegative(),
|
|
30255
30308
|
position: number().min(0).max(100)
|
|
30256
30309
|
}), _void(), {
|
|
30257
30310
|
kind: "mutation",
|
|
30258
|
-
auth: "
|
|
30311
|
+
auth: "protected"
|
|
30259
30312
|
});
|
|
30260
30313
|
object({
|
|
30261
30314
|
detected: boolean(),
|
|
@@ -30289,19 +30342,19 @@ DeviceType.WaterHeater, method(object({
|
|
|
30289
30342
|
temp: number().finite()
|
|
30290
30343
|
}), _void(), {
|
|
30291
30344
|
kind: "mutation",
|
|
30292
|
-
auth: "
|
|
30345
|
+
auth: "protected"
|
|
30293
30346
|
}), method(object({
|
|
30294
30347
|
deviceId: number().int().nonnegative(),
|
|
30295
30348
|
mode: string().min(1)
|
|
30296
30349
|
}), _void(), {
|
|
30297
30350
|
kind: "mutation",
|
|
30298
|
-
auth: "
|
|
30351
|
+
auth: "protected"
|
|
30299
30352
|
}), method(object({
|
|
30300
30353
|
deviceId: number().int().nonnegative(),
|
|
30301
30354
|
on: boolean()
|
|
30302
30355
|
}), _void(), {
|
|
30303
30356
|
kind: "mutation",
|
|
30304
|
-
auth: "
|
|
30357
|
+
auth: "protected"
|
|
30305
30358
|
});
|
|
30306
30359
|
object({
|
|
30307
30360
|
/** Verbatim HA condition state (`sunny`, `cloudy`, `rainy`, …). Null
|
|
@@ -32393,6 +32446,12 @@ Object.freeze({
|
|
|
32393
32446
|
addonId: null,
|
|
32394
32447
|
access: "create"
|
|
32395
32448
|
},
|
|
32449
|
+
"faceGallery.auditIdentitySamples": {
|
|
32450
|
+
capName: "face-gallery",
|
|
32451
|
+
capScope: "system",
|
|
32452
|
+
addonId: null,
|
|
32453
|
+
access: "view"
|
|
32454
|
+
},
|
|
32396
32455
|
"faceGallery.createIdentity": {
|
|
32397
32456
|
capName: "face-gallery",
|
|
32398
32457
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-export-hap",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.97",
|
|
4
4
|
"description": "HomeKit (HAP) exporter for CamStack devices. Publishes each exposed device as its own HomeKit accessory: cameras and doorbells with SRTP streaming, HomeKit Secure Video, motion, two-way audio, PTZ and battery; switches, lights, locks and sensors through a capability→service table.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|