@camstack/addon-notifiers 1.2.88 → 1.2.90
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/addon.js +129 -70
- package/dist/addon.mjs +129 -70
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -15999,16 +15999,16 @@ DeviceType.AlarmPanel, method(object({
|
|
|
15999
15999
|
code: string().min(1).optional()
|
|
16000
16000
|
}), _void(), {
|
|
16001
16001
|
kind: "mutation",
|
|
16002
|
-
auth: "
|
|
16002
|
+
auth: "protected"
|
|
16003
16003
|
}), method(object({
|
|
16004
16004
|
deviceId: number().int().nonnegative(),
|
|
16005
16005
|
code: string().min(1).optional()
|
|
16006
16006
|
}), _void(), {
|
|
16007
16007
|
kind: "mutation",
|
|
16008
|
-
auth: "
|
|
16008
|
+
auth: "protected"
|
|
16009
16009
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
16010
16010
|
kind: "mutation",
|
|
16011
|
-
auth: "
|
|
16011
|
+
auth: "protected"
|
|
16012
16012
|
});
|
|
16013
16013
|
/**
|
|
16014
16014
|
* Shared geometry vocabulary for on-frame shape caps — privacy-mask,
|
|
@@ -23663,7 +23663,7 @@ DeviceType.Light, method(object({
|
|
|
23663
23663
|
percentage: number().min(0).max(100)
|
|
23664
23664
|
}), _void(), {
|
|
23665
23665
|
kind: "mutation",
|
|
23666
|
-
auth: "
|
|
23666
|
+
auth: "protected"
|
|
23667
23667
|
}), object({
|
|
23668
23668
|
deviceId: number(),
|
|
23669
23669
|
percentage: number().min(0).max(100),
|
|
@@ -23671,7 +23671,7 @@ DeviceType.Light, method(object({
|
|
|
23671
23671
|
});
|
|
23672
23672
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
23673
23673
|
kind: "mutation",
|
|
23674
|
-
auth: "
|
|
23674
|
+
auth: "protected"
|
|
23675
23675
|
});
|
|
23676
23676
|
/**
|
|
23677
23677
|
* camera-credentials — device-scoped cap exposing the camera's network
|
|
@@ -23830,50 +23830,50 @@ DeviceType.Thermostat, DeviceType.Climate, method(object({
|
|
|
23830
23830
|
mode: HvacModeSchema
|
|
23831
23831
|
}), _void(), {
|
|
23832
23832
|
kind: "mutation",
|
|
23833
|
-
auth: "
|
|
23833
|
+
auth: "protected"
|
|
23834
23834
|
}), method(object({
|
|
23835
23835
|
deviceId: number().int().nonnegative(),
|
|
23836
23836
|
fanMode: string().min(1)
|
|
23837
23837
|
}), _void(), {
|
|
23838
23838
|
kind: "mutation",
|
|
23839
|
-
auth: "
|
|
23839
|
+
auth: "protected"
|
|
23840
23840
|
}), method(object({
|
|
23841
23841
|
deviceId: number().int().nonnegative(),
|
|
23842
23842
|
preset: string().min(1)
|
|
23843
23843
|
}), _void(), {
|
|
23844
23844
|
kind: "mutation",
|
|
23845
|
-
auth: "
|
|
23845
|
+
auth: "protected"
|
|
23846
23846
|
}), method(object({
|
|
23847
23847
|
deviceId: number().int().nonnegative(),
|
|
23848
23848
|
target: number()
|
|
23849
23849
|
}), _void(), {
|
|
23850
23850
|
kind: "mutation",
|
|
23851
|
-
auth: "
|
|
23851
|
+
auth: "protected"
|
|
23852
23852
|
}), method(object({
|
|
23853
23853
|
deviceId: number().int().nonnegative(),
|
|
23854
23854
|
targetLow: number(),
|
|
23855
23855
|
targetHigh: number()
|
|
23856
23856
|
}), _void(), {
|
|
23857
23857
|
kind: "mutation",
|
|
23858
|
-
auth: "
|
|
23858
|
+
auth: "protected"
|
|
23859
23859
|
}), method(object({
|
|
23860
23860
|
deviceId: number().int().nonnegative(),
|
|
23861
23861
|
targetHumidity: number().min(0).max(100)
|
|
23862
23862
|
}), _void(), {
|
|
23863
23863
|
kind: "mutation",
|
|
23864
|
-
auth: "
|
|
23864
|
+
auth: "protected"
|
|
23865
23865
|
}), method(object({
|
|
23866
23866
|
deviceId: number().int().nonnegative(),
|
|
23867
23867
|
on: boolean()
|
|
23868
23868
|
}), _void(), {
|
|
23869
23869
|
kind: "mutation",
|
|
23870
|
-
auth: "
|
|
23870
|
+
auth: "protected"
|
|
23871
23871
|
}), method(object({
|
|
23872
23872
|
deviceId: number().int().nonnegative(),
|
|
23873
23873
|
on: boolean()
|
|
23874
23874
|
}), _void(), {
|
|
23875
23875
|
kind: "mutation",
|
|
23876
|
-
auth: "
|
|
23876
|
+
auth: "protected"
|
|
23877
23877
|
});
|
|
23878
23878
|
/**
|
|
23879
23879
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -23948,7 +23948,7 @@ DeviceType.Light, method(object({
|
|
|
23948
23948
|
color: ColorInputSchema
|
|
23949
23949
|
}), _void(), {
|
|
23950
23950
|
kind: "mutation",
|
|
23951
|
-
auth: "
|
|
23951
|
+
auth: "protected"
|
|
23952
23952
|
}), object({
|
|
23953
23953
|
deviceId: number(),
|
|
23954
23954
|
mode: _enum([
|
|
@@ -24097,7 +24097,7 @@ DeviceType.Control, method(object({
|
|
|
24097
24097
|
control: ControlSetValueInputSchema
|
|
24098
24098
|
}), _void(), {
|
|
24099
24099
|
kind: "mutation",
|
|
24100
|
-
auth: "
|
|
24100
|
+
auth: "protected"
|
|
24101
24101
|
});
|
|
24102
24102
|
object({
|
|
24103
24103
|
/** Lifecycle state of the cover. */
|
|
@@ -24118,25 +24118,25 @@ object({
|
|
|
24118
24118
|
});
|
|
24119
24119
|
DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24120
24120
|
kind: "mutation",
|
|
24121
|
-
auth: "
|
|
24121
|
+
auth: "protected"
|
|
24122
24122
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24123
24123
|
kind: "mutation",
|
|
24124
|
-
auth: "
|
|
24124
|
+
auth: "protected"
|
|
24125
24125
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24126
24126
|
kind: "mutation",
|
|
24127
|
-
auth: "
|
|
24127
|
+
auth: "protected"
|
|
24128
24128
|
}), method(object({
|
|
24129
24129
|
deviceId: number().int().nonnegative(),
|
|
24130
24130
|
position: number().min(0).max(100)
|
|
24131
24131
|
}), _void(), {
|
|
24132
24132
|
kind: "mutation",
|
|
24133
|
-
auth: "
|
|
24133
|
+
auth: "protected"
|
|
24134
24134
|
}), method(object({
|
|
24135
24135
|
deviceId: number().int().nonnegative(),
|
|
24136
24136
|
tiltPosition: number().min(0).max(100)
|
|
24137
24137
|
}), _void(), {
|
|
24138
24138
|
kind: "mutation",
|
|
24139
|
-
auth: "
|
|
24139
|
+
auth: "protected"
|
|
24140
24140
|
});
|
|
24141
24141
|
/**
|
|
24142
24142
|
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
@@ -24341,6 +24341,59 @@ var IdentitySampleInfoSchema = object({
|
|
|
24341
24341
|
deviceId: number().int().optional(),
|
|
24342
24342
|
base64: string().optional()
|
|
24343
24343
|
});
|
|
24344
|
+
/**
|
|
24345
|
+
* One enrolled sample, judged against the gallery it lives in.
|
|
24346
|
+
*
|
|
24347
|
+
* The gallery is the one input to recognition nobody re-reads: a sample
|
|
24348
|
+
* enrolled from the wrong face keeps voting forever, and because the matches it
|
|
24349
|
+
* pulls then look confident, nobody goes back. The 2026-09-08 audit found
|
|
24350
|
+
* exactly one such pair on this cluster — a sample scoring 0.61 against three
|
|
24351
|
+
* samples of ANOTHER person, enrolled from the same camera in the same minute,
|
|
24352
|
+
* where every other cross-identity pair sits under 0.50.
|
|
24353
|
+
*/
|
|
24354
|
+
var IdentitySampleAuditRowSchema = object({
|
|
24355
|
+
sampleId: string(),
|
|
24356
|
+
enrolledAt: number().int(),
|
|
24357
|
+
deviceId: number().int().optional(),
|
|
24358
|
+
source: _enum(["detected", "photo"]),
|
|
24359
|
+
/** The enrolled crop's media key, so the panel can show the evidence. */
|
|
24360
|
+
mediaKey: string().optional(),
|
|
24361
|
+
/**
|
|
24362
|
+
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
24363
|
+
* across feature spaces is a well-formed float with no meaning. Every number
|
|
24364
|
+
* below then says nothing — it must read as "cannot say", never as an
|
|
24365
|
+
* accusation and never as a clean bill: this list ends in a Remove button.
|
|
24366
|
+
*/
|
|
24367
|
+
comparable: boolean(),
|
|
24368
|
+
/** Mean cosine against this person's other samples. Null when there are none
|
|
24369
|
+
* to compare with — never 0, which would read as "opposite". */
|
|
24370
|
+
selfMean: number().nullable(),
|
|
24371
|
+
/** The other person this sample looks most like, when it looks like one.
|
|
24372
|
+
* This is the half that convicts: not looking like yourself can be a hard
|
|
24373
|
+
* angle; looking like someone the gallery can NAME is a mis-enrolment. */
|
|
24374
|
+
bestForeign: object({
|
|
24375
|
+
identityId: string(),
|
|
24376
|
+
name: string(),
|
|
24377
|
+
score: number()
|
|
24378
|
+
}).optional(),
|
|
24379
|
+
/** 0 = nothing to say. Higher = look at this one sooner. */
|
|
24380
|
+
suspicion: number()
|
|
24381
|
+
});
|
|
24382
|
+
var IdentitySampleAuditSchema = object({
|
|
24383
|
+
identityId: string(),
|
|
24384
|
+
name: string(),
|
|
24385
|
+
/** The cluster face model every comparison was made in. */
|
|
24386
|
+
modelId: string(),
|
|
24387
|
+
totalSamples: number().int(),
|
|
24388
|
+
comparableSamples: number().int(),
|
|
24389
|
+
flagged: number().int(),
|
|
24390
|
+
/** The bar `flagged` counts against, so the panel states the RULE and not
|
|
24391
|
+
* only its current result. */
|
|
24392
|
+
flagThreshold: number(),
|
|
24393
|
+
/** Worst first. A row with nothing to say still appears, at the bottom: the
|
|
24394
|
+
* operator asked to see the gallery, not only its accusations. */
|
|
24395
|
+
rows: array(IdentitySampleAuditRowSchema).readonly()
|
|
24396
|
+
});
|
|
24344
24397
|
var FaceInfoSchema = object({
|
|
24345
24398
|
faceId: string(),
|
|
24346
24399
|
deviceId: number().int(),
|
|
@@ -24492,7 +24545,7 @@ includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly
|
|
|
24492
24545
|
}), method(object({ id: string() }), _void(), {
|
|
24493
24546
|
kind: "mutation",
|
|
24494
24547
|
auth: "admin"
|
|
24495
|
-
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({
|
|
24548
|
+
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({ identityId: string().min(1) }), IdentitySampleAuditSchema, { auth: "admin" }), method(object({
|
|
24496
24549
|
identityId: string(),
|
|
24497
24550
|
sampleId: string()
|
|
24498
24551
|
}), _void(), {
|
|
@@ -24678,25 +24731,25 @@ DeviceType.Fan, method(object({
|
|
|
24678
24731
|
percentage: number().min(0).max(100)
|
|
24679
24732
|
}), _void(), {
|
|
24680
24733
|
kind: "mutation",
|
|
24681
|
-
auth: "
|
|
24734
|
+
auth: "protected"
|
|
24682
24735
|
}), method(object({
|
|
24683
24736
|
deviceId: number().int().nonnegative(),
|
|
24684
24737
|
preset: string().min(1)
|
|
24685
24738
|
}), _void(), {
|
|
24686
24739
|
kind: "mutation",
|
|
24687
|
-
auth: "
|
|
24740
|
+
auth: "protected"
|
|
24688
24741
|
}), method(object({
|
|
24689
24742
|
deviceId: number().int().nonnegative(),
|
|
24690
24743
|
direction: FanDirectionSchema
|
|
24691
24744
|
}), _void(), {
|
|
24692
24745
|
kind: "mutation",
|
|
24693
|
-
auth: "
|
|
24746
|
+
auth: "protected"
|
|
24694
24747
|
}), method(object({
|
|
24695
24748
|
deviceId: number().int().nonnegative(),
|
|
24696
24749
|
oscillating: boolean()
|
|
24697
24750
|
}), _void(), {
|
|
24698
24751
|
kind: "mutation",
|
|
24699
|
-
auth: "
|
|
24752
|
+
auth: "protected"
|
|
24700
24753
|
});
|
|
24701
24754
|
/**
|
|
24702
24755
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -24799,19 +24852,19 @@ DeviceType.Humidifier, method(object({
|
|
|
24799
24852
|
on: boolean()
|
|
24800
24853
|
}), _void(), {
|
|
24801
24854
|
kind: "mutation",
|
|
24802
|
-
auth: "
|
|
24855
|
+
auth: "protected"
|
|
24803
24856
|
}), method(object({
|
|
24804
24857
|
deviceId: number().int().nonnegative(),
|
|
24805
24858
|
humidity: number().min(0).max(100)
|
|
24806
24859
|
}), _void(), {
|
|
24807
24860
|
kind: "mutation",
|
|
24808
|
-
auth: "
|
|
24861
|
+
auth: "protected"
|
|
24809
24862
|
}), method(object({
|
|
24810
24863
|
deviceId: number().int().nonnegative(),
|
|
24811
24864
|
mode: string().min(1)
|
|
24812
24865
|
}), _void(), {
|
|
24813
24866
|
kind: "mutation",
|
|
24814
|
-
auth: "
|
|
24867
|
+
auth: "protected"
|
|
24815
24868
|
});
|
|
24816
24869
|
object({
|
|
24817
24870
|
/** Current relative humidity, 0..100. */
|
|
@@ -25273,13 +25326,13 @@ object({
|
|
|
25273
25326
|
});
|
|
25274
25327
|
DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25275
25328
|
kind: "mutation",
|
|
25276
|
-
auth: "
|
|
25329
|
+
auth: "protected"
|
|
25277
25330
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25278
25331
|
kind: "mutation",
|
|
25279
|
-
auth: "
|
|
25332
|
+
auth: "protected"
|
|
25280
25333
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25281
25334
|
kind: "mutation",
|
|
25282
|
-
auth: "
|
|
25335
|
+
auth: "protected"
|
|
25283
25336
|
});
|
|
25284
25337
|
/**
|
|
25285
25338
|
* local-network — hub-only singleton.
|
|
@@ -25539,16 +25592,16 @@ DeviceType.Lock, method(object({
|
|
|
25539
25592
|
code: string().min(1).optional()
|
|
25540
25593
|
}), _void(), {
|
|
25541
25594
|
kind: "mutation",
|
|
25542
|
-
auth: "
|
|
25595
|
+
auth: "protected"
|
|
25543
25596
|
}), method(object({
|
|
25544
25597
|
deviceId: number().int().nonnegative(),
|
|
25545
25598
|
code: string().min(1).optional()
|
|
25546
25599
|
}), _void(), {
|
|
25547
25600
|
kind: "mutation",
|
|
25548
|
-
auth: "
|
|
25601
|
+
auth: "protected"
|
|
25549
25602
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25550
25603
|
kind: "mutation",
|
|
25551
|
-
auth: "
|
|
25604
|
+
auth: "protected"
|
|
25552
25605
|
});
|
|
25553
25606
|
/**
|
|
25554
25607
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
@@ -25622,55 +25675,55 @@ object({
|
|
|
25622
25675
|
});
|
|
25623
25676
|
DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25624
25677
|
kind: "mutation",
|
|
25625
|
-
auth: "
|
|
25678
|
+
auth: "protected"
|
|
25626
25679
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25627
25680
|
kind: "mutation",
|
|
25628
|
-
auth: "
|
|
25681
|
+
auth: "protected"
|
|
25629
25682
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25630
25683
|
kind: "mutation",
|
|
25631
|
-
auth: "
|
|
25684
|
+
auth: "protected"
|
|
25632
25685
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25633
25686
|
kind: "mutation",
|
|
25634
|
-
auth: "
|
|
25687
|
+
auth: "protected"
|
|
25635
25688
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25636
25689
|
kind: "mutation",
|
|
25637
|
-
auth: "
|
|
25690
|
+
auth: "protected"
|
|
25638
25691
|
}), method(object({
|
|
25639
25692
|
deviceId: number().int().nonnegative(),
|
|
25640
25693
|
positionMs: number().int().nonnegative()
|
|
25641
25694
|
}), _void(), {
|
|
25642
25695
|
kind: "mutation",
|
|
25643
|
-
auth: "
|
|
25696
|
+
auth: "protected"
|
|
25644
25697
|
}), method(object({
|
|
25645
25698
|
deviceId: number().int().nonnegative(),
|
|
25646
25699
|
volumeLevel: number().min(0).max(100)
|
|
25647
25700
|
}), _void(), {
|
|
25648
25701
|
kind: "mutation",
|
|
25649
|
-
auth: "
|
|
25702
|
+
auth: "protected"
|
|
25650
25703
|
}), method(object({
|
|
25651
25704
|
deviceId: number().int().nonnegative(),
|
|
25652
25705
|
muted: boolean()
|
|
25653
25706
|
}), _void(), {
|
|
25654
25707
|
kind: "mutation",
|
|
25655
|
-
auth: "
|
|
25708
|
+
auth: "protected"
|
|
25656
25709
|
}), method(object({
|
|
25657
25710
|
deviceId: number().int().nonnegative(),
|
|
25658
25711
|
shuffle: boolean()
|
|
25659
25712
|
}), _void(), {
|
|
25660
25713
|
kind: "mutation",
|
|
25661
|
-
auth: "
|
|
25714
|
+
auth: "protected"
|
|
25662
25715
|
}), method(object({
|
|
25663
25716
|
deviceId: number().int().nonnegative(),
|
|
25664
25717
|
repeat: MediaPlayerRepeatSchema
|
|
25665
25718
|
}), _void(), {
|
|
25666
25719
|
kind: "mutation",
|
|
25667
|
-
auth: "
|
|
25720
|
+
auth: "protected"
|
|
25668
25721
|
}), method(object({
|
|
25669
25722
|
deviceId: number().int().nonnegative(),
|
|
25670
25723
|
source: string().min(1)
|
|
25671
25724
|
}), _void(), {
|
|
25672
25725
|
kind: "mutation",
|
|
25673
|
-
auth: "
|
|
25726
|
+
auth: "protected"
|
|
25674
25727
|
}), method(object({
|
|
25675
25728
|
deviceId: number().int().nonnegative(),
|
|
25676
25729
|
/** Media identifier / URL. */
|
|
@@ -25680,7 +25733,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
25680
25733
|
mediaType: string().min(1)
|
|
25681
25734
|
}), _void(), {
|
|
25682
25735
|
kind: "mutation",
|
|
25683
|
-
auth: "
|
|
25736
|
+
auth: "protected"
|
|
25684
25737
|
});
|
|
25685
25738
|
/**
|
|
25686
25739
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -26846,49 +26899,49 @@ DeviceType.PetFeeder, method(object({
|
|
|
26846
26899
|
hopper2: gramsPortion.optional()
|
|
26847
26900
|
}), _void(), {
|
|
26848
26901
|
kind: "mutation",
|
|
26849
|
-
auth: "
|
|
26902
|
+
auth: "protected"
|
|
26850
26903
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26851
26904
|
kind: "mutation",
|
|
26852
|
-
auth: "
|
|
26905
|
+
auth: "protected"
|
|
26853
26906
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26854
26907
|
kind: "mutation",
|
|
26855
|
-
auth: "
|
|
26908
|
+
auth: "protected"
|
|
26856
26909
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26857
26910
|
kind: "mutation",
|
|
26858
|
-
auth: "
|
|
26911
|
+
auth: "protected"
|
|
26859
26912
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26860
26913
|
kind: "mutation",
|
|
26861
|
-
auth: "
|
|
26914
|
+
auth: "protected"
|
|
26862
26915
|
}), method(object({
|
|
26863
26916
|
deviceId: number().int().nonnegative(),
|
|
26864
26917
|
soundId: number().int().nonnegative()
|
|
26865
26918
|
}), _void(), {
|
|
26866
26919
|
kind: "mutation",
|
|
26867
|
-
auth: "
|
|
26920
|
+
auth: "protected"
|
|
26868
26921
|
}), method(object({
|
|
26869
26922
|
deviceId: number().int().nonnegative(),
|
|
26870
26923
|
on: boolean()
|
|
26871
26924
|
}), _void(), {
|
|
26872
26925
|
kind: "mutation",
|
|
26873
|
-
auth: "
|
|
26926
|
+
auth: "protected"
|
|
26874
26927
|
}), method(object({
|
|
26875
26928
|
deviceId: number().int().nonnegative(),
|
|
26876
26929
|
on: boolean()
|
|
26877
26930
|
}), _void(), {
|
|
26878
26931
|
kind: "mutation",
|
|
26879
|
-
auth: "
|
|
26932
|
+
auth: "protected"
|
|
26880
26933
|
}), method(object({
|
|
26881
26934
|
deviceId: number().int().nonnegative(),
|
|
26882
26935
|
on: boolean()
|
|
26883
26936
|
}), _void(), {
|
|
26884
26937
|
kind: "mutation",
|
|
26885
|
-
auth: "
|
|
26938
|
+
auth: "protected"
|
|
26886
26939
|
}), method(object({
|
|
26887
26940
|
deviceId: number().int().nonnegative(),
|
|
26888
26941
|
level: number().int().nonnegative()
|
|
26889
26942
|
}), _void(), {
|
|
26890
26943
|
kind: "mutation",
|
|
26891
|
-
auth: "
|
|
26944
|
+
auth: "protected"
|
|
26892
26945
|
});
|
|
26893
26946
|
var VehicleSchema = object({
|
|
26894
26947
|
id: string(),
|
|
@@ -28675,7 +28728,7 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
|
|
|
28675
28728
|
on: boolean()
|
|
28676
28729
|
}), _void(), {
|
|
28677
28730
|
kind: "mutation",
|
|
28678
|
-
auth: "
|
|
28731
|
+
auth: "protected"
|
|
28679
28732
|
}), object({
|
|
28680
28733
|
deviceId: number(),
|
|
28681
28734
|
on: boolean(),
|
|
@@ -29532,25 +29585,25 @@ object({
|
|
|
29532
29585
|
});
|
|
29533
29586
|
DeviceType.Vacuum, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29534
29587
|
kind: "mutation",
|
|
29535
|
-
auth: "
|
|
29588
|
+
auth: "protected"
|
|
29536
29589
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29537
29590
|
kind: "mutation",
|
|
29538
|
-
auth: "
|
|
29591
|
+
auth: "protected"
|
|
29539
29592
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29540
29593
|
kind: "mutation",
|
|
29541
|
-
auth: "
|
|
29594
|
+
auth: "protected"
|
|
29542
29595
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29543
29596
|
kind: "mutation",
|
|
29544
|
-
auth: "
|
|
29597
|
+
auth: "protected"
|
|
29545
29598
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29546
29599
|
kind: "mutation",
|
|
29547
|
-
auth: "
|
|
29600
|
+
auth: "protected"
|
|
29548
29601
|
}), method(object({
|
|
29549
29602
|
deviceId: number().int().nonnegative(),
|
|
29550
29603
|
speed: string().min(1)
|
|
29551
29604
|
}), _void(), {
|
|
29552
29605
|
kind: "mutation",
|
|
29553
|
-
auth: "
|
|
29606
|
+
auth: "protected"
|
|
29554
29607
|
});
|
|
29555
29608
|
object({
|
|
29556
29609
|
/** Lifecycle state of the valve. */
|
|
@@ -29569,19 +29622,19 @@ object({
|
|
|
29569
29622
|
});
|
|
29570
29623
|
DeviceType.Valve, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29571
29624
|
kind: "mutation",
|
|
29572
|
-
auth: "
|
|
29625
|
+
auth: "protected"
|
|
29573
29626
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29574
29627
|
kind: "mutation",
|
|
29575
|
-
auth: "
|
|
29628
|
+
auth: "protected"
|
|
29576
29629
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29577
29630
|
kind: "mutation",
|
|
29578
|
-
auth: "
|
|
29631
|
+
auth: "protected"
|
|
29579
29632
|
}), method(object({
|
|
29580
29633
|
deviceId: number().int().nonnegative(),
|
|
29581
29634
|
position: number().min(0).max(100)
|
|
29582
29635
|
}), _void(), {
|
|
29583
29636
|
kind: "mutation",
|
|
29584
|
-
auth: "
|
|
29637
|
+
auth: "protected"
|
|
29585
29638
|
});
|
|
29586
29639
|
object({
|
|
29587
29640
|
detected: boolean(),
|
|
@@ -29615,19 +29668,19 @@ DeviceType.WaterHeater, method(object({
|
|
|
29615
29668
|
temp: number().finite()
|
|
29616
29669
|
}), _void(), {
|
|
29617
29670
|
kind: "mutation",
|
|
29618
|
-
auth: "
|
|
29671
|
+
auth: "protected"
|
|
29619
29672
|
}), method(object({
|
|
29620
29673
|
deviceId: number().int().nonnegative(),
|
|
29621
29674
|
mode: string().min(1)
|
|
29622
29675
|
}), _void(), {
|
|
29623
29676
|
kind: "mutation",
|
|
29624
|
-
auth: "
|
|
29677
|
+
auth: "protected"
|
|
29625
29678
|
}), method(object({
|
|
29626
29679
|
deviceId: number().int().nonnegative(),
|
|
29627
29680
|
on: boolean()
|
|
29628
29681
|
}), _void(), {
|
|
29629
29682
|
kind: "mutation",
|
|
29630
|
-
auth: "
|
|
29683
|
+
auth: "protected"
|
|
29631
29684
|
});
|
|
29632
29685
|
object({
|
|
29633
29686
|
/** Verbatim HA condition state (`sunny`, `cloudy`, `rainy`, …). Null
|
|
@@ -31719,6 +31772,12 @@ Object.freeze({
|
|
|
31719
31772
|
addonId: null,
|
|
31720
31773
|
access: "create"
|
|
31721
31774
|
},
|
|
31775
|
+
"faceGallery.auditIdentitySamples": {
|
|
31776
|
+
capName: "face-gallery",
|
|
31777
|
+
capScope: "system",
|
|
31778
|
+
addonId: null,
|
|
31779
|
+
access: "view"
|
|
31780
|
+
},
|
|
31722
31781
|
"faceGallery.createIdentity": {
|
|
31723
31782
|
capName: "face-gallery",
|
|
31724
31783
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -15972,16 +15972,16 @@ DeviceType.AlarmPanel, method(object({
|
|
|
15972
15972
|
code: string().min(1).optional()
|
|
15973
15973
|
}), _void(), {
|
|
15974
15974
|
kind: "mutation",
|
|
15975
|
-
auth: "
|
|
15975
|
+
auth: "protected"
|
|
15976
15976
|
}), method(object({
|
|
15977
15977
|
deviceId: number().int().nonnegative(),
|
|
15978
15978
|
code: string().min(1).optional()
|
|
15979
15979
|
}), _void(), {
|
|
15980
15980
|
kind: "mutation",
|
|
15981
|
-
auth: "
|
|
15981
|
+
auth: "protected"
|
|
15982
15982
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
15983
15983
|
kind: "mutation",
|
|
15984
|
-
auth: "
|
|
15984
|
+
auth: "protected"
|
|
15985
15985
|
});
|
|
15986
15986
|
/**
|
|
15987
15987
|
* Shared geometry vocabulary for on-frame shape caps — privacy-mask,
|
|
@@ -23636,7 +23636,7 @@ DeviceType.Light, method(object({
|
|
|
23636
23636
|
percentage: number().min(0).max(100)
|
|
23637
23637
|
}), _void(), {
|
|
23638
23638
|
kind: "mutation",
|
|
23639
|
-
auth: "
|
|
23639
|
+
auth: "protected"
|
|
23640
23640
|
}), object({
|
|
23641
23641
|
deviceId: number(),
|
|
23642
23642
|
percentage: number().min(0).max(100),
|
|
@@ -23644,7 +23644,7 @@ DeviceType.Light, method(object({
|
|
|
23644
23644
|
});
|
|
23645
23645
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
23646
23646
|
kind: "mutation",
|
|
23647
|
-
auth: "
|
|
23647
|
+
auth: "protected"
|
|
23648
23648
|
});
|
|
23649
23649
|
/**
|
|
23650
23650
|
* camera-credentials — device-scoped cap exposing the camera's network
|
|
@@ -23803,50 +23803,50 @@ DeviceType.Thermostat, DeviceType.Climate, method(object({
|
|
|
23803
23803
|
mode: HvacModeSchema
|
|
23804
23804
|
}), _void(), {
|
|
23805
23805
|
kind: "mutation",
|
|
23806
|
-
auth: "
|
|
23806
|
+
auth: "protected"
|
|
23807
23807
|
}), method(object({
|
|
23808
23808
|
deviceId: number().int().nonnegative(),
|
|
23809
23809
|
fanMode: string().min(1)
|
|
23810
23810
|
}), _void(), {
|
|
23811
23811
|
kind: "mutation",
|
|
23812
|
-
auth: "
|
|
23812
|
+
auth: "protected"
|
|
23813
23813
|
}), method(object({
|
|
23814
23814
|
deviceId: number().int().nonnegative(),
|
|
23815
23815
|
preset: string().min(1)
|
|
23816
23816
|
}), _void(), {
|
|
23817
23817
|
kind: "mutation",
|
|
23818
|
-
auth: "
|
|
23818
|
+
auth: "protected"
|
|
23819
23819
|
}), method(object({
|
|
23820
23820
|
deviceId: number().int().nonnegative(),
|
|
23821
23821
|
target: number()
|
|
23822
23822
|
}), _void(), {
|
|
23823
23823
|
kind: "mutation",
|
|
23824
|
-
auth: "
|
|
23824
|
+
auth: "protected"
|
|
23825
23825
|
}), method(object({
|
|
23826
23826
|
deviceId: number().int().nonnegative(),
|
|
23827
23827
|
targetLow: number(),
|
|
23828
23828
|
targetHigh: number()
|
|
23829
23829
|
}), _void(), {
|
|
23830
23830
|
kind: "mutation",
|
|
23831
|
-
auth: "
|
|
23831
|
+
auth: "protected"
|
|
23832
23832
|
}), method(object({
|
|
23833
23833
|
deviceId: number().int().nonnegative(),
|
|
23834
23834
|
targetHumidity: number().min(0).max(100)
|
|
23835
23835
|
}), _void(), {
|
|
23836
23836
|
kind: "mutation",
|
|
23837
|
-
auth: "
|
|
23837
|
+
auth: "protected"
|
|
23838
23838
|
}), method(object({
|
|
23839
23839
|
deviceId: number().int().nonnegative(),
|
|
23840
23840
|
on: boolean()
|
|
23841
23841
|
}), _void(), {
|
|
23842
23842
|
kind: "mutation",
|
|
23843
|
-
auth: "
|
|
23843
|
+
auth: "protected"
|
|
23844
23844
|
}), method(object({
|
|
23845
23845
|
deviceId: number().int().nonnegative(),
|
|
23846
23846
|
on: boolean()
|
|
23847
23847
|
}), _void(), {
|
|
23848
23848
|
kind: "mutation",
|
|
23849
|
-
auth: "
|
|
23849
|
+
auth: "protected"
|
|
23850
23850
|
});
|
|
23851
23851
|
/**
|
|
23852
23852
|
* Color-light cap. Coexists with `switch` (on/off) and `brightness`
|
|
@@ -23921,7 +23921,7 @@ DeviceType.Light, method(object({
|
|
|
23921
23921
|
color: ColorInputSchema
|
|
23922
23922
|
}), _void(), {
|
|
23923
23923
|
kind: "mutation",
|
|
23924
|
-
auth: "
|
|
23924
|
+
auth: "protected"
|
|
23925
23925
|
}), object({
|
|
23926
23926
|
deviceId: number(),
|
|
23927
23927
|
mode: _enum([
|
|
@@ -24070,7 +24070,7 @@ DeviceType.Control, method(object({
|
|
|
24070
24070
|
control: ControlSetValueInputSchema
|
|
24071
24071
|
}), _void(), {
|
|
24072
24072
|
kind: "mutation",
|
|
24073
|
-
auth: "
|
|
24073
|
+
auth: "protected"
|
|
24074
24074
|
});
|
|
24075
24075
|
object({
|
|
24076
24076
|
/** Lifecycle state of the cover. */
|
|
@@ -24091,25 +24091,25 @@ object({
|
|
|
24091
24091
|
});
|
|
24092
24092
|
DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24093
24093
|
kind: "mutation",
|
|
24094
|
-
auth: "
|
|
24094
|
+
auth: "protected"
|
|
24095
24095
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24096
24096
|
kind: "mutation",
|
|
24097
|
-
auth: "
|
|
24097
|
+
auth: "protected"
|
|
24098
24098
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
24099
24099
|
kind: "mutation",
|
|
24100
|
-
auth: "
|
|
24100
|
+
auth: "protected"
|
|
24101
24101
|
}), method(object({
|
|
24102
24102
|
deviceId: number().int().nonnegative(),
|
|
24103
24103
|
position: number().min(0).max(100)
|
|
24104
24104
|
}), _void(), {
|
|
24105
24105
|
kind: "mutation",
|
|
24106
|
-
auth: "
|
|
24106
|
+
auth: "protected"
|
|
24107
24107
|
}), method(object({
|
|
24108
24108
|
deviceId: number().int().nonnegative(),
|
|
24109
24109
|
tiltPosition: number().min(0).max(100)
|
|
24110
24110
|
}), _void(), {
|
|
24111
24111
|
kind: "mutation",
|
|
24112
|
-
auth: "
|
|
24112
|
+
auth: "protected"
|
|
24113
24113
|
});
|
|
24114
24114
|
/**
|
|
24115
24115
|
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
@@ -24314,6 +24314,59 @@ var IdentitySampleInfoSchema = object({
|
|
|
24314
24314
|
deviceId: number().int().optional(),
|
|
24315
24315
|
base64: string().optional()
|
|
24316
24316
|
});
|
|
24317
|
+
/**
|
|
24318
|
+
* One enrolled sample, judged against the gallery it lives in.
|
|
24319
|
+
*
|
|
24320
|
+
* The gallery is the one input to recognition nobody re-reads: a sample
|
|
24321
|
+
* enrolled from the wrong face keeps voting forever, and because the matches it
|
|
24322
|
+
* pulls then look confident, nobody goes back. The 2026-09-08 audit found
|
|
24323
|
+
* exactly one such pair on this cluster — a sample scoring 0.61 against three
|
|
24324
|
+
* samples of ANOTHER person, enrolled from the same camera in the same minute,
|
|
24325
|
+
* where every other cross-identity pair sits under 0.50.
|
|
24326
|
+
*/
|
|
24327
|
+
var IdentitySampleAuditRowSchema = object({
|
|
24328
|
+
sampleId: string(),
|
|
24329
|
+
enrolledAt: number().int(),
|
|
24330
|
+
deviceId: number().int().optional(),
|
|
24331
|
+
source: _enum(["detected", "photo"]),
|
|
24332
|
+
/** The enrolled crop's media key, so the panel can show the evidence. */
|
|
24333
|
+
mediaKey: string().optional(),
|
|
24334
|
+
/**
|
|
24335
|
+
* False = the sample is stamped with a DIFFERENT face model, and a cosine
|
|
24336
|
+
* across feature spaces is a well-formed float with no meaning. Every number
|
|
24337
|
+
* below then says nothing — it must read as "cannot say", never as an
|
|
24338
|
+
* accusation and never as a clean bill: this list ends in a Remove button.
|
|
24339
|
+
*/
|
|
24340
|
+
comparable: boolean(),
|
|
24341
|
+
/** Mean cosine against this person's other samples. Null when there are none
|
|
24342
|
+
* to compare with — never 0, which would read as "opposite". */
|
|
24343
|
+
selfMean: number().nullable(),
|
|
24344
|
+
/** The other person this sample looks most like, when it looks like one.
|
|
24345
|
+
* This is the half that convicts: not looking like yourself can be a hard
|
|
24346
|
+
* angle; looking like someone the gallery can NAME is a mis-enrolment. */
|
|
24347
|
+
bestForeign: object({
|
|
24348
|
+
identityId: string(),
|
|
24349
|
+
name: string(),
|
|
24350
|
+
score: number()
|
|
24351
|
+
}).optional(),
|
|
24352
|
+
/** 0 = nothing to say. Higher = look at this one sooner. */
|
|
24353
|
+
suspicion: number()
|
|
24354
|
+
});
|
|
24355
|
+
var IdentitySampleAuditSchema = object({
|
|
24356
|
+
identityId: string(),
|
|
24357
|
+
name: string(),
|
|
24358
|
+
/** The cluster face model every comparison was made in. */
|
|
24359
|
+
modelId: string(),
|
|
24360
|
+
totalSamples: number().int(),
|
|
24361
|
+
comparableSamples: number().int(),
|
|
24362
|
+
flagged: number().int(),
|
|
24363
|
+
/** The bar `flagged` counts against, so the panel states the RULE and not
|
|
24364
|
+
* only its current result. */
|
|
24365
|
+
flagThreshold: number(),
|
|
24366
|
+
/** Worst first. A row with nothing to say still appears, at the bottom: the
|
|
24367
|
+
* operator asked to see the gallery, not only its accusations. */
|
|
24368
|
+
rows: array(IdentitySampleAuditRowSchema).readonly()
|
|
24369
|
+
});
|
|
24317
24370
|
var FaceInfoSchema = object({
|
|
24318
24371
|
faceId: string(),
|
|
24319
24372
|
deviceId: number().int(),
|
|
@@ -24465,7 +24518,7 @@ includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly
|
|
|
24465
24518
|
}), method(object({ id: string() }), _void(), {
|
|
24466
24519
|
kind: "mutation",
|
|
24467
24520
|
auth: "admin"
|
|
24468
|
-
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({
|
|
24521
|
+
}), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({ identityId: string().min(1) }), IdentitySampleAuditSchema, { auth: "admin" }), method(object({
|
|
24469
24522
|
identityId: string(),
|
|
24470
24523
|
sampleId: string()
|
|
24471
24524
|
}), _void(), {
|
|
@@ -24651,25 +24704,25 @@ DeviceType.Fan, method(object({
|
|
|
24651
24704
|
percentage: number().min(0).max(100)
|
|
24652
24705
|
}), _void(), {
|
|
24653
24706
|
kind: "mutation",
|
|
24654
|
-
auth: "
|
|
24707
|
+
auth: "protected"
|
|
24655
24708
|
}), method(object({
|
|
24656
24709
|
deviceId: number().int().nonnegative(),
|
|
24657
24710
|
preset: string().min(1)
|
|
24658
24711
|
}), _void(), {
|
|
24659
24712
|
kind: "mutation",
|
|
24660
|
-
auth: "
|
|
24713
|
+
auth: "protected"
|
|
24661
24714
|
}), method(object({
|
|
24662
24715
|
deviceId: number().int().nonnegative(),
|
|
24663
24716
|
direction: FanDirectionSchema
|
|
24664
24717
|
}), _void(), {
|
|
24665
24718
|
kind: "mutation",
|
|
24666
|
-
auth: "
|
|
24719
|
+
auth: "protected"
|
|
24667
24720
|
}), method(object({
|
|
24668
24721
|
deviceId: number().int().nonnegative(),
|
|
24669
24722
|
oscillating: boolean()
|
|
24670
24723
|
}), _void(), {
|
|
24671
24724
|
kind: "mutation",
|
|
24672
|
-
auth: "
|
|
24725
|
+
auth: "protected"
|
|
24673
24726
|
});
|
|
24674
24727
|
/**
|
|
24675
24728
|
* Per-device feature/identity probe slice. Holds the runtime-resolved
|
|
@@ -24772,19 +24825,19 @@ DeviceType.Humidifier, method(object({
|
|
|
24772
24825
|
on: boolean()
|
|
24773
24826
|
}), _void(), {
|
|
24774
24827
|
kind: "mutation",
|
|
24775
|
-
auth: "
|
|
24828
|
+
auth: "protected"
|
|
24776
24829
|
}), method(object({
|
|
24777
24830
|
deviceId: number().int().nonnegative(),
|
|
24778
24831
|
humidity: number().min(0).max(100)
|
|
24779
24832
|
}), _void(), {
|
|
24780
24833
|
kind: "mutation",
|
|
24781
|
-
auth: "
|
|
24834
|
+
auth: "protected"
|
|
24782
24835
|
}), method(object({
|
|
24783
24836
|
deviceId: number().int().nonnegative(),
|
|
24784
24837
|
mode: string().min(1)
|
|
24785
24838
|
}), _void(), {
|
|
24786
24839
|
kind: "mutation",
|
|
24787
|
-
auth: "
|
|
24840
|
+
auth: "protected"
|
|
24788
24841
|
});
|
|
24789
24842
|
object({
|
|
24790
24843
|
/** Current relative humidity, 0..100. */
|
|
@@ -25246,13 +25299,13 @@ object({
|
|
|
25246
25299
|
});
|
|
25247
25300
|
DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25248
25301
|
kind: "mutation",
|
|
25249
|
-
auth: "
|
|
25302
|
+
auth: "protected"
|
|
25250
25303
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25251
25304
|
kind: "mutation",
|
|
25252
|
-
auth: "
|
|
25305
|
+
auth: "protected"
|
|
25253
25306
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25254
25307
|
kind: "mutation",
|
|
25255
|
-
auth: "
|
|
25308
|
+
auth: "protected"
|
|
25256
25309
|
});
|
|
25257
25310
|
/**
|
|
25258
25311
|
* local-network — hub-only singleton.
|
|
@@ -25512,16 +25565,16 @@ DeviceType.Lock, method(object({
|
|
|
25512
25565
|
code: string().min(1).optional()
|
|
25513
25566
|
}), _void(), {
|
|
25514
25567
|
kind: "mutation",
|
|
25515
|
-
auth: "
|
|
25568
|
+
auth: "protected"
|
|
25516
25569
|
}), method(object({
|
|
25517
25570
|
deviceId: number().int().nonnegative(),
|
|
25518
25571
|
code: string().min(1).optional()
|
|
25519
25572
|
}), _void(), {
|
|
25520
25573
|
kind: "mutation",
|
|
25521
|
-
auth: "
|
|
25574
|
+
auth: "protected"
|
|
25522
25575
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25523
25576
|
kind: "mutation",
|
|
25524
|
-
auth: "
|
|
25577
|
+
auth: "protected"
|
|
25525
25578
|
});
|
|
25526
25579
|
/**
|
|
25527
25580
|
* Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
|
|
@@ -25595,55 +25648,55 @@ object({
|
|
|
25595
25648
|
});
|
|
25596
25649
|
DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25597
25650
|
kind: "mutation",
|
|
25598
|
-
auth: "
|
|
25651
|
+
auth: "protected"
|
|
25599
25652
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25600
25653
|
kind: "mutation",
|
|
25601
|
-
auth: "
|
|
25654
|
+
auth: "protected"
|
|
25602
25655
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25603
25656
|
kind: "mutation",
|
|
25604
|
-
auth: "
|
|
25657
|
+
auth: "protected"
|
|
25605
25658
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25606
25659
|
kind: "mutation",
|
|
25607
|
-
auth: "
|
|
25660
|
+
auth: "protected"
|
|
25608
25661
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
25609
25662
|
kind: "mutation",
|
|
25610
|
-
auth: "
|
|
25663
|
+
auth: "protected"
|
|
25611
25664
|
}), method(object({
|
|
25612
25665
|
deviceId: number().int().nonnegative(),
|
|
25613
25666
|
positionMs: number().int().nonnegative()
|
|
25614
25667
|
}), _void(), {
|
|
25615
25668
|
kind: "mutation",
|
|
25616
|
-
auth: "
|
|
25669
|
+
auth: "protected"
|
|
25617
25670
|
}), method(object({
|
|
25618
25671
|
deviceId: number().int().nonnegative(),
|
|
25619
25672
|
volumeLevel: number().min(0).max(100)
|
|
25620
25673
|
}), _void(), {
|
|
25621
25674
|
kind: "mutation",
|
|
25622
|
-
auth: "
|
|
25675
|
+
auth: "protected"
|
|
25623
25676
|
}), method(object({
|
|
25624
25677
|
deviceId: number().int().nonnegative(),
|
|
25625
25678
|
muted: boolean()
|
|
25626
25679
|
}), _void(), {
|
|
25627
25680
|
kind: "mutation",
|
|
25628
|
-
auth: "
|
|
25681
|
+
auth: "protected"
|
|
25629
25682
|
}), method(object({
|
|
25630
25683
|
deviceId: number().int().nonnegative(),
|
|
25631
25684
|
shuffle: boolean()
|
|
25632
25685
|
}), _void(), {
|
|
25633
25686
|
kind: "mutation",
|
|
25634
|
-
auth: "
|
|
25687
|
+
auth: "protected"
|
|
25635
25688
|
}), method(object({
|
|
25636
25689
|
deviceId: number().int().nonnegative(),
|
|
25637
25690
|
repeat: MediaPlayerRepeatSchema
|
|
25638
25691
|
}), _void(), {
|
|
25639
25692
|
kind: "mutation",
|
|
25640
|
-
auth: "
|
|
25693
|
+
auth: "protected"
|
|
25641
25694
|
}), method(object({
|
|
25642
25695
|
deviceId: number().int().nonnegative(),
|
|
25643
25696
|
source: string().min(1)
|
|
25644
25697
|
}), _void(), {
|
|
25645
25698
|
kind: "mutation",
|
|
25646
|
-
auth: "
|
|
25699
|
+
auth: "protected"
|
|
25647
25700
|
}), method(object({
|
|
25648
25701
|
deviceId: number().int().nonnegative(),
|
|
25649
25702
|
/** Media identifier / URL. */
|
|
@@ -25653,7 +25706,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
25653
25706
|
mediaType: string().min(1)
|
|
25654
25707
|
}), _void(), {
|
|
25655
25708
|
kind: "mutation",
|
|
25656
|
-
auth: "
|
|
25709
|
+
auth: "protected"
|
|
25657
25710
|
});
|
|
25658
25711
|
/**
|
|
25659
25712
|
* mesh-network — collection cap for mesh-VPN providers.
|
|
@@ -26819,49 +26872,49 @@ DeviceType.PetFeeder, method(object({
|
|
|
26819
26872
|
hopper2: gramsPortion.optional()
|
|
26820
26873
|
}), _void(), {
|
|
26821
26874
|
kind: "mutation",
|
|
26822
|
-
auth: "
|
|
26875
|
+
auth: "protected"
|
|
26823
26876
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26824
26877
|
kind: "mutation",
|
|
26825
|
-
auth: "
|
|
26878
|
+
auth: "protected"
|
|
26826
26879
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26827
26880
|
kind: "mutation",
|
|
26828
|
-
auth: "
|
|
26881
|
+
auth: "protected"
|
|
26829
26882
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26830
26883
|
kind: "mutation",
|
|
26831
|
-
auth: "
|
|
26884
|
+
auth: "protected"
|
|
26832
26885
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
26833
26886
|
kind: "mutation",
|
|
26834
|
-
auth: "
|
|
26887
|
+
auth: "protected"
|
|
26835
26888
|
}), method(object({
|
|
26836
26889
|
deviceId: number().int().nonnegative(),
|
|
26837
26890
|
soundId: number().int().nonnegative()
|
|
26838
26891
|
}), _void(), {
|
|
26839
26892
|
kind: "mutation",
|
|
26840
|
-
auth: "
|
|
26893
|
+
auth: "protected"
|
|
26841
26894
|
}), method(object({
|
|
26842
26895
|
deviceId: number().int().nonnegative(),
|
|
26843
26896
|
on: boolean()
|
|
26844
26897
|
}), _void(), {
|
|
26845
26898
|
kind: "mutation",
|
|
26846
|
-
auth: "
|
|
26899
|
+
auth: "protected"
|
|
26847
26900
|
}), method(object({
|
|
26848
26901
|
deviceId: number().int().nonnegative(),
|
|
26849
26902
|
on: boolean()
|
|
26850
26903
|
}), _void(), {
|
|
26851
26904
|
kind: "mutation",
|
|
26852
|
-
auth: "
|
|
26905
|
+
auth: "protected"
|
|
26853
26906
|
}), method(object({
|
|
26854
26907
|
deviceId: number().int().nonnegative(),
|
|
26855
26908
|
on: boolean()
|
|
26856
26909
|
}), _void(), {
|
|
26857
26910
|
kind: "mutation",
|
|
26858
|
-
auth: "
|
|
26911
|
+
auth: "protected"
|
|
26859
26912
|
}), method(object({
|
|
26860
26913
|
deviceId: number().int().nonnegative(),
|
|
26861
26914
|
level: number().int().nonnegative()
|
|
26862
26915
|
}), _void(), {
|
|
26863
26916
|
kind: "mutation",
|
|
26864
|
-
auth: "
|
|
26917
|
+
auth: "protected"
|
|
26865
26918
|
});
|
|
26866
26919
|
var VehicleSchema = object({
|
|
26867
26920
|
id: string(),
|
|
@@ -28648,7 +28701,7 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
|
|
|
28648
28701
|
on: boolean()
|
|
28649
28702
|
}), _void(), {
|
|
28650
28703
|
kind: "mutation",
|
|
28651
|
-
auth: "
|
|
28704
|
+
auth: "protected"
|
|
28652
28705
|
}), object({
|
|
28653
28706
|
deviceId: number(),
|
|
28654
28707
|
on: boolean(),
|
|
@@ -29505,25 +29558,25 @@ object({
|
|
|
29505
29558
|
});
|
|
29506
29559
|
DeviceType.Vacuum, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29507
29560
|
kind: "mutation",
|
|
29508
|
-
auth: "
|
|
29561
|
+
auth: "protected"
|
|
29509
29562
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29510
29563
|
kind: "mutation",
|
|
29511
|
-
auth: "
|
|
29564
|
+
auth: "protected"
|
|
29512
29565
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29513
29566
|
kind: "mutation",
|
|
29514
|
-
auth: "
|
|
29567
|
+
auth: "protected"
|
|
29515
29568
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29516
29569
|
kind: "mutation",
|
|
29517
|
-
auth: "
|
|
29570
|
+
auth: "protected"
|
|
29518
29571
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29519
29572
|
kind: "mutation",
|
|
29520
|
-
auth: "
|
|
29573
|
+
auth: "protected"
|
|
29521
29574
|
}), method(object({
|
|
29522
29575
|
deviceId: number().int().nonnegative(),
|
|
29523
29576
|
speed: string().min(1)
|
|
29524
29577
|
}), _void(), {
|
|
29525
29578
|
kind: "mutation",
|
|
29526
|
-
auth: "
|
|
29579
|
+
auth: "protected"
|
|
29527
29580
|
});
|
|
29528
29581
|
object({
|
|
29529
29582
|
/** Lifecycle state of the valve. */
|
|
@@ -29542,19 +29595,19 @@ object({
|
|
|
29542
29595
|
});
|
|
29543
29596
|
DeviceType.Valve, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29544
29597
|
kind: "mutation",
|
|
29545
|
-
auth: "
|
|
29598
|
+
auth: "protected"
|
|
29546
29599
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29547
29600
|
kind: "mutation",
|
|
29548
|
-
auth: "
|
|
29601
|
+
auth: "protected"
|
|
29549
29602
|
}), method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
29550
29603
|
kind: "mutation",
|
|
29551
|
-
auth: "
|
|
29604
|
+
auth: "protected"
|
|
29552
29605
|
}), method(object({
|
|
29553
29606
|
deviceId: number().int().nonnegative(),
|
|
29554
29607
|
position: number().min(0).max(100)
|
|
29555
29608
|
}), _void(), {
|
|
29556
29609
|
kind: "mutation",
|
|
29557
|
-
auth: "
|
|
29610
|
+
auth: "protected"
|
|
29558
29611
|
});
|
|
29559
29612
|
object({
|
|
29560
29613
|
detected: boolean(),
|
|
@@ -29588,19 +29641,19 @@ DeviceType.WaterHeater, method(object({
|
|
|
29588
29641
|
temp: number().finite()
|
|
29589
29642
|
}), _void(), {
|
|
29590
29643
|
kind: "mutation",
|
|
29591
|
-
auth: "
|
|
29644
|
+
auth: "protected"
|
|
29592
29645
|
}), method(object({
|
|
29593
29646
|
deviceId: number().int().nonnegative(),
|
|
29594
29647
|
mode: string().min(1)
|
|
29595
29648
|
}), _void(), {
|
|
29596
29649
|
kind: "mutation",
|
|
29597
|
-
auth: "
|
|
29650
|
+
auth: "protected"
|
|
29598
29651
|
}), method(object({
|
|
29599
29652
|
deviceId: number().int().nonnegative(),
|
|
29600
29653
|
on: boolean()
|
|
29601
29654
|
}), _void(), {
|
|
29602
29655
|
kind: "mutation",
|
|
29603
|
-
auth: "
|
|
29656
|
+
auth: "protected"
|
|
29604
29657
|
});
|
|
29605
29658
|
object({
|
|
29606
29659
|
/** Verbatim HA condition state (`sunny`, `cloudy`, `rainy`, …). Null
|
|
@@ -31692,6 +31745,12 @@ Object.freeze({
|
|
|
31692
31745
|
addonId: null,
|
|
31693
31746
|
access: "create"
|
|
31694
31747
|
},
|
|
31748
|
+
"faceGallery.auditIdentitySamples": {
|
|
31749
|
+
capName: "face-gallery",
|
|
31750
|
+
capScope: "system",
|
|
31751
|
+
addonId: null,
|
|
31752
|
+
access: "view"
|
|
31753
|
+
},
|
|
31695
31754
|
"faceGallery.createIdentity": {
|
|
31696
31755
|
capName: "face-gallery",
|
|
31697
31756
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-notifiers",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.90",
|
|
4
4
|
"description": "System notifiers addon for CamStack — a `notification-output` collection provider hosting per-kind notifier adapters (ntfy, pushover, gotify, telegram, discord, webhook, zentik).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|