@camstack/addon-decoder-nodeav 1.2.84 → 1.2.86

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.
Files changed (3) hide show
  1. package/dist/index.js +129 -70
  2. package/dist/index.mjs +129 -70
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -15941,16 +15941,16 @@ DeviceType.AlarmPanel, method(object({
15941
15941
  code: string().min(1).optional()
15942
15942
  }), _void(), {
15943
15943
  kind: "mutation",
15944
- auth: "admin"
15944
+ auth: "protected"
15945
15945
  }), method(object({
15946
15946
  deviceId: number().int().nonnegative(),
15947
15947
  code: string().min(1).optional()
15948
15948
  }), _void(), {
15949
15949
  kind: "mutation",
15950
- auth: "admin"
15950
+ auth: "protected"
15951
15951
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
15952
15952
  kind: "mutation",
15953
- auth: "admin"
15953
+ auth: "protected"
15954
15954
  });
15955
15955
  /**
15956
15956
  * Shared geometry vocabulary for on-frame shape caps — privacy-mask,
@@ -23605,7 +23605,7 @@ DeviceType.Light, method(object({
23605
23605
  percentage: number().min(0).max(100)
23606
23606
  }), _void(), {
23607
23607
  kind: "mutation",
23608
- auth: "admin"
23608
+ auth: "protected"
23609
23609
  }), object({
23610
23610
  deviceId: number(),
23611
23611
  percentage: number().min(0).max(100),
@@ -23613,7 +23613,7 @@ DeviceType.Light, method(object({
23613
23613
  });
23614
23614
  DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
23615
23615
  kind: "mutation",
23616
- auth: "admin"
23616
+ auth: "protected"
23617
23617
  });
23618
23618
  /**
23619
23619
  * camera-credentials — device-scoped cap exposing the camera's network
@@ -23772,50 +23772,50 @@ DeviceType.Thermostat, DeviceType.Climate, method(object({
23772
23772
  mode: HvacModeSchema
23773
23773
  }), _void(), {
23774
23774
  kind: "mutation",
23775
- auth: "admin"
23775
+ auth: "protected"
23776
23776
  }), method(object({
23777
23777
  deviceId: number().int().nonnegative(),
23778
23778
  fanMode: string().min(1)
23779
23779
  }), _void(), {
23780
23780
  kind: "mutation",
23781
- auth: "admin"
23781
+ auth: "protected"
23782
23782
  }), method(object({
23783
23783
  deviceId: number().int().nonnegative(),
23784
23784
  preset: string().min(1)
23785
23785
  }), _void(), {
23786
23786
  kind: "mutation",
23787
- auth: "admin"
23787
+ auth: "protected"
23788
23788
  }), method(object({
23789
23789
  deviceId: number().int().nonnegative(),
23790
23790
  target: number()
23791
23791
  }), _void(), {
23792
23792
  kind: "mutation",
23793
- auth: "admin"
23793
+ auth: "protected"
23794
23794
  }), method(object({
23795
23795
  deviceId: number().int().nonnegative(),
23796
23796
  targetLow: number(),
23797
23797
  targetHigh: number()
23798
23798
  }), _void(), {
23799
23799
  kind: "mutation",
23800
- auth: "admin"
23800
+ auth: "protected"
23801
23801
  }), method(object({
23802
23802
  deviceId: number().int().nonnegative(),
23803
23803
  targetHumidity: number().min(0).max(100)
23804
23804
  }), _void(), {
23805
23805
  kind: "mutation",
23806
- auth: "admin"
23806
+ auth: "protected"
23807
23807
  }), method(object({
23808
23808
  deviceId: number().int().nonnegative(),
23809
23809
  on: boolean()
23810
23810
  }), _void(), {
23811
23811
  kind: "mutation",
23812
- auth: "admin"
23812
+ auth: "protected"
23813
23813
  }), method(object({
23814
23814
  deviceId: number().int().nonnegative(),
23815
23815
  on: boolean()
23816
23816
  }), _void(), {
23817
23817
  kind: "mutation",
23818
- auth: "admin"
23818
+ auth: "protected"
23819
23819
  });
23820
23820
  /**
23821
23821
  * Color-light cap. Coexists with `switch` (on/off) and `brightness`
@@ -23890,7 +23890,7 @@ DeviceType.Light, method(object({
23890
23890
  color: ColorInputSchema
23891
23891
  }), _void(), {
23892
23892
  kind: "mutation",
23893
- auth: "admin"
23893
+ auth: "protected"
23894
23894
  }), object({
23895
23895
  deviceId: number(),
23896
23896
  mode: _enum([
@@ -24039,7 +24039,7 @@ DeviceType.Control, method(object({
24039
24039
  control: ControlSetValueInputSchema
24040
24040
  }), _void(), {
24041
24041
  kind: "mutation",
24042
- auth: "admin"
24042
+ auth: "protected"
24043
24043
  });
24044
24044
  object({
24045
24045
  /** Lifecycle state of the cover. */
@@ -24060,25 +24060,25 @@ object({
24060
24060
  });
24061
24061
  DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _void(), {
24062
24062
  kind: "mutation",
24063
- auth: "admin"
24063
+ auth: "protected"
24064
24064
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
24065
24065
  kind: "mutation",
24066
- auth: "admin"
24066
+ auth: "protected"
24067
24067
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
24068
24068
  kind: "mutation",
24069
- auth: "admin"
24069
+ auth: "protected"
24070
24070
  }), method(object({
24071
24071
  deviceId: number().int().nonnegative(),
24072
24072
  position: number().min(0).max(100)
24073
24073
  }), _void(), {
24074
24074
  kind: "mutation",
24075
- auth: "admin"
24075
+ auth: "protected"
24076
24076
  }), method(object({
24077
24077
  deviceId: number().int().nonnegative(),
24078
24078
  tiltPosition: number().min(0).max(100)
24079
24079
  }), _void(), {
24080
24080
  kind: "mutation",
24081
- auth: "admin"
24081
+ auth: "protected"
24082
24082
  });
24083
24083
  /**
24084
24084
  * Vendor-neutral day/night (IR-cut) control — the per-camera config cap
@@ -24283,6 +24283,59 @@ var IdentitySampleInfoSchema = object({
24283
24283
  deviceId: number().int().optional(),
24284
24284
  base64: string().optional()
24285
24285
  });
24286
+ /**
24287
+ * One enrolled sample, judged against the gallery it lives in.
24288
+ *
24289
+ * The gallery is the one input to recognition nobody re-reads: a sample
24290
+ * enrolled from the wrong face keeps voting forever, and because the matches it
24291
+ * pulls then look confident, nobody goes back. The 2026-09-08 audit found
24292
+ * exactly one such pair on this cluster — a sample scoring 0.61 against three
24293
+ * samples of ANOTHER person, enrolled from the same camera in the same minute,
24294
+ * where every other cross-identity pair sits under 0.50.
24295
+ */
24296
+ var IdentitySampleAuditRowSchema = object({
24297
+ sampleId: string(),
24298
+ enrolledAt: number().int(),
24299
+ deviceId: number().int().optional(),
24300
+ source: _enum(["detected", "photo"]),
24301
+ /** The enrolled crop's media key, so the panel can show the evidence. */
24302
+ mediaKey: string().optional(),
24303
+ /**
24304
+ * False = the sample is stamped with a DIFFERENT face model, and a cosine
24305
+ * across feature spaces is a well-formed float with no meaning. Every number
24306
+ * below then says nothing — it must read as "cannot say", never as an
24307
+ * accusation and never as a clean bill: this list ends in a Remove button.
24308
+ */
24309
+ comparable: boolean(),
24310
+ /** Mean cosine against this person's other samples. Null when there are none
24311
+ * to compare with — never 0, which would read as "opposite". */
24312
+ selfMean: number().nullable(),
24313
+ /** The other person this sample looks most like, when it looks like one.
24314
+ * This is the half that convicts: not looking like yourself can be a hard
24315
+ * angle; looking like someone the gallery can NAME is a mis-enrolment. */
24316
+ bestForeign: object({
24317
+ identityId: string(),
24318
+ name: string(),
24319
+ score: number()
24320
+ }).optional(),
24321
+ /** 0 = nothing to say. Higher = look at this one sooner. */
24322
+ suspicion: number()
24323
+ });
24324
+ var IdentitySampleAuditSchema = object({
24325
+ identityId: string(),
24326
+ name: string(),
24327
+ /** The cluster face model every comparison was made in. */
24328
+ modelId: string(),
24329
+ totalSamples: number().int(),
24330
+ comparableSamples: number().int(),
24331
+ flagged: number().int(),
24332
+ /** The bar `flagged` counts against, so the panel states the RULE and not
24333
+ * only its current result. */
24334
+ flagThreshold: number(),
24335
+ /** Worst first. A row with nothing to say still appears, at the bottom: the
24336
+ * operator asked to see the gallery, not only its accusations. */
24337
+ rows: array(IdentitySampleAuditRowSchema).readonly()
24338
+ });
24286
24339
  var FaceInfoSchema = object({
24287
24340
  faceId: string(),
24288
24341
  deviceId: number().int(),
@@ -24434,7 +24487,7 @@ includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly
24434
24487
  }), method(object({ id: string() }), _void(), {
24435
24488
  kind: "mutation",
24436
24489
  auth: "admin"
24437
- }), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({
24490
+ }), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({ identityId: string().min(1) }), IdentitySampleAuditSchema, { auth: "admin" }), method(object({
24438
24491
  identityId: string(),
24439
24492
  sampleId: string()
24440
24493
  }), _void(), {
@@ -24620,25 +24673,25 @@ DeviceType.Fan, method(object({
24620
24673
  percentage: number().min(0).max(100)
24621
24674
  }), _void(), {
24622
24675
  kind: "mutation",
24623
- auth: "admin"
24676
+ auth: "protected"
24624
24677
  }), method(object({
24625
24678
  deviceId: number().int().nonnegative(),
24626
24679
  preset: string().min(1)
24627
24680
  }), _void(), {
24628
24681
  kind: "mutation",
24629
- auth: "admin"
24682
+ auth: "protected"
24630
24683
  }), method(object({
24631
24684
  deviceId: number().int().nonnegative(),
24632
24685
  direction: FanDirectionSchema
24633
24686
  }), _void(), {
24634
24687
  kind: "mutation",
24635
- auth: "admin"
24688
+ auth: "protected"
24636
24689
  }), method(object({
24637
24690
  deviceId: number().int().nonnegative(),
24638
24691
  oscillating: boolean()
24639
24692
  }), _void(), {
24640
24693
  kind: "mutation",
24641
- auth: "admin"
24694
+ auth: "protected"
24642
24695
  });
24643
24696
  /**
24644
24697
  * Per-device feature/identity probe slice. Holds the runtime-resolved
@@ -24741,19 +24794,19 @@ DeviceType.Humidifier, method(object({
24741
24794
  on: boolean()
24742
24795
  }), _void(), {
24743
24796
  kind: "mutation",
24744
- auth: "admin"
24797
+ auth: "protected"
24745
24798
  }), method(object({
24746
24799
  deviceId: number().int().nonnegative(),
24747
24800
  humidity: number().min(0).max(100)
24748
24801
  }), _void(), {
24749
24802
  kind: "mutation",
24750
- auth: "admin"
24803
+ auth: "protected"
24751
24804
  }), method(object({
24752
24805
  deviceId: number().int().nonnegative(),
24753
24806
  mode: string().min(1)
24754
24807
  }), _void(), {
24755
24808
  kind: "mutation",
24756
- auth: "admin"
24809
+ auth: "protected"
24757
24810
  });
24758
24811
  object({
24759
24812
  /** Current relative humidity, 0..100. */
@@ -25215,13 +25268,13 @@ object({
25215
25268
  });
25216
25269
  DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }), _void(), {
25217
25270
  kind: "mutation",
25218
- auth: "admin"
25271
+ auth: "protected"
25219
25272
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25220
25273
  kind: "mutation",
25221
- auth: "admin"
25274
+ auth: "protected"
25222
25275
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25223
25276
  kind: "mutation",
25224
- auth: "admin"
25277
+ auth: "protected"
25225
25278
  });
25226
25279
  /**
25227
25280
  * local-network — hub-only singleton.
@@ -25481,16 +25534,16 @@ DeviceType.Lock, method(object({
25481
25534
  code: string().min(1).optional()
25482
25535
  }), _void(), {
25483
25536
  kind: "mutation",
25484
- auth: "admin"
25537
+ auth: "protected"
25485
25538
  }), method(object({
25486
25539
  deviceId: number().int().nonnegative(),
25487
25540
  code: string().min(1).optional()
25488
25541
  }), _void(), {
25489
25542
  kind: "mutation",
25490
- auth: "admin"
25543
+ auth: "protected"
25491
25544
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25492
25545
  kind: "mutation",
25493
- auth: "admin"
25546
+ auth: "protected"
25494
25547
  });
25495
25548
  /**
25496
25549
  * Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
@@ -25564,55 +25617,55 @@ object({
25564
25617
  });
25565
25618
  DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }), _void(), {
25566
25619
  kind: "mutation",
25567
- auth: "admin"
25620
+ auth: "protected"
25568
25621
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25569
25622
  kind: "mutation",
25570
- auth: "admin"
25623
+ auth: "protected"
25571
25624
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25572
25625
  kind: "mutation",
25573
- auth: "admin"
25626
+ auth: "protected"
25574
25627
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25575
25628
  kind: "mutation",
25576
- auth: "admin"
25629
+ auth: "protected"
25577
25630
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25578
25631
  kind: "mutation",
25579
- auth: "admin"
25632
+ auth: "protected"
25580
25633
  }), method(object({
25581
25634
  deviceId: number().int().nonnegative(),
25582
25635
  positionMs: number().int().nonnegative()
25583
25636
  }), _void(), {
25584
25637
  kind: "mutation",
25585
- auth: "admin"
25638
+ auth: "protected"
25586
25639
  }), method(object({
25587
25640
  deviceId: number().int().nonnegative(),
25588
25641
  volumeLevel: number().min(0).max(100)
25589
25642
  }), _void(), {
25590
25643
  kind: "mutation",
25591
- auth: "admin"
25644
+ auth: "protected"
25592
25645
  }), method(object({
25593
25646
  deviceId: number().int().nonnegative(),
25594
25647
  muted: boolean()
25595
25648
  }), _void(), {
25596
25649
  kind: "mutation",
25597
- auth: "admin"
25650
+ auth: "protected"
25598
25651
  }), method(object({
25599
25652
  deviceId: number().int().nonnegative(),
25600
25653
  shuffle: boolean()
25601
25654
  }), _void(), {
25602
25655
  kind: "mutation",
25603
- auth: "admin"
25656
+ auth: "protected"
25604
25657
  }), method(object({
25605
25658
  deviceId: number().int().nonnegative(),
25606
25659
  repeat: MediaPlayerRepeatSchema
25607
25660
  }), _void(), {
25608
25661
  kind: "mutation",
25609
- auth: "admin"
25662
+ auth: "protected"
25610
25663
  }), method(object({
25611
25664
  deviceId: number().int().nonnegative(),
25612
25665
  source: string().min(1)
25613
25666
  }), _void(), {
25614
25667
  kind: "mutation",
25615
- auth: "admin"
25668
+ auth: "protected"
25616
25669
  }), method(object({
25617
25670
  deviceId: number().int().nonnegative(),
25618
25671
  /** Media identifier / URL. */
@@ -25622,7 +25675,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
25622
25675
  mediaType: string().min(1)
25623
25676
  }), _void(), {
25624
25677
  kind: "mutation",
25625
- auth: "admin"
25678
+ auth: "protected"
25626
25679
  });
25627
25680
  /**
25628
25681
  * mesh-network — collection cap for mesh-VPN providers.
@@ -26788,49 +26841,49 @@ DeviceType.PetFeeder, method(object({
26788
26841
  hopper2: gramsPortion.optional()
26789
26842
  }), _void(), {
26790
26843
  kind: "mutation",
26791
- auth: "admin"
26844
+ auth: "protected"
26792
26845
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26793
26846
  kind: "mutation",
26794
- auth: "admin"
26847
+ auth: "protected"
26795
26848
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26796
26849
  kind: "mutation",
26797
- auth: "admin"
26850
+ auth: "protected"
26798
26851
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26799
26852
  kind: "mutation",
26800
- auth: "admin"
26853
+ auth: "protected"
26801
26854
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26802
26855
  kind: "mutation",
26803
- auth: "admin"
26856
+ auth: "protected"
26804
26857
  }), method(object({
26805
26858
  deviceId: number().int().nonnegative(),
26806
26859
  soundId: number().int().nonnegative()
26807
26860
  }), _void(), {
26808
26861
  kind: "mutation",
26809
- auth: "admin"
26862
+ auth: "protected"
26810
26863
  }), method(object({
26811
26864
  deviceId: number().int().nonnegative(),
26812
26865
  on: boolean()
26813
26866
  }), _void(), {
26814
26867
  kind: "mutation",
26815
- auth: "admin"
26868
+ auth: "protected"
26816
26869
  }), method(object({
26817
26870
  deviceId: number().int().nonnegative(),
26818
26871
  on: boolean()
26819
26872
  }), _void(), {
26820
26873
  kind: "mutation",
26821
- auth: "admin"
26874
+ auth: "protected"
26822
26875
  }), method(object({
26823
26876
  deviceId: number().int().nonnegative(),
26824
26877
  on: boolean()
26825
26878
  }), _void(), {
26826
26879
  kind: "mutation",
26827
- auth: "admin"
26880
+ auth: "protected"
26828
26881
  }), method(object({
26829
26882
  deviceId: number().int().nonnegative(),
26830
26883
  level: number().int().nonnegative()
26831
26884
  }), _void(), {
26832
26885
  kind: "mutation",
26833
- auth: "admin"
26886
+ auth: "protected"
26834
26887
  });
26835
26888
  var VehicleSchema = object({
26836
26889
  id: string(),
@@ -28617,7 +28670,7 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
28617
28670
  on: boolean()
28618
28671
  }), _void(), {
28619
28672
  kind: "mutation",
28620
- auth: "admin"
28673
+ auth: "protected"
28621
28674
  }), object({
28622
28675
  deviceId: number(),
28623
28676
  on: boolean(),
@@ -29474,25 +29527,25 @@ object({
29474
29527
  });
29475
29528
  DeviceType.Vacuum, method(object({ deviceId: number().int().nonnegative() }), _void(), {
29476
29529
  kind: "mutation",
29477
- auth: "admin"
29530
+ auth: "protected"
29478
29531
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29479
29532
  kind: "mutation",
29480
- auth: "admin"
29533
+ auth: "protected"
29481
29534
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29482
29535
  kind: "mutation",
29483
- auth: "admin"
29536
+ auth: "protected"
29484
29537
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29485
29538
  kind: "mutation",
29486
- auth: "admin"
29539
+ auth: "protected"
29487
29540
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29488
29541
  kind: "mutation",
29489
- auth: "admin"
29542
+ auth: "protected"
29490
29543
  }), method(object({
29491
29544
  deviceId: number().int().nonnegative(),
29492
29545
  speed: string().min(1)
29493
29546
  }), _void(), {
29494
29547
  kind: "mutation",
29495
- auth: "admin"
29548
+ auth: "protected"
29496
29549
  });
29497
29550
  object({
29498
29551
  /** Lifecycle state of the valve. */
@@ -29511,19 +29564,19 @@ object({
29511
29564
  });
29512
29565
  DeviceType.Valve, method(object({ deviceId: number().int().nonnegative() }), _void(), {
29513
29566
  kind: "mutation",
29514
- auth: "admin"
29567
+ auth: "protected"
29515
29568
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29516
29569
  kind: "mutation",
29517
- auth: "admin"
29570
+ auth: "protected"
29518
29571
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29519
29572
  kind: "mutation",
29520
- auth: "admin"
29573
+ auth: "protected"
29521
29574
  }), method(object({
29522
29575
  deviceId: number().int().nonnegative(),
29523
29576
  position: number().min(0).max(100)
29524
29577
  }), _void(), {
29525
29578
  kind: "mutation",
29526
- auth: "admin"
29579
+ auth: "protected"
29527
29580
  });
29528
29581
  object({
29529
29582
  detected: boolean(),
@@ -29557,19 +29610,19 @@ DeviceType.WaterHeater, method(object({
29557
29610
  temp: number().finite()
29558
29611
  }), _void(), {
29559
29612
  kind: "mutation",
29560
- auth: "admin"
29613
+ auth: "protected"
29561
29614
  }), method(object({
29562
29615
  deviceId: number().int().nonnegative(),
29563
29616
  mode: string().min(1)
29564
29617
  }), _void(), {
29565
29618
  kind: "mutation",
29566
- auth: "admin"
29619
+ auth: "protected"
29567
29620
  }), method(object({
29568
29621
  deviceId: number().int().nonnegative(),
29569
29622
  on: boolean()
29570
29623
  }), _void(), {
29571
29624
  kind: "mutation",
29572
- auth: "admin"
29625
+ auth: "protected"
29573
29626
  });
29574
29627
  object({
29575
29628
  /** Verbatim HA condition state (`sunny`, `cloudy`, `rainy`, …). Null
@@ -31661,6 +31714,12 @@ Object.freeze({
31661
31714
  addonId: null,
31662
31715
  access: "create"
31663
31716
  },
31717
+ "faceGallery.auditIdentitySamples": {
31718
+ capName: "face-gallery",
31719
+ capScope: "system",
31720
+ addonId: null,
31721
+ access: "view"
31722
+ },
31664
31723
  "faceGallery.createIdentity": {
31665
31724
  capName: "face-gallery",
31666
31725
  capScope: "system",
package/dist/index.mjs CHANGED
@@ -15937,16 +15937,16 @@ DeviceType.AlarmPanel, method(object({
15937
15937
  code: string().min(1).optional()
15938
15938
  }), _void(), {
15939
15939
  kind: "mutation",
15940
- auth: "admin"
15940
+ auth: "protected"
15941
15941
  }), method(object({
15942
15942
  deviceId: number().int().nonnegative(),
15943
15943
  code: string().min(1).optional()
15944
15944
  }), _void(), {
15945
15945
  kind: "mutation",
15946
- auth: "admin"
15946
+ auth: "protected"
15947
15947
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
15948
15948
  kind: "mutation",
15949
- auth: "admin"
15949
+ auth: "protected"
15950
15950
  });
15951
15951
  /**
15952
15952
  * Shared geometry vocabulary for on-frame shape caps — privacy-mask,
@@ -23601,7 +23601,7 @@ DeviceType.Light, method(object({
23601
23601
  percentage: number().min(0).max(100)
23602
23602
  }), _void(), {
23603
23603
  kind: "mutation",
23604
- auth: "admin"
23604
+ auth: "protected"
23605
23605
  }), object({
23606
23606
  deviceId: number(),
23607
23607
  percentage: number().min(0).max(100),
@@ -23609,7 +23609,7 @@ DeviceType.Light, method(object({
23609
23609
  });
23610
23610
  DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
23611
23611
  kind: "mutation",
23612
- auth: "admin"
23612
+ auth: "protected"
23613
23613
  });
23614
23614
  /**
23615
23615
  * camera-credentials — device-scoped cap exposing the camera's network
@@ -23768,50 +23768,50 @@ DeviceType.Thermostat, DeviceType.Climate, method(object({
23768
23768
  mode: HvacModeSchema
23769
23769
  }), _void(), {
23770
23770
  kind: "mutation",
23771
- auth: "admin"
23771
+ auth: "protected"
23772
23772
  }), method(object({
23773
23773
  deviceId: number().int().nonnegative(),
23774
23774
  fanMode: string().min(1)
23775
23775
  }), _void(), {
23776
23776
  kind: "mutation",
23777
- auth: "admin"
23777
+ auth: "protected"
23778
23778
  }), method(object({
23779
23779
  deviceId: number().int().nonnegative(),
23780
23780
  preset: string().min(1)
23781
23781
  }), _void(), {
23782
23782
  kind: "mutation",
23783
- auth: "admin"
23783
+ auth: "protected"
23784
23784
  }), method(object({
23785
23785
  deviceId: number().int().nonnegative(),
23786
23786
  target: number()
23787
23787
  }), _void(), {
23788
23788
  kind: "mutation",
23789
- auth: "admin"
23789
+ auth: "protected"
23790
23790
  }), method(object({
23791
23791
  deviceId: number().int().nonnegative(),
23792
23792
  targetLow: number(),
23793
23793
  targetHigh: number()
23794
23794
  }), _void(), {
23795
23795
  kind: "mutation",
23796
- auth: "admin"
23796
+ auth: "protected"
23797
23797
  }), method(object({
23798
23798
  deviceId: number().int().nonnegative(),
23799
23799
  targetHumidity: number().min(0).max(100)
23800
23800
  }), _void(), {
23801
23801
  kind: "mutation",
23802
- auth: "admin"
23802
+ auth: "protected"
23803
23803
  }), method(object({
23804
23804
  deviceId: number().int().nonnegative(),
23805
23805
  on: boolean()
23806
23806
  }), _void(), {
23807
23807
  kind: "mutation",
23808
- auth: "admin"
23808
+ auth: "protected"
23809
23809
  }), method(object({
23810
23810
  deviceId: number().int().nonnegative(),
23811
23811
  on: boolean()
23812
23812
  }), _void(), {
23813
23813
  kind: "mutation",
23814
- auth: "admin"
23814
+ auth: "protected"
23815
23815
  });
23816
23816
  /**
23817
23817
  * Color-light cap. Coexists with `switch` (on/off) and `brightness`
@@ -23886,7 +23886,7 @@ DeviceType.Light, method(object({
23886
23886
  color: ColorInputSchema
23887
23887
  }), _void(), {
23888
23888
  kind: "mutation",
23889
- auth: "admin"
23889
+ auth: "protected"
23890
23890
  }), object({
23891
23891
  deviceId: number(),
23892
23892
  mode: _enum([
@@ -24035,7 +24035,7 @@ DeviceType.Control, method(object({
24035
24035
  control: ControlSetValueInputSchema
24036
24036
  }), _void(), {
24037
24037
  kind: "mutation",
24038
- auth: "admin"
24038
+ auth: "protected"
24039
24039
  });
24040
24040
  object({
24041
24041
  /** Lifecycle state of the cover. */
@@ -24056,25 +24056,25 @@ object({
24056
24056
  });
24057
24057
  DeviceType.Cover, method(object({ deviceId: number().int().nonnegative() }), _void(), {
24058
24058
  kind: "mutation",
24059
- auth: "admin"
24059
+ auth: "protected"
24060
24060
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
24061
24061
  kind: "mutation",
24062
- auth: "admin"
24062
+ auth: "protected"
24063
24063
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
24064
24064
  kind: "mutation",
24065
- auth: "admin"
24065
+ auth: "protected"
24066
24066
  }), method(object({
24067
24067
  deviceId: number().int().nonnegative(),
24068
24068
  position: number().min(0).max(100)
24069
24069
  }), _void(), {
24070
24070
  kind: "mutation",
24071
- auth: "admin"
24071
+ auth: "protected"
24072
24072
  }), method(object({
24073
24073
  deviceId: number().int().nonnegative(),
24074
24074
  tiltPosition: number().min(0).max(100)
24075
24075
  }), _void(), {
24076
24076
  kind: "mutation",
24077
- auth: "admin"
24077
+ auth: "protected"
24078
24078
  });
24079
24079
  /**
24080
24080
  * Vendor-neutral day/night (IR-cut) control — the per-camera config cap
@@ -24279,6 +24279,59 @@ var IdentitySampleInfoSchema = object({
24279
24279
  deviceId: number().int().optional(),
24280
24280
  base64: string().optional()
24281
24281
  });
24282
+ /**
24283
+ * One enrolled sample, judged against the gallery it lives in.
24284
+ *
24285
+ * The gallery is the one input to recognition nobody re-reads: a sample
24286
+ * enrolled from the wrong face keeps voting forever, and because the matches it
24287
+ * pulls then look confident, nobody goes back. The 2026-09-08 audit found
24288
+ * exactly one such pair on this cluster — a sample scoring 0.61 against three
24289
+ * samples of ANOTHER person, enrolled from the same camera in the same minute,
24290
+ * where every other cross-identity pair sits under 0.50.
24291
+ */
24292
+ var IdentitySampleAuditRowSchema = object({
24293
+ sampleId: string(),
24294
+ enrolledAt: number().int(),
24295
+ deviceId: number().int().optional(),
24296
+ source: _enum(["detected", "photo"]),
24297
+ /** The enrolled crop's media key, so the panel can show the evidence. */
24298
+ mediaKey: string().optional(),
24299
+ /**
24300
+ * False = the sample is stamped with a DIFFERENT face model, and a cosine
24301
+ * across feature spaces is a well-formed float with no meaning. Every number
24302
+ * below then says nothing — it must read as "cannot say", never as an
24303
+ * accusation and never as a clean bill: this list ends in a Remove button.
24304
+ */
24305
+ comparable: boolean(),
24306
+ /** Mean cosine against this person's other samples. Null when there are none
24307
+ * to compare with — never 0, which would read as "opposite". */
24308
+ selfMean: number().nullable(),
24309
+ /** The other person this sample looks most like, when it looks like one.
24310
+ * This is the half that convicts: not looking like yourself can be a hard
24311
+ * angle; looking like someone the gallery can NAME is a mis-enrolment. */
24312
+ bestForeign: object({
24313
+ identityId: string(),
24314
+ name: string(),
24315
+ score: number()
24316
+ }).optional(),
24317
+ /** 0 = nothing to say. Higher = look at this one sooner. */
24318
+ suspicion: number()
24319
+ });
24320
+ var IdentitySampleAuditSchema = object({
24321
+ identityId: string(),
24322
+ name: string(),
24323
+ /** The cluster face model every comparison was made in. */
24324
+ modelId: string(),
24325
+ totalSamples: number().int(),
24326
+ comparableSamples: number().int(),
24327
+ flagged: number().int(),
24328
+ /** The bar `flagged` counts against, so the panel states the RULE and not
24329
+ * only its current result. */
24330
+ flagThreshold: number(),
24331
+ /** Worst first. A row with nothing to say still appears, at the bottom: the
24332
+ * operator asked to see the gallery, not only its accusations. */
24333
+ rows: array(IdentitySampleAuditRowSchema).readonly()
24334
+ });
24282
24335
  var FaceInfoSchema = object({
24283
24336
  faceId: string(),
24284
24337
  deviceId: number().int(),
@@ -24430,7 +24483,7 @@ includeCrops: boolean().optional() }).optional(), array(IdentitySchema).readonly
24430
24483
  }), method(object({ id: string() }), _void(), {
24431
24484
  kind: "mutation",
24432
24485
  auth: "admin"
24433
- }), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({
24486
+ }), method(object({ identityId: string() }), array(IdentitySampleInfoSchema).readonly()), method(object({ identityId: string().min(1) }), IdentitySampleAuditSchema, { auth: "admin" }), method(object({
24434
24487
  identityId: string(),
24435
24488
  sampleId: string()
24436
24489
  }), _void(), {
@@ -24616,25 +24669,25 @@ DeviceType.Fan, method(object({
24616
24669
  percentage: number().min(0).max(100)
24617
24670
  }), _void(), {
24618
24671
  kind: "mutation",
24619
- auth: "admin"
24672
+ auth: "protected"
24620
24673
  }), method(object({
24621
24674
  deviceId: number().int().nonnegative(),
24622
24675
  preset: string().min(1)
24623
24676
  }), _void(), {
24624
24677
  kind: "mutation",
24625
- auth: "admin"
24678
+ auth: "protected"
24626
24679
  }), method(object({
24627
24680
  deviceId: number().int().nonnegative(),
24628
24681
  direction: FanDirectionSchema
24629
24682
  }), _void(), {
24630
24683
  kind: "mutation",
24631
- auth: "admin"
24684
+ auth: "protected"
24632
24685
  }), method(object({
24633
24686
  deviceId: number().int().nonnegative(),
24634
24687
  oscillating: boolean()
24635
24688
  }), _void(), {
24636
24689
  kind: "mutation",
24637
- auth: "admin"
24690
+ auth: "protected"
24638
24691
  });
24639
24692
  /**
24640
24693
  * Per-device feature/identity probe slice. Holds the runtime-resolved
@@ -24737,19 +24790,19 @@ DeviceType.Humidifier, method(object({
24737
24790
  on: boolean()
24738
24791
  }), _void(), {
24739
24792
  kind: "mutation",
24740
- auth: "admin"
24793
+ auth: "protected"
24741
24794
  }), method(object({
24742
24795
  deviceId: number().int().nonnegative(),
24743
24796
  humidity: number().min(0).max(100)
24744
24797
  }), _void(), {
24745
24798
  kind: "mutation",
24746
- auth: "admin"
24799
+ auth: "protected"
24747
24800
  }), method(object({
24748
24801
  deviceId: number().int().nonnegative(),
24749
24802
  mode: string().min(1)
24750
24803
  }), _void(), {
24751
24804
  kind: "mutation",
24752
- auth: "admin"
24805
+ auth: "protected"
24753
24806
  });
24754
24807
  object({
24755
24808
  /** Current relative humidity, 0..100. */
@@ -25211,13 +25264,13 @@ object({
25211
25264
  });
25212
25265
  DeviceType.LawnMower, method(object({ deviceId: number().int().nonnegative() }), _void(), {
25213
25266
  kind: "mutation",
25214
- auth: "admin"
25267
+ auth: "protected"
25215
25268
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25216
25269
  kind: "mutation",
25217
- auth: "admin"
25270
+ auth: "protected"
25218
25271
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25219
25272
  kind: "mutation",
25220
- auth: "admin"
25273
+ auth: "protected"
25221
25274
  });
25222
25275
  /**
25223
25276
  * local-network — hub-only singleton.
@@ -25477,16 +25530,16 @@ DeviceType.Lock, method(object({
25477
25530
  code: string().min(1).optional()
25478
25531
  }), _void(), {
25479
25532
  kind: "mutation",
25480
- auth: "admin"
25533
+ auth: "protected"
25481
25534
  }), method(object({
25482
25535
  deviceId: number().int().nonnegative(),
25483
25536
  code: string().min(1).optional()
25484
25537
  }), _void(), {
25485
25538
  kind: "mutation",
25486
- auth: "admin"
25539
+ auth: "protected"
25487
25540
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25488
25541
  kind: "mutation",
25489
- auth: "admin"
25542
+ auth: "protected"
25490
25543
  });
25491
25544
  /**
25492
25545
  * Media-player cap. Models HA `media_player.*` (Sonos, Chromecast,
@@ -25560,55 +25613,55 @@ object({
25560
25613
  });
25561
25614
  DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }), _void(), {
25562
25615
  kind: "mutation",
25563
- auth: "admin"
25616
+ auth: "protected"
25564
25617
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25565
25618
  kind: "mutation",
25566
- auth: "admin"
25619
+ auth: "protected"
25567
25620
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25568
25621
  kind: "mutation",
25569
- auth: "admin"
25622
+ auth: "protected"
25570
25623
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25571
25624
  kind: "mutation",
25572
- auth: "admin"
25625
+ auth: "protected"
25573
25626
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
25574
25627
  kind: "mutation",
25575
- auth: "admin"
25628
+ auth: "protected"
25576
25629
  }), method(object({
25577
25630
  deviceId: number().int().nonnegative(),
25578
25631
  positionMs: number().int().nonnegative()
25579
25632
  }), _void(), {
25580
25633
  kind: "mutation",
25581
- auth: "admin"
25634
+ auth: "protected"
25582
25635
  }), method(object({
25583
25636
  deviceId: number().int().nonnegative(),
25584
25637
  volumeLevel: number().min(0).max(100)
25585
25638
  }), _void(), {
25586
25639
  kind: "mutation",
25587
- auth: "admin"
25640
+ auth: "protected"
25588
25641
  }), method(object({
25589
25642
  deviceId: number().int().nonnegative(),
25590
25643
  muted: boolean()
25591
25644
  }), _void(), {
25592
25645
  kind: "mutation",
25593
- auth: "admin"
25646
+ auth: "protected"
25594
25647
  }), method(object({
25595
25648
  deviceId: number().int().nonnegative(),
25596
25649
  shuffle: boolean()
25597
25650
  }), _void(), {
25598
25651
  kind: "mutation",
25599
- auth: "admin"
25652
+ auth: "protected"
25600
25653
  }), method(object({
25601
25654
  deviceId: number().int().nonnegative(),
25602
25655
  repeat: MediaPlayerRepeatSchema
25603
25656
  }), _void(), {
25604
25657
  kind: "mutation",
25605
- auth: "admin"
25658
+ auth: "protected"
25606
25659
  }), method(object({
25607
25660
  deviceId: number().int().nonnegative(),
25608
25661
  source: string().min(1)
25609
25662
  }), _void(), {
25610
25663
  kind: "mutation",
25611
- auth: "admin"
25664
+ auth: "protected"
25612
25665
  }), method(object({
25613
25666
  deviceId: number().int().nonnegative(),
25614
25667
  /** Media identifier / URL. */
@@ -25618,7 +25671,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
25618
25671
  mediaType: string().min(1)
25619
25672
  }), _void(), {
25620
25673
  kind: "mutation",
25621
- auth: "admin"
25674
+ auth: "protected"
25622
25675
  });
25623
25676
  /**
25624
25677
  * mesh-network — collection cap for mesh-VPN providers.
@@ -26784,49 +26837,49 @@ DeviceType.PetFeeder, method(object({
26784
26837
  hopper2: gramsPortion.optional()
26785
26838
  }), _void(), {
26786
26839
  kind: "mutation",
26787
- auth: "admin"
26840
+ auth: "protected"
26788
26841
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26789
26842
  kind: "mutation",
26790
- auth: "admin"
26843
+ auth: "protected"
26791
26844
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26792
26845
  kind: "mutation",
26793
- auth: "admin"
26846
+ auth: "protected"
26794
26847
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26795
26848
  kind: "mutation",
26796
- auth: "admin"
26849
+ auth: "protected"
26797
26850
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
26798
26851
  kind: "mutation",
26799
- auth: "admin"
26852
+ auth: "protected"
26800
26853
  }), method(object({
26801
26854
  deviceId: number().int().nonnegative(),
26802
26855
  soundId: number().int().nonnegative()
26803
26856
  }), _void(), {
26804
26857
  kind: "mutation",
26805
- auth: "admin"
26858
+ auth: "protected"
26806
26859
  }), method(object({
26807
26860
  deviceId: number().int().nonnegative(),
26808
26861
  on: boolean()
26809
26862
  }), _void(), {
26810
26863
  kind: "mutation",
26811
- auth: "admin"
26864
+ auth: "protected"
26812
26865
  }), method(object({
26813
26866
  deviceId: number().int().nonnegative(),
26814
26867
  on: boolean()
26815
26868
  }), _void(), {
26816
26869
  kind: "mutation",
26817
- auth: "admin"
26870
+ auth: "protected"
26818
26871
  }), method(object({
26819
26872
  deviceId: number().int().nonnegative(),
26820
26873
  on: boolean()
26821
26874
  }), _void(), {
26822
26875
  kind: "mutation",
26823
- auth: "admin"
26876
+ auth: "protected"
26824
26877
  }), method(object({
26825
26878
  deviceId: number().int().nonnegative(),
26826
26879
  level: number().int().nonnegative()
26827
26880
  }), _void(), {
26828
26881
  kind: "mutation",
26829
- auth: "admin"
26882
+ auth: "protected"
26830
26883
  });
26831
26884
  var VehicleSchema = object({
26832
26885
  id: string(),
@@ -28613,7 +28666,7 @@ DeviceType.Switch, DeviceType.Siren, DeviceType.Light, method(object({
28613
28666
  on: boolean()
28614
28667
  }), _void(), {
28615
28668
  kind: "mutation",
28616
- auth: "admin"
28669
+ auth: "protected"
28617
28670
  }), object({
28618
28671
  deviceId: number(),
28619
28672
  on: boolean(),
@@ -29470,25 +29523,25 @@ object({
29470
29523
  });
29471
29524
  DeviceType.Vacuum, method(object({ deviceId: number().int().nonnegative() }), _void(), {
29472
29525
  kind: "mutation",
29473
- auth: "admin"
29526
+ auth: "protected"
29474
29527
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29475
29528
  kind: "mutation",
29476
- auth: "admin"
29529
+ auth: "protected"
29477
29530
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29478
29531
  kind: "mutation",
29479
- auth: "admin"
29532
+ auth: "protected"
29480
29533
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29481
29534
  kind: "mutation",
29482
- auth: "admin"
29535
+ auth: "protected"
29483
29536
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29484
29537
  kind: "mutation",
29485
- auth: "admin"
29538
+ auth: "protected"
29486
29539
  }), method(object({
29487
29540
  deviceId: number().int().nonnegative(),
29488
29541
  speed: string().min(1)
29489
29542
  }), _void(), {
29490
29543
  kind: "mutation",
29491
- auth: "admin"
29544
+ auth: "protected"
29492
29545
  });
29493
29546
  object({
29494
29547
  /** Lifecycle state of the valve. */
@@ -29507,19 +29560,19 @@ object({
29507
29560
  });
29508
29561
  DeviceType.Valve, method(object({ deviceId: number().int().nonnegative() }), _void(), {
29509
29562
  kind: "mutation",
29510
- auth: "admin"
29563
+ auth: "protected"
29511
29564
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29512
29565
  kind: "mutation",
29513
- auth: "admin"
29566
+ auth: "protected"
29514
29567
  }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
29515
29568
  kind: "mutation",
29516
- auth: "admin"
29569
+ auth: "protected"
29517
29570
  }), method(object({
29518
29571
  deviceId: number().int().nonnegative(),
29519
29572
  position: number().min(0).max(100)
29520
29573
  }), _void(), {
29521
29574
  kind: "mutation",
29522
- auth: "admin"
29575
+ auth: "protected"
29523
29576
  });
29524
29577
  object({
29525
29578
  detected: boolean(),
@@ -29553,19 +29606,19 @@ DeviceType.WaterHeater, method(object({
29553
29606
  temp: number().finite()
29554
29607
  }), _void(), {
29555
29608
  kind: "mutation",
29556
- auth: "admin"
29609
+ auth: "protected"
29557
29610
  }), method(object({
29558
29611
  deviceId: number().int().nonnegative(),
29559
29612
  mode: string().min(1)
29560
29613
  }), _void(), {
29561
29614
  kind: "mutation",
29562
- auth: "admin"
29615
+ auth: "protected"
29563
29616
  }), method(object({
29564
29617
  deviceId: number().int().nonnegative(),
29565
29618
  on: boolean()
29566
29619
  }), _void(), {
29567
29620
  kind: "mutation",
29568
- auth: "admin"
29621
+ auth: "protected"
29569
29622
  });
29570
29623
  object({
29571
29624
  /** Verbatim HA condition state (`sunny`, `cloudy`, `rainy`, …). Null
@@ -31657,6 +31710,12 @@ Object.freeze({
31657
31710
  addonId: null,
31658
31711
  access: "create"
31659
31712
  },
31713
+ "faceGallery.auditIdentitySamples": {
31714
+ capName: "face-gallery",
31715
+ capScope: "system",
31716
+ addonId: null,
31717
+ access: "view"
31718
+ },
31660
31719
  "faceGallery.createIdentity": {
31661
31720
  capName: "face-gallery",
31662
31721
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-decoder-nodeav",
3
- "version": "1.2.84",
3
+ "version": "1.2.86",
4
4
  "description": "Standalone in-process node-av decoder addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",