@camstack/addon-post-analysis 1.2.633 → 1.2.635

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.
@@ -30,7 +30,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  }) : target, mod));
31
31
  //#endregion
32
32
  let node_crypto = require("node:crypto");
33
- //#region ../types/dist/event-category-Ceif8n-v.mjs
33
+ //#region ../types/dist/event-category-DHXxB8t9.mjs
34
34
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
35
35
  EventCategory["SystemBoot"] = "system.boot";
36
36
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -326,7 +326,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
326
326
  * TRANSITION into that state (never per dispatch), and the node is dropped
327
327
  * from the placement candidate set for as long as it holds.
328
328
  *
329
- * This exists because the state was previously invisible: little-unraid
329
+ * This exists because the state was previously invisible: agent-a
330
330
  * absorbed 283k inference errors in a day while still being handed cameras,
331
331
  * and nothing in the system said so.
332
332
  *
@@ -5663,7 +5663,7 @@ var ZodIssueCode = {
5663
5663
  var ZodFirstPartyTypeKind;
5664
5664
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5665
5665
  //#endregion
5666
- //#region ../types/dist/sleep-CYfIZzGv.mjs
5666
+ //#region ../types/dist/sleep-BErAxhul.mjs
5667
5667
  /**
5668
5668
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5669
5669
  * window to float samples (D455).
@@ -8913,6 +8913,1981 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
8913
8913
  kind: "mutation",
8914
8914
  auth: "admin"
8915
8915
  }), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
8916
+ /** cap name -> the numeric state field whose strict advance IS the cap's one-shot event. */
8917
+ var CAP_ADVANCE_FIELDS = Object.freeze({ "doorbell": "lastPressedAt" });
8918
+ /** Every capability name, so addon code can check a name without the schema graph. */
8919
+ var CAP_NAMES = Object.freeze([
8920
+ "accessories",
8921
+ "addon-pages",
8922
+ "addon-pages-source",
8923
+ "addon-routes",
8924
+ "addon-settings",
8925
+ "addon-widgets",
8926
+ "addon-widgets-source",
8927
+ "addons",
8928
+ "admin-ui",
8929
+ "air-quality-sensor",
8930
+ "alarm-panel",
8931
+ "alerts",
8932
+ "ambient-light-sensor",
8933
+ "audio-analysis",
8934
+ "audio-analyzer",
8935
+ "audio-codec",
8936
+ "audio-metrics",
8937
+ "auth-provider",
8938
+ "automation-control",
8939
+ "backup",
8940
+ "battery",
8941
+ "binary",
8942
+ "brightness",
8943
+ "broker",
8944
+ "button",
8945
+ "calendar-source",
8946
+ "calendars",
8947
+ "camera-credentials",
8948
+ "camera-grid-layout",
8949
+ "camera-pipeline-config",
8950
+ "camera-streams",
8951
+ "carbon-monoxide",
8952
+ "climate-control",
8953
+ "color",
8954
+ "composer",
8955
+ "connection-test",
8956
+ "connectivity",
8957
+ "consumables",
8958
+ "contact",
8959
+ "control",
8960
+ "core-blocks",
8961
+ "cover",
8962
+ "custom-model-registry",
8963
+ "data-store-provider",
8964
+ "database-snapshot",
8965
+ "day-night",
8966
+ "decoder",
8967
+ "detection-pipeline",
8968
+ "device-admin-link",
8969
+ "device-adoption",
8970
+ "device-credentials",
8971
+ "device-discovery",
8972
+ "device-export",
8973
+ "device-extension",
8974
+ "device-history",
8975
+ "device-manager",
8976
+ "device-ops",
8977
+ "device-provider",
8978
+ "device-removal-hook",
8979
+ "device-state",
8980
+ "device-status",
8981
+ "dishwasher",
8982
+ "display-palette",
8983
+ "doorbell",
8984
+ "embedding-encoder",
8985
+ "enum-sensor",
8986
+ "event-emitter",
8987
+ "face-gallery",
8988
+ "failure-contribution",
8989
+ "fan-control",
8990
+ "feature-probe",
8991
+ "filesystem-browse",
8992
+ "flood",
8993
+ "gas",
8994
+ "heating-valve",
8995
+ "humidifier",
8996
+ "humidity-sensor",
8997
+ "image",
8998
+ "image-settings",
8999
+ "integrations",
9000
+ "intercom",
9001
+ "keychain",
9002
+ "keychain-admin",
9003
+ "lawn-mower-control",
9004
+ "llm",
9005
+ "llm-runtime",
9006
+ "load-contribution",
9007
+ "local-network",
9008
+ "lock-control",
9009
+ "log-channels",
9010
+ "log-destination",
9011
+ "login-method",
9012
+ "media-player",
9013
+ "mesh-network",
9014
+ "metrics-provider",
9015
+ "model-convert",
9016
+ "model-distributor",
9017
+ "motion",
9018
+ "motion-detection",
9019
+ "motion-trigger",
9020
+ "motion-zones",
9021
+ "mqtt-broker",
9022
+ "native-object-detection",
9023
+ "navigation",
9024
+ "network-access",
9025
+ "network-link",
9026
+ "network-quality",
9027
+ "node-certificates",
9028
+ "nodes",
9029
+ "notification-output",
9030
+ "notification-rules",
9031
+ "notifier",
9032
+ "numeric-sensor",
9033
+ "oauth-integration",
9034
+ "oidc-connections",
9035
+ "osd",
9036
+ "osd-manager",
9037
+ "pet-feeder",
9038
+ "pipeline-analytics",
9039
+ "pipeline-executor",
9040
+ "pipeline-orchestrator",
9041
+ "pipeline-runner",
9042
+ "plate-gallery",
9043
+ "platform-probe",
9044
+ "power-meter",
9045
+ "presence",
9046
+ "pressure-sensor",
9047
+ "privacy-mask",
9048
+ "ptz",
9049
+ "ptz-autotrack",
9050
+ "reboot",
9051
+ "record-entries",
9052
+ "recording",
9053
+ "recording-archive",
9054
+ "recording-export",
9055
+ "recording-onboard",
9056
+ "recording-signal",
9057
+ "records",
9058
+ "running-state",
9059
+ "scene-monitor",
9060
+ "script-runner",
9061
+ "server-management",
9062
+ "settings-store",
9063
+ "smoke",
9064
+ "smtp-provider",
9065
+ "snapshot",
9066
+ "sso-bridge",
9067
+ "storage",
9068
+ "storage-admin",
9069
+ "storage-evictable",
9070
+ "storage-migration",
9071
+ "storage-occupancy",
9072
+ "storage-provider",
9073
+ "stream-broker",
9074
+ "stream-catalog",
9075
+ "stream-params",
9076
+ "stream-signals",
9077
+ "switch",
9078
+ "system",
9079
+ "tamper",
9080
+ "temperature-sensor",
9081
+ "terminal-session",
9082
+ "toast",
9083
+ "training",
9084
+ "training-provider",
9085
+ "turn-provider",
9086
+ "update",
9087
+ "user-management",
9088
+ "user-passkeys",
9089
+ "vacuum-control",
9090
+ "valve",
9091
+ "vector-store",
9092
+ "vibration",
9093
+ "videoclips",
9094
+ "viewer-ui",
9095
+ "water-heater",
9096
+ "weather",
9097
+ "webrtc-session",
9098
+ "zone-analytics",
9099
+ "zone-rules",
9100
+ "zones"
9101
+ ]);
9102
+ Object.freeze({
9103
+ "air-quality-sensor": [
9104
+ {
9105
+ "path": "co2Ppm",
9106
+ "valueType": "number"
9107
+ },
9108
+ {
9109
+ "path": "vocPpb",
9110
+ "valueType": "number"
9111
+ },
9112
+ {
9113
+ "path": "pm25",
9114
+ "valueType": "number"
9115
+ },
9116
+ {
9117
+ "path": "pm10",
9118
+ "valueType": "number"
9119
+ },
9120
+ {
9121
+ "path": "aqi",
9122
+ "valueType": "number"
9123
+ },
9124
+ {
9125
+ "path": "unit",
9126
+ "valueType": "string"
9127
+ },
9128
+ {
9129
+ "path": "precision",
9130
+ "valueType": "number"
9131
+ }
9132
+ ],
9133
+ "alarm-panel": [
9134
+ {
9135
+ "path": "state",
9136
+ "valueType": "enum",
9137
+ "enumValues": [
9138
+ "disarmed",
9139
+ "armed_home",
9140
+ "armed_away",
9141
+ "armed_night",
9142
+ "armed_vacation",
9143
+ "armed_custom_bypass",
9144
+ "arming",
9145
+ "disarming",
9146
+ "pending",
9147
+ "triggered"
9148
+ ]
9149
+ },
9150
+ {
9151
+ "path": "targetMode",
9152
+ "valueType": "enum",
9153
+ "enumValues": [
9154
+ "home",
9155
+ "away",
9156
+ "night",
9157
+ "vacation",
9158
+ "custom_bypass"
9159
+ ]
9160
+ },
9161
+ {
9162
+ "path": "requiresCode",
9163
+ "valueType": "boolean"
9164
+ }
9165
+ ],
9166
+ "ambient-light-sensor": [
9167
+ {
9168
+ "path": "lux",
9169
+ "valueType": "number"
9170
+ },
9171
+ {
9172
+ "path": "unit",
9173
+ "valueType": "string"
9174
+ },
9175
+ {
9176
+ "path": "precision",
9177
+ "valueType": "number"
9178
+ }
9179
+ ],
9180
+ "audio-metrics": [
9181
+ {
9182
+ "path": "ts",
9183
+ "valueType": "number"
9184
+ },
9185
+ {
9186
+ "path": "windowSec",
9187
+ "valueType": "number"
9188
+ },
9189
+ {
9190
+ "path": "level.rms",
9191
+ "valueType": "number"
9192
+ },
9193
+ {
9194
+ "path": "level.dbfs",
9195
+ "valueType": "number"
9196
+ },
9197
+ {
9198
+ "path": "peakDbfs",
9199
+ "valueType": "number"
9200
+ },
9201
+ {
9202
+ "path": "avgDbfs",
9203
+ "valueType": "number"
9204
+ },
9205
+ {
9206
+ "path": "current.className",
9207
+ "valueType": "string"
9208
+ },
9209
+ {
9210
+ "path": "current.score",
9211
+ "valueType": "number"
9212
+ },
9213
+ {
9214
+ "path": "current.timestamp",
9215
+ "valueType": "number"
9216
+ }
9217
+ ],
9218
+ "automation-control": [
9219
+ {
9220
+ "path": "enabled",
9221
+ "valueType": "boolean"
9222
+ },
9223
+ {
9224
+ "path": "isRunning",
9225
+ "valueType": "boolean"
9226
+ },
9227
+ {
9228
+ "path": "lastTriggeredAt",
9229
+ "valueType": "number"
9230
+ },
9231
+ {
9232
+ "path": "lastError",
9233
+ "valueType": "string"
9234
+ }
9235
+ ],
9236
+ "battery": [
9237
+ {
9238
+ "path": "percentage",
9239
+ "valueType": "number"
9240
+ },
9241
+ {
9242
+ "path": "charging",
9243
+ "valueType": "enum",
9244
+ "enumValues": [
9245
+ "dc",
9246
+ "solar",
9247
+ "none",
9248
+ "unknown"
9249
+ ]
9250
+ },
9251
+ {
9252
+ "path": "sleeping",
9253
+ "valueType": "boolean"
9254
+ },
9255
+ {
9256
+ "path": "lastUpdated",
9257
+ "valueType": "number"
9258
+ },
9259
+ {
9260
+ "path": "lastContactAt",
9261
+ "valueType": "number"
9262
+ },
9263
+ {
9264
+ "path": "lastFullRefreshAt",
9265
+ "valueType": "number"
9266
+ },
9267
+ {
9268
+ "path": "binary",
9269
+ "valueType": "boolean"
9270
+ }
9271
+ ],
9272
+ "binary": [{
9273
+ "path": "on",
9274
+ "valueType": "boolean"
9275
+ }],
9276
+ "brightness": [{
9277
+ "path": "percentage",
9278
+ "valueType": "number"
9279
+ }],
9280
+ "broker": [{
9281
+ "path": "brokerCount",
9282
+ "valueType": "number"
9283
+ }, {
9284
+ "path": "connectedCount",
9285
+ "valueType": "number"
9286
+ }],
9287
+ "camera-credentials": [
9288
+ {
9289
+ "path": "host",
9290
+ "valueType": "string"
9291
+ },
9292
+ {
9293
+ "path": "port",
9294
+ "valueType": "number"
9295
+ },
9296
+ {
9297
+ "path": "onvifPort",
9298
+ "valueType": "number"
9299
+ },
9300
+ {
9301
+ "path": "rtspPort",
9302
+ "valueType": "number"
9303
+ },
9304
+ {
9305
+ "path": "https",
9306
+ "valueType": "boolean"
9307
+ },
9308
+ {
9309
+ "path": "hasUsername",
9310
+ "valueType": "boolean"
9311
+ },
9312
+ {
9313
+ "path": "hasPassword",
9314
+ "valueType": "boolean"
9315
+ },
9316
+ {
9317
+ "path": "onvifProfile",
9318
+ "valueType": "string"
9319
+ }
9320
+ ],
9321
+ "camera-streams": [
9322
+ {
9323
+ "path": "online",
9324
+ "valueType": "boolean"
9325
+ },
9326
+ {
9327
+ "path": "slotStatuses.high",
9328
+ "valueType": "enum",
9329
+ "enumValues": [
9330
+ "unassigned",
9331
+ "idle",
9332
+ "connecting",
9333
+ "streaming",
9334
+ "error"
9335
+ ]
9336
+ },
9337
+ {
9338
+ "path": "slotStatuses.mid",
9339
+ "valueType": "enum",
9340
+ "enumValues": [
9341
+ "unassigned",
9342
+ "idle",
9343
+ "connecting",
9344
+ "streaming",
9345
+ "error"
9346
+ ]
9347
+ },
9348
+ {
9349
+ "path": "slotStatuses.low",
9350
+ "valueType": "enum",
9351
+ "enumValues": [
9352
+ "unassigned",
9353
+ "idle",
9354
+ "connecting",
9355
+ "streaming",
9356
+ "error"
9357
+ ]
9358
+ },
9359
+ {
9360
+ "path": "slotErrors.high",
9361
+ "valueType": "string"
9362
+ },
9363
+ {
9364
+ "path": "slotErrors.mid",
9365
+ "valueType": "string"
9366
+ },
9367
+ {
9368
+ "path": "slotErrors.low",
9369
+ "valueType": "string"
9370
+ }
9371
+ ],
9372
+ "carbon-monoxide": [{
9373
+ "path": "detected",
9374
+ "valueType": "boolean"
9375
+ }],
9376
+ "climate-control": [
9377
+ {
9378
+ "path": "mode",
9379
+ "valueType": "enum",
9380
+ "enumValues": [
9381
+ "off",
9382
+ "heat",
9383
+ "cool",
9384
+ "auto",
9385
+ "heat_cool",
9386
+ "fan_only",
9387
+ "dry"
9388
+ ]
9389
+ },
9390
+ {
9391
+ "path": "fanMode",
9392
+ "valueType": "string"
9393
+ },
9394
+ {
9395
+ "path": "preset",
9396
+ "valueType": "string"
9397
+ },
9398
+ {
9399
+ "path": "target",
9400
+ "valueType": "number"
9401
+ },
9402
+ {
9403
+ "path": "targetHigh",
9404
+ "valueType": "number"
9405
+ },
9406
+ {
9407
+ "path": "targetLow",
9408
+ "valueType": "number"
9409
+ },
9410
+ {
9411
+ "path": "targetHumidity",
9412
+ "valueType": "number"
9413
+ },
9414
+ {
9415
+ "path": "currentTemp",
9416
+ "valueType": "number"
9417
+ },
9418
+ {
9419
+ "path": "currentHumidity",
9420
+ "valueType": "number"
9421
+ },
9422
+ {
9423
+ "path": "swingVertical",
9424
+ "valueType": "boolean"
9425
+ },
9426
+ {
9427
+ "path": "swingHorizontal",
9428
+ "valueType": "boolean"
9429
+ },
9430
+ {
9431
+ "path": "minTemp",
9432
+ "valueType": "number"
9433
+ },
9434
+ {
9435
+ "path": "maxTemp",
9436
+ "valueType": "number"
9437
+ },
9438
+ {
9439
+ "path": "tempStep",
9440
+ "valueType": "number"
9441
+ }
9442
+ ],
9443
+ "color": [
9444
+ {
9445
+ "path": "mode",
9446
+ "valueType": "enum",
9447
+ "enumValues": [
9448
+ "rgb",
9449
+ "hsv",
9450
+ "mired"
9451
+ ]
9452
+ },
9453
+ {
9454
+ "path": "rgb.r",
9455
+ "valueType": "number"
9456
+ },
9457
+ {
9458
+ "path": "rgb.g",
9459
+ "valueType": "number"
9460
+ },
9461
+ {
9462
+ "path": "rgb.b",
9463
+ "valueType": "number"
9464
+ },
9465
+ {
9466
+ "path": "hsv.h",
9467
+ "valueType": "number"
9468
+ },
9469
+ {
9470
+ "path": "hsv.s",
9471
+ "valueType": "number"
9472
+ },
9473
+ {
9474
+ "path": "hsv.v",
9475
+ "valueType": "number"
9476
+ },
9477
+ {
9478
+ "path": "mireds",
9479
+ "valueType": "number"
9480
+ }
9481
+ ],
9482
+ "connectivity": [{
9483
+ "path": "connected",
9484
+ "valueType": "boolean"
9485
+ }],
9486
+ "contact": [{
9487
+ "path": "entryOpen",
9488
+ "valueType": "boolean"
9489
+ }],
9490
+ "control": [
9491
+ {
9492
+ "path": "kind",
9493
+ "valueType": "enum",
9494
+ "enumValues": [
9495
+ "numeric",
9496
+ "select",
9497
+ "text",
9498
+ "datetime"
9499
+ ]
9500
+ },
9501
+ {
9502
+ "path": "unit",
9503
+ "valueType": "string"
9504
+ },
9505
+ {
9506
+ "path": "min",
9507
+ "valueType": "number"
9508
+ },
9509
+ {
9510
+ "path": "max",
9511
+ "valueType": "number"
9512
+ },
9513
+ {
9514
+ "path": "step",
9515
+ "valueType": "number"
9516
+ },
9517
+ {
9518
+ "path": "precision",
9519
+ "valueType": "number"
9520
+ },
9521
+ {
9522
+ "path": "format",
9523
+ "valueType": "enum",
9524
+ "enumValues": [
9525
+ "date",
9526
+ "time",
9527
+ "datetime"
9528
+ ]
9529
+ }
9530
+ ],
9531
+ "cover": [
9532
+ {
9533
+ "path": "state",
9534
+ "valueType": "enum",
9535
+ "enumValues": [
9536
+ "open",
9537
+ "opening",
9538
+ "closing",
9539
+ "closed",
9540
+ "stopped"
9541
+ ]
9542
+ },
9543
+ {
9544
+ "path": "position",
9545
+ "valueType": "number"
9546
+ },
9547
+ {
9548
+ "path": "tiltPosition",
9549
+ "valueType": "number"
9550
+ }
9551
+ ],
9552
+ "day-night": [
9553
+ {
9554
+ "path": "mode",
9555
+ "valueType": "enum",
9556
+ "enumValues": [
9557
+ "auto",
9558
+ "day",
9559
+ "night",
9560
+ "schedule"
9561
+ ]
9562
+ },
9563
+ {
9564
+ "path": "sensitivity",
9565
+ "valueType": "number"
9566
+ },
9567
+ {
9568
+ "path": "switchDelaySec",
9569
+ "valueType": "number"
9570
+ }
9571
+ ],
9572
+ "device-adoption": [
9573
+ {
9574
+ "path": "lastDiscoveryAt",
9575
+ "valueType": "number"
9576
+ },
9577
+ {
9578
+ "path": "candidateCount",
9579
+ "valueType": "number"
9580
+ },
9581
+ {
9582
+ "path": "adoptedCount",
9583
+ "valueType": "number"
9584
+ },
9585
+ {
9586
+ "path": "lastError",
9587
+ "valueType": "string"
9588
+ }
9589
+ ],
9590
+ "device-discovery": [{
9591
+ "path": "lastDiscoveryAt",
9592
+ "valueType": "number"
9593
+ }, {
9594
+ "path": "lastError",
9595
+ "valueType": "string"
9596
+ }],
9597
+ "device-export": [
9598
+ {
9599
+ "path": "linkState",
9600
+ "valueType": "enum",
9601
+ "enumValues": [
9602
+ "unlinked",
9603
+ "linked",
9604
+ "error"
9605
+ ]
9606
+ },
9607
+ {
9608
+ "path": "exposedDeviceCount",
9609
+ "valueType": "number"
9610
+ },
9611
+ {
9612
+ "path": "error",
9613
+ "valueType": "string"
9614
+ },
9615
+ {
9616
+ "path": "setup.qr",
9617
+ "valueType": "string"
9618
+ },
9619
+ {
9620
+ "path": "setup.note",
9621
+ "valueType": "string"
9622
+ }
9623
+ ],
9624
+ "device-status": [{
9625
+ "path": "online",
9626
+ "valueType": "boolean"
9627
+ }],
9628
+ "dishwasher": [
9629
+ {
9630
+ "path": "availability",
9631
+ "valueType": "enum",
9632
+ "enumValues": [
9633
+ "available",
9634
+ "offline",
9635
+ "description-missing"
9636
+ ]
9637
+ },
9638
+ {
9639
+ "path": "state",
9640
+ "valueType": "enum",
9641
+ "enumValues": [
9642
+ "idle",
9643
+ "running",
9644
+ "paused",
9645
+ "finished",
9646
+ "error",
9647
+ "unavailable"
9648
+ ]
9649
+ },
9650
+ {
9651
+ "path": "operationState",
9652
+ "valueType": "enum",
9653
+ "enumValues": [
9654
+ "Inactive",
9655
+ "Ready",
9656
+ "DelayedStart",
9657
+ "Run",
9658
+ "Pause",
9659
+ "ActionRequired",
9660
+ "Finished",
9661
+ "Error",
9662
+ "Aborting"
9663
+ ]
9664
+ },
9665
+ {
9666
+ "path": "program",
9667
+ "valueType": "string"
9668
+ },
9669
+ {
9670
+ "path": "selectedProgram",
9671
+ "valueType": "string"
9672
+ },
9673
+ {
9674
+ "path": "remainingSeconds",
9675
+ "valueType": "number"
9676
+ },
9677
+ {
9678
+ "path": "delayedStartSeconds",
9679
+ "valueType": "number"
9680
+ },
9681
+ {
9682
+ "path": "progressPercent",
9683
+ "valueType": "number"
9684
+ },
9685
+ {
9686
+ "path": "doorOpen",
9687
+ "valueType": "boolean"
9688
+ },
9689
+ {
9690
+ "path": "doorLocked",
9691
+ "valueType": "boolean"
9692
+ },
9693
+ {
9694
+ "path": "remoteStartAllowed",
9695
+ "valueType": "boolean"
9696
+ },
9697
+ {
9698
+ "path": "remoteControlActive",
9699
+ "valueType": "boolean"
9700
+ },
9701
+ {
9702
+ "path": "localControlActive",
9703
+ "valueType": "boolean"
9704
+ },
9705
+ {
9706
+ "path": "powerOn",
9707
+ "valueType": "boolean"
9708
+ },
9709
+ {
9710
+ "path": "powerState",
9711
+ "valueType": "string"
9712
+ },
9713
+ {
9714
+ "path": "filterCleaningDue",
9715
+ "valueType": "boolean"
9716
+ },
9717
+ {
9718
+ "path": "machineCareDue",
9719
+ "valueType": "boolean"
9720
+ },
9721
+ {
9722
+ "path": "machineCareRemainingRuns",
9723
+ "valueType": "number"
9724
+ },
9725
+ {
9726
+ "path": "halfLoad",
9727
+ "valueType": "boolean"
9728
+ },
9729
+ {
9730
+ "path": "hygienePlus",
9731
+ "valueType": "boolean"
9732
+ },
9733
+ {
9734
+ "path": "extraDry",
9735
+ "valueType": "boolean"
9736
+ },
9737
+ {
9738
+ "path": "intensiveZone",
9739
+ "valueType": "boolean"
9740
+ },
9741
+ {
9742
+ "path": "varioSpeedPlus",
9743
+ "valueType": "boolean"
9744
+ },
9745
+ {
9746
+ "path": "childLock",
9747
+ "valueType": "boolean"
9748
+ },
9749
+ {
9750
+ "path": "errorCode",
9751
+ "valueType": "number"
9752
+ },
9753
+ {
9754
+ "path": "errorLabel",
9755
+ "valueType": "string"
9756
+ }
9757
+ ],
9758
+ "doorbell": [{
9759
+ "path": "lastPressedAt",
9760
+ "valueType": "number"
9761
+ }, {
9762
+ "path": "pressCountSinceStart",
9763
+ "valueType": "number"
9764
+ }],
9765
+ "enum-sensor": [{
9766
+ "path": "value",
9767
+ "valueType": "string"
9768
+ }, {
9769
+ "path": "format",
9770
+ "valueType": "enum",
9771
+ "enumValues": [
9772
+ "date",
9773
+ "time",
9774
+ "datetime"
9775
+ ]
9776
+ }],
9777
+ "event-emitter": [
9778
+ {
9779
+ "path": "lastEvent.deviceId",
9780
+ "valueType": "number"
9781
+ },
9782
+ {
9783
+ "path": "lastEvent.eventType",
9784
+ "valueType": "string"
9785
+ },
9786
+ {
9787
+ "path": "lastEvent.timestamp",
9788
+ "valueType": "number"
9789
+ },
9790
+ {
9791
+ "path": "lastEvent.seq",
9792
+ "valueType": "number"
9793
+ },
9794
+ {
9795
+ "path": "eventCountSinceStart",
9796
+ "valueType": "number"
9797
+ }
9798
+ ],
9799
+ "fan-control": [
9800
+ {
9801
+ "path": "percentage",
9802
+ "valueType": "number"
9803
+ },
9804
+ {
9805
+ "path": "percentageStep",
9806
+ "valueType": "number"
9807
+ },
9808
+ {
9809
+ "path": "preset",
9810
+ "valueType": "string"
9811
+ },
9812
+ {
9813
+ "path": "direction",
9814
+ "valueType": "enum",
9815
+ "enumValues": ["forward", "reverse"]
9816
+ },
9817
+ {
9818
+ "path": "oscillating",
9819
+ "valueType": "boolean"
9820
+ }
9821
+ ],
9822
+ "feature-probe": [
9823
+ {
9824
+ "path": "deviceType",
9825
+ "valueType": "string"
9826
+ },
9827
+ {
9828
+ "path": "model",
9829
+ "valueType": "string"
9830
+ },
9831
+ {
9832
+ "path": "channelCount",
9833
+ "valueType": "number"
9834
+ },
9835
+ {
9836
+ "path": "lastProbedAt",
9837
+ "valueType": "number"
9838
+ }
9839
+ ],
9840
+ "flood": [{
9841
+ "path": "flooded",
9842
+ "valueType": "boolean"
9843
+ }],
9844
+ "gas": [{
9845
+ "path": "detected",
9846
+ "valueType": "boolean"
9847
+ }],
9848
+ "heating-valve": [{
9849
+ "path": "position",
9850
+ "valueType": "number"
9851
+ }],
9852
+ "humidifier": [
9853
+ {
9854
+ "path": "on",
9855
+ "valueType": "boolean"
9856
+ },
9857
+ {
9858
+ "path": "currentHumidity",
9859
+ "valueType": "number"
9860
+ },
9861
+ {
9862
+ "path": "targetHumidity",
9863
+ "valueType": "number"
9864
+ },
9865
+ {
9866
+ "path": "mode",
9867
+ "valueType": "string"
9868
+ },
9869
+ {
9870
+ "path": "action",
9871
+ "valueType": "string"
9872
+ },
9873
+ {
9874
+ "path": "minHumidity",
9875
+ "valueType": "number"
9876
+ },
9877
+ {
9878
+ "path": "maxHumidity",
9879
+ "valueType": "number"
9880
+ }
9881
+ ],
9882
+ "humidity-sensor": [
9883
+ {
9884
+ "path": "percent",
9885
+ "valueType": "number"
9886
+ },
9887
+ {
9888
+ "path": "unit",
9889
+ "valueType": "string"
9890
+ },
9891
+ {
9892
+ "path": "precision",
9893
+ "valueType": "number"
9894
+ }
9895
+ ],
9896
+ "image": [{
9897
+ "path": "url",
9898
+ "valueType": "string"
9899
+ }, {
9900
+ "path": "lastUpdated",
9901
+ "valueType": "number"
9902
+ }],
9903
+ "image-settings": [
9904
+ {
9905
+ "path": "brightness",
9906
+ "valueType": "number"
9907
+ },
9908
+ {
9909
+ "path": "contrast",
9910
+ "valueType": "number"
9911
+ },
9912
+ {
9913
+ "path": "saturation",
9914
+ "valueType": "number"
9915
+ },
9916
+ {
9917
+ "path": "sharpness",
9918
+ "valueType": "number"
9919
+ },
9920
+ {
9921
+ "path": "mirror",
9922
+ "valueType": "boolean"
9923
+ },
9924
+ {
9925
+ "path": "flip",
9926
+ "valueType": "boolean"
9927
+ },
9928
+ {
9929
+ "path": "rotate",
9930
+ "valueType": "enum",
9931
+ "enumValues": [
9932
+ "0",
9933
+ "90",
9934
+ "180",
9935
+ "270"
9936
+ ]
9937
+ },
9938
+ {
9939
+ "path": "whiteBalance",
9940
+ "valueType": "enum",
9941
+ "enumValues": ["auto", "manual"]
9942
+ },
9943
+ {
9944
+ "path": "warmth",
9945
+ "valueType": "number"
9946
+ },
9947
+ {
9948
+ "path": "exposureMode",
9949
+ "valueType": "enum",
9950
+ "enumValues": ["auto", "manual"]
9951
+ },
9952
+ {
9953
+ "path": "backlightMode",
9954
+ "valueType": "enum",
9955
+ "enumValues": [
9956
+ "off",
9957
+ "blc",
9958
+ "wdr",
9959
+ "hlc"
9960
+ ]
9961
+ }
9962
+ ],
9963
+ "intercom": [
9964
+ {
9965
+ "path": "talking",
9966
+ "valueType": "boolean"
9967
+ },
9968
+ {
9969
+ "path": "lastSessionAt",
9970
+ "valueType": "number"
9971
+ },
9972
+ {
9973
+ "path": "ability.sampleRate",
9974
+ "valueType": "number"
9975
+ },
9976
+ {
9977
+ "path": "ability.duplex",
9978
+ "valueType": "enum",
9979
+ "enumValues": ["half", "full"]
9980
+ },
9981
+ {
9982
+ "path": "ability.maxBacklogMs",
9983
+ "valueType": "number"
9984
+ }
9985
+ ],
9986
+ "lawn-mower-control": [
9987
+ {
9988
+ "path": "activity",
9989
+ "valueType": "enum",
9990
+ "enumValues": [
9991
+ "idle",
9992
+ "mowing",
9993
+ "paused",
9994
+ "docked",
9995
+ "error"
9996
+ ]
9997
+ },
9998
+ {
9999
+ "path": "batteryLevel",
10000
+ "valueType": "number"
10001
+ },
10002
+ {
10003
+ "path": "progressPercent",
10004
+ "valueType": "number"
10005
+ },
10006
+ {
10007
+ "path": "currentCode",
10008
+ "valueType": "number"
10009
+ },
10010
+ {
10011
+ "path": "currentCodeLabel",
10012
+ "valueType": "string"
10013
+ },
10014
+ {
10015
+ "path": "severity",
10016
+ "valueType": "enum",
10017
+ "enumValues": [
10018
+ "info",
10019
+ "warning",
10020
+ "error"
10021
+ ]
10022
+ }
10023
+ ],
10024
+ "lock-control": [{
10025
+ "path": "state",
10026
+ "valueType": "enum",
10027
+ "enumValues": [
10028
+ "locked",
10029
+ "unlocked",
10030
+ "locking",
10031
+ "unlocking",
10032
+ "jammed"
10033
+ ]
10034
+ }],
10035
+ "media-player": [
10036
+ {
10037
+ "path": "state",
10038
+ "valueType": "enum",
10039
+ "enumValues": [
10040
+ "off",
10041
+ "on",
10042
+ "idle",
10043
+ "playing",
10044
+ "paused",
10045
+ "buffering",
10046
+ "standby"
10047
+ ]
10048
+ },
10049
+ {
10050
+ "path": "volumeLevel",
10051
+ "valueType": "number"
10052
+ },
10053
+ {
10054
+ "path": "isMuted",
10055
+ "valueType": "boolean"
10056
+ },
10057
+ {
10058
+ "path": "source",
10059
+ "valueType": "string"
10060
+ },
10061
+ {
10062
+ "path": "currentMedia.type",
10063
+ "valueType": "string"
10064
+ },
10065
+ {
10066
+ "path": "currentMedia.title",
10067
+ "valueType": "string"
10068
+ },
10069
+ {
10070
+ "path": "currentMedia.artist",
10071
+ "valueType": "string"
10072
+ },
10073
+ {
10074
+ "path": "currentMedia.album",
10075
+ "valueType": "string"
10076
+ },
10077
+ {
10078
+ "path": "currentMedia.imageUrl",
10079
+ "valueType": "string"
10080
+ },
10081
+ {
10082
+ "path": "positionMs",
10083
+ "valueType": "number"
10084
+ },
10085
+ {
10086
+ "path": "durationMs",
10087
+ "valueType": "number"
10088
+ },
10089
+ {
10090
+ "path": "shuffle",
10091
+ "valueType": "boolean"
10092
+ },
10093
+ {
10094
+ "path": "repeat",
10095
+ "valueType": "enum",
10096
+ "enumValues": [
10097
+ "off",
10098
+ "all",
10099
+ "one"
10100
+ ]
10101
+ }
10102
+ ],
10103
+ "motion": [
10104
+ {
10105
+ "path": "detected",
10106
+ "valueType": "boolean"
10107
+ },
10108
+ {
10109
+ "path": "lastDetectedAt",
10110
+ "valueType": "number"
10111
+ },
10112
+ {
10113
+ "path": "autoClearAfterMs",
10114
+ "valueType": "number"
10115
+ }
10116
+ ],
10117
+ "motion-trigger": [{
10118
+ "path": "enabled",
10119
+ "valueType": "boolean"
10120
+ }],
10121
+ "motion-zones": [{
10122
+ "path": "enabled",
10123
+ "valueType": "boolean"
10124
+ }, {
10125
+ "path": "sensitivity",
10126
+ "valueType": "number"
10127
+ }],
10128
+ "mqtt-broker": [{
10129
+ "path": "brokerCount",
10130
+ "valueType": "number"
10131
+ }, {
10132
+ "path": "embeddedRunning",
10133
+ "valueType": "boolean"
10134
+ }],
10135
+ "native-object-detection": [{
10136
+ "path": "enabled",
10137
+ "valueType": "boolean"
10138
+ }],
10139
+ "navigation": [
10140
+ {
10141
+ "path": "mode",
10142
+ "valueType": "enum",
10143
+ "enumValues": [
10144
+ "idle",
10145
+ "cleaning",
10146
+ "spot",
10147
+ "following",
10148
+ "goto",
10149
+ "returning",
10150
+ "paused",
10151
+ "unknown"
10152
+ ]
10153
+ },
10154
+ {
10155
+ "path": "following",
10156
+ "valueType": "boolean"
10157
+ },
10158
+ {
10159
+ "path": "flash",
10160
+ "valueType": "boolean"
10161
+ },
10162
+ {
10163
+ "path": "lightMode",
10164
+ "valueType": "enum",
10165
+ "enumValues": ["auto", "manual"]
10166
+ },
10167
+ {
10168
+ "path": "lightLevel",
10169
+ "valueType": "number"
10170
+ }
10171
+ ],
10172
+ "network-link": [
10173
+ {
10174
+ "path": "type",
10175
+ "valueType": "enum",
10176
+ "enumValues": [
10177
+ "wifi",
10178
+ "ethernet",
10179
+ "cellular",
10180
+ "unknown"
10181
+ ]
10182
+ },
10183
+ {
10184
+ "path": "signalPercent",
10185
+ "valueType": "number"
10186
+ },
10187
+ {
10188
+ "path": "rssiDbm",
10189
+ "valueType": "number"
10190
+ },
10191
+ {
10192
+ "path": "ssid",
10193
+ "valueType": "string"
10194
+ },
10195
+ {
10196
+ "path": "lastUpdated",
10197
+ "valueType": "number"
10198
+ }
10199
+ ],
10200
+ "notifier": [
10201
+ {
10202
+ "path": "lastSentAt",
10203
+ "valueType": "number"
10204
+ },
10205
+ {
10206
+ "path": "lastError",
10207
+ "valueType": "string"
10208
+ },
10209
+ {
10210
+ "path": "queueDepth",
10211
+ "valueType": "number"
10212
+ },
10213
+ {
10214
+ "path": "supports.image",
10215
+ "valueType": "boolean"
10216
+ },
10217
+ {
10218
+ "path": "supports.priority",
10219
+ "valueType": "boolean"
10220
+ },
10221
+ {
10222
+ "path": "supports.data",
10223
+ "valueType": "boolean"
10224
+ },
10225
+ {
10226
+ "path": "supports.actions",
10227
+ "valueType": "boolean"
10228
+ },
10229
+ {
10230
+ "path": "supports.recipients",
10231
+ "valueType": "boolean"
10232
+ }
10233
+ ],
10234
+ "numeric-sensor": [
10235
+ {
10236
+ "path": "value",
10237
+ "valueType": "number"
10238
+ },
10239
+ {
10240
+ "path": "unit",
10241
+ "valueType": "string"
10242
+ },
10243
+ {
10244
+ "path": "precision",
10245
+ "valueType": "number"
10246
+ }
10247
+ ],
10248
+ "pet-feeder": [
10249
+ {
10250
+ "path": "foodLevel",
10251
+ "valueType": "number"
10252
+ },
10253
+ {
10254
+ "path": "food1",
10255
+ "valueType": "number"
10256
+ },
10257
+ {
10258
+ "path": "food2",
10259
+ "valueType": "number"
10260
+ },
10261
+ {
10262
+ "path": "lowFood",
10263
+ "valueType": "boolean"
10264
+ },
10265
+ {
10266
+ "path": "batteryPower",
10267
+ "valueType": "number"
10268
+ },
10269
+ {
10270
+ "path": "desiccantLeftDays",
10271
+ "valueType": "number"
10272
+ },
10273
+ {
10274
+ "path": "feeding",
10275
+ "valueType": "boolean"
10276
+ },
10277
+ {
10278
+ "path": "status",
10279
+ "valueType": "enum",
10280
+ "enumValues": [
10281
+ "normal",
10282
+ "offline",
10283
+ "on_batteries"
10284
+ ]
10285
+ },
10286
+ {
10287
+ "path": "error",
10288
+ "valueType": "string"
10289
+ },
10290
+ {
10291
+ "path": "errorCode",
10292
+ "valueType": "number"
10293
+ },
10294
+ {
10295
+ "path": "isDualHopper",
10296
+ "valueType": "boolean"
10297
+ },
10298
+ {
10299
+ "path": "childLock",
10300
+ "valueType": "boolean"
10301
+ },
10302
+ {
10303
+ "path": "indicatorLight",
10304
+ "valueType": "boolean"
10305
+ },
10306
+ {
10307
+ "path": "feedSound",
10308
+ "valueType": "boolean"
10309
+ },
10310
+ {
10311
+ "path": "volume",
10312
+ "valueType": "number"
10313
+ }
10314
+ ],
10315
+ "power-meter": [
10316
+ {
10317
+ "path": "watts",
10318
+ "valueType": "number"
10319
+ },
10320
+ {
10321
+ "path": "kwhTotal",
10322
+ "valueType": "number"
10323
+ },
10324
+ {
10325
+ "path": "volts",
10326
+ "valueType": "number"
10327
+ },
10328
+ {
10329
+ "path": "amps",
10330
+ "valueType": "number"
10331
+ },
10332
+ {
10333
+ "path": "va",
10334
+ "valueType": "number"
10335
+ },
10336
+ {
10337
+ "path": "powerFactor",
10338
+ "valueType": "number"
10339
+ },
10340
+ {
10341
+ "path": "unit",
10342
+ "valueType": "string"
10343
+ },
10344
+ {
10345
+ "path": "precision",
10346
+ "valueType": "number"
10347
+ }
10348
+ ],
10349
+ "presence": [
10350
+ {
10351
+ "path": "state",
10352
+ "valueType": "string"
10353
+ },
10354
+ {
10355
+ "path": "location",
10356
+ "valueType": "string"
10357
+ },
10358
+ {
10359
+ "path": "gps.latitude",
10360
+ "valueType": "number"
10361
+ },
10362
+ {
10363
+ "path": "gps.longitude",
10364
+ "valueType": "number"
10365
+ },
10366
+ {
10367
+ "path": "gps.accuracyMeters",
10368
+ "valueType": "number"
10369
+ },
10370
+ {
10371
+ "path": "batteryPercent",
10372
+ "valueType": "number"
10373
+ }
10374
+ ],
10375
+ "pressure-sensor": [
10376
+ {
10377
+ "path": "hpa",
10378
+ "valueType": "number"
10379
+ },
10380
+ {
10381
+ "path": "unit",
10382
+ "valueType": "string"
10383
+ },
10384
+ {
10385
+ "path": "precision",
10386
+ "valueType": "number"
10387
+ }
10388
+ ],
10389
+ "privacy-mask": [{
10390
+ "path": "enabled",
10391
+ "valueType": "boolean"
10392
+ }, {
10393
+ "path": "audioEnabled",
10394
+ "valueType": "boolean"
10395
+ }],
10396
+ "ptz": [
10397
+ {
10398
+ "path": "pan",
10399
+ "valueType": "number"
10400
+ },
10401
+ {
10402
+ "path": "tilt",
10403
+ "valueType": "number"
10404
+ },
10405
+ {
10406
+ "path": "zoom",
10407
+ "valueType": "number"
10408
+ },
10409
+ {
10410
+ "path": "autofocus",
10411
+ "valueType": "boolean"
10412
+ }
10413
+ ],
10414
+ "ptz-autotrack": [
10415
+ {
10416
+ "path": "enabled",
10417
+ "valueType": "boolean"
10418
+ },
10419
+ {
10420
+ "path": "currentSettings.targetType",
10421
+ "valueType": "string"
10422
+ },
10423
+ {
10424
+ "path": "currentSettings.stopDelaySeconds",
10425
+ "valueType": "number"
10426
+ },
10427
+ {
10428
+ "path": "currentSettings.disappearDelaySeconds",
10429
+ "valueType": "number"
10430
+ }
10431
+ ],
10432
+ "recording-archive": [
10433
+ {
10434
+ "path": "deviceId",
10435
+ "valueType": "number"
10436
+ },
10437
+ {
10438
+ "path": "enabled",
10439
+ "valueType": "boolean"
10440
+ },
10441
+ {
10442
+ "path": "activeMode",
10443
+ "valueType": "enum",
10444
+ "enumValues": [
10445
+ "off",
10446
+ "events",
10447
+ "continuous",
10448
+ "on-device-decision"
10449
+ ]
10450
+ },
10451
+ {
10452
+ "path": "nodeId",
10453
+ "valueType": "string"
10454
+ },
10455
+ {
10456
+ "path": "storageBytes",
10457
+ "valueType": "number"
10458
+ }
10459
+ ],
10460
+ "recording-onboard": [
10461
+ {
10462
+ "path": "primaryTrackId",
10463
+ "valueType": "string"
10464
+ },
10465
+ {
10466
+ "path": "enabled",
10467
+ "valueType": "boolean"
10468
+ },
10469
+ {
10470
+ "path": "overwriteWhenFull",
10471
+ "valueType": "boolean"
10472
+ },
10473
+ {
10474
+ "path": "preRecordSec",
10475
+ "valueType": "number"
10476
+ },
10477
+ {
10478
+ "path": "postRecordSec",
10479
+ "valueType": "number"
10480
+ },
10481
+ {
10482
+ "path": "segmentMinutes",
10483
+ "valueType": "number"
10484
+ },
10485
+ {
10486
+ "path": "unreadableWindows",
10487
+ "valueType": "number"
10488
+ },
10489
+ {
10490
+ "path": "recordingToNowhere",
10491
+ "valueType": "boolean"
10492
+ }
10493
+ ],
10494
+ "recording-signal": [{
10495
+ "path": "active",
10496
+ "valueType": "boolean"
10497
+ }, {
10498
+ "path": "reason",
10499
+ "valueType": "string"
10500
+ }],
10501
+ "running-state": [
10502
+ {
10503
+ "path": "running",
10504
+ "valueType": "boolean"
10505
+ },
10506
+ {
10507
+ "path": "since",
10508
+ "valueType": "number"
10509
+ },
10510
+ {
10511
+ "path": "source",
10512
+ "valueType": "enum",
10513
+ "enumValues": ["native", "assigned"]
10514
+ },
10515
+ {
10516
+ "path": "phase",
10517
+ "valueType": "string"
10518
+ }
10519
+ ],
10520
+ "script-runner": [
10521
+ {
10522
+ "path": "isRunning",
10523
+ "valueType": "boolean"
10524
+ },
10525
+ {
10526
+ "path": "lastRunAt",
10527
+ "valueType": "number"
10528
+ },
10529
+ {
10530
+ "path": "lastRunSuccess",
10531
+ "valueType": "boolean"
10532
+ },
10533
+ {
10534
+ "path": "lastError",
10535
+ "valueType": "string"
10536
+ }
10537
+ ],
10538
+ "smoke": [{
10539
+ "path": "detected",
10540
+ "valueType": "boolean"
10541
+ }],
10542
+ "snapshot": [
10543
+ {
10544
+ "path": "lastCapturedAt",
10545
+ "valueType": "number"
10546
+ },
10547
+ {
10548
+ "path": "cacheAgeMs",
10549
+ "valueType": "number"
10550
+ },
10551
+ {
10552
+ "path": "lastBytes",
10553
+ "valueType": "number"
10554
+ },
10555
+ {
10556
+ "path": "lastStreamId",
10557
+ "valueType": "string"
10558
+ }
10559
+ ],
10560
+ "stream-params": [
10561
+ {
10562
+ "path": "main.width",
10563
+ "valueType": "number"
10564
+ },
10565
+ {
10566
+ "path": "main.height",
10567
+ "valueType": "number"
10568
+ },
10569
+ {
10570
+ "path": "main.codec",
10571
+ "valueType": "enum",
10572
+ "enumValues": ["h264", "h265"]
10573
+ },
10574
+ {
10575
+ "path": "main.framerate",
10576
+ "valueType": "number"
10577
+ },
10578
+ {
10579
+ "path": "main.bitrate",
10580
+ "valueType": "number"
10581
+ },
10582
+ {
10583
+ "path": "main.bitrateMode",
10584
+ "valueType": "enum",
10585
+ "enumValues": ["vbr", "cbr"]
10586
+ },
10587
+ {
10588
+ "path": "main.encoderProfile",
10589
+ "valueType": "enum",
10590
+ "enumValues": [
10591
+ "high",
10592
+ "main",
10593
+ "baseline"
10594
+ ]
10595
+ },
10596
+ {
10597
+ "path": "main.gop",
10598
+ "valueType": "number"
10599
+ },
10600
+ {
10601
+ "path": "main.audio",
10602
+ "valueType": "boolean"
10603
+ },
10604
+ {
10605
+ "path": "sub.width",
10606
+ "valueType": "number"
10607
+ },
10608
+ {
10609
+ "path": "sub.height",
10610
+ "valueType": "number"
10611
+ },
10612
+ {
10613
+ "path": "sub.codec",
10614
+ "valueType": "enum",
10615
+ "enumValues": ["h264", "h265"]
10616
+ },
10617
+ {
10618
+ "path": "sub.framerate",
10619
+ "valueType": "number"
10620
+ },
10621
+ {
10622
+ "path": "sub.bitrate",
10623
+ "valueType": "number"
10624
+ },
10625
+ {
10626
+ "path": "sub.bitrateMode",
10627
+ "valueType": "enum",
10628
+ "enumValues": ["vbr", "cbr"]
10629
+ },
10630
+ {
10631
+ "path": "sub.encoderProfile",
10632
+ "valueType": "enum",
10633
+ "enumValues": [
10634
+ "high",
10635
+ "main",
10636
+ "baseline"
10637
+ ]
10638
+ },
10639
+ {
10640
+ "path": "sub.gop",
10641
+ "valueType": "number"
10642
+ },
10643
+ {
10644
+ "path": "sub.audio",
10645
+ "valueType": "boolean"
10646
+ },
10647
+ {
10648
+ "path": "ext.width",
10649
+ "valueType": "number"
10650
+ },
10651
+ {
10652
+ "path": "ext.height",
10653
+ "valueType": "number"
10654
+ },
10655
+ {
10656
+ "path": "ext.codec",
10657
+ "valueType": "enum",
10658
+ "enumValues": ["h264", "h265"]
10659
+ },
10660
+ {
10661
+ "path": "ext.framerate",
10662
+ "valueType": "number"
10663
+ },
10664
+ {
10665
+ "path": "ext.bitrate",
10666
+ "valueType": "number"
10667
+ },
10668
+ {
10669
+ "path": "ext.bitrateMode",
10670
+ "valueType": "enum",
10671
+ "enumValues": ["vbr", "cbr"]
10672
+ },
10673
+ {
10674
+ "path": "ext.encoderProfile",
10675
+ "valueType": "enum",
10676
+ "enumValues": [
10677
+ "high",
10678
+ "main",
10679
+ "baseline"
10680
+ ]
10681
+ },
10682
+ {
10683
+ "path": "ext.gop",
10684
+ "valueType": "number"
10685
+ },
10686
+ {
10687
+ "path": "ext.audio",
10688
+ "valueType": "boolean"
10689
+ }
10690
+ ],
10691
+ "switch": [{
10692
+ "path": "on",
10693
+ "valueType": "boolean"
10694
+ }],
10695
+ "tamper": [{
10696
+ "path": "tampered",
10697
+ "valueType": "boolean"
10698
+ }],
10699
+ "temperature-sensor": [
10700
+ {
10701
+ "path": "celsius",
10702
+ "valueType": "number"
10703
+ },
10704
+ {
10705
+ "path": "unit",
10706
+ "valueType": "string"
10707
+ },
10708
+ {
10709
+ "path": "precision",
10710
+ "valueType": "number"
10711
+ }
10712
+ ],
10713
+ "update": [
10714
+ {
10715
+ "path": "currentVersion",
10716
+ "valueType": "string"
10717
+ },
10718
+ {
10719
+ "path": "availableVersion",
10720
+ "valueType": "string"
10721
+ },
10722
+ {
10723
+ "path": "updatable",
10724
+ "valueType": "boolean"
10725
+ },
10726
+ {
10727
+ "path": "state",
10728
+ "valueType": "string"
10729
+ },
10730
+ {
10731
+ "path": "inProgress",
10732
+ "valueType": "boolean"
10733
+ }
10734
+ ],
10735
+ "vacuum-control": [
10736
+ {
10737
+ "path": "state",
10738
+ "valueType": "enum",
10739
+ "enumValues": [
10740
+ "idle",
10741
+ "cleaning",
10742
+ "paused",
10743
+ "returning",
10744
+ "docked",
10745
+ "drying",
10746
+ "error"
10747
+ ]
10748
+ },
10749
+ {
10750
+ "path": "batteryLevel",
10751
+ "valueType": "number"
10752
+ },
10753
+ {
10754
+ "path": "fanSpeed",
10755
+ "valueType": "string"
10756
+ },
10757
+ {
10758
+ "path": "progressPercent",
10759
+ "valueType": "number"
10760
+ },
10761
+ {
10762
+ "path": "errorCode",
10763
+ "valueType": "number"
10764
+ },
10765
+ {
10766
+ "path": "errorLabel",
10767
+ "valueType": "string"
10768
+ }
10769
+ ],
10770
+ "valve": [{
10771
+ "path": "state",
10772
+ "valueType": "enum",
10773
+ "enumValues": [
10774
+ "open",
10775
+ "opening",
10776
+ "closing",
10777
+ "closed",
10778
+ "stopped"
10779
+ ]
10780
+ }, {
10781
+ "path": "position",
10782
+ "valueType": "number"
10783
+ }],
10784
+ "vibration": [{
10785
+ "path": "detected",
10786
+ "valueType": "boolean"
10787
+ }],
10788
+ "water-heater": [
10789
+ {
10790
+ "path": "currentTemp",
10791
+ "valueType": "number"
10792
+ },
10793
+ {
10794
+ "path": "targetTemp",
10795
+ "valueType": "number"
10796
+ },
10797
+ {
10798
+ "path": "operationMode",
10799
+ "valueType": "string"
10800
+ },
10801
+ {
10802
+ "path": "away",
10803
+ "valueType": "boolean"
10804
+ },
10805
+ {
10806
+ "path": "minTemp",
10807
+ "valueType": "number"
10808
+ },
10809
+ {
10810
+ "path": "maxTemp",
10811
+ "valueType": "number"
10812
+ }
10813
+ ],
10814
+ "weather": [
10815
+ {
10816
+ "path": "condition",
10817
+ "valueType": "string"
10818
+ },
10819
+ {
10820
+ "path": "temperature",
10821
+ "valueType": "number"
10822
+ },
10823
+ {
10824
+ "path": "temperatureUnit",
10825
+ "valueType": "string"
10826
+ },
10827
+ {
10828
+ "path": "humidity",
10829
+ "valueType": "number"
10830
+ },
10831
+ {
10832
+ "path": "pressure",
10833
+ "valueType": "number"
10834
+ },
10835
+ {
10836
+ "path": "pressureUnit",
10837
+ "valueType": "string"
10838
+ },
10839
+ {
10840
+ "path": "windSpeed",
10841
+ "valueType": "number"
10842
+ },
10843
+ {
10844
+ "path": "windSpeedUnit",
10845
+ "valueType": "string"
10846
+ },
10847
+ {
10848
+ "path": "windBearing",
10849
+ "valueType": "number"
10850
+ }
10851
+ ],
10852
+ "zone-analytics": [
10853
+ {
10854
+ "path": "ts",
10855
+ "valueType": "number"
10856
+ },
10857
+ {
10858
+ "path": "frameWidth",
10859
+ "valueType": "number"
10860
+ },
10861
+ {
10862
+ "path": "frameHeight",
10863
+ "valueType": "number"
10864
+ },
10865
+ {
10866
+ "path": "frame.totalObjects",
10867
+ "valueType": "number"
10868
+ },
10869
+ {
10870
+ "path": "frame.standingObjects",
10871
+ "valueType": "number"
10872
+ },
10873
+ {
10874
+ "path": "frame.transientObjects",
10875
+ "valueType": "number"
10876
+ },
10877
+ {
10878
+ "path": "unzoned.totalObjects",
10879
+ "valueType": "number"
10880
+ },
10881
+ {
10882
+ "path": "unzoned.standingObjects",
10883
+ "valueType": "number"
10884
+ },
10885
+ {
10886
+ "path": "unzoned.transientObjects",
10887
+ "valueType": "number"
10888
+ }
10889
+ ]
10890
+ });
8916
10891
  /**
8917
10892
  * AUTO-GENERATED by scripts/generate-device-scoped-caps.ts — DO NOT EDIT.
8918
10893
  *
@@ -9412,7 +11387,7 @@ function errMsg(err) {
9412
11387
  return String(err);
9413
11388
  }
9414
11389
  //#endregion
9415
- //#region ../types/dist/composition-BJ8iAZb3.mjs
11390
+ //#region ../types/dist/composition-kEl9mevu.mjs
9416
11391
  /**
9417
11392
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
9418
11393
  * canonical form sorts object keys alphabetically at every depth so two
@@ -10665,7 +12640,7 @@ function gifDeriveSpeed(gifSpeed, videoSpeed) {
10665
12640
  * runs at `fps / speed` in SOURCE time and `setpts` multiplies what survived.
10666
12641
  * The trailing `fps` re-declares the rate, which is NOT redundant: `setpts`
10667
12642
  * leaves the filter link advertising the sampled rate and the gif muxer
10668
- * believes the link — measured on 615 as a 3.01 s gif of ten frames.
12643
+ * believes the link — measured on 101 as a 3.01 s gif of ten frames.
10669
12644
  */
10670
12645
  function gifFilterComplex(input) {
10671
12646
  const speed = input.speed > 0 ? input.speed : 1;
@@ -11551,7 +13526,7 @@ function retrainRevisionConflictMessage(frameId, conflict) {
11551
13526
  * ── Why a TABLE and not a log line ─────────────────────────────────────────
11552
13527
  * `logs.query` is an in-memory ring. Measured on the live hub on 2026-09-08 it
11553
13528
  * held 40 000 entries covering 38 minutes — the whole ring is under an hour of
11554
- * fleet traffic. Every question this data is for ("how often, on camera 617,
13529
+ * fleet traffic. Every question this data is for ("how often, on camera 102,
11555
13530
  * over the week the operator complained about") outlives that ring by two
11556
13531
  * orders of magnitude, and a previous investigation in this repo was blocked
11557
13532
  * for precisely this reason. The gate ALREADY writes a log line per decision
@@ -11810,7 +13785,7 @@ var BirthDecisionQueryInputSchema = object({
11810
13785
  * - A per-device bound multiplies by the fleet — 30 cameras at 500 each is
11811
13786
  * 15 000 rows to protect a corpus that only ever gets read fleet-wide (the
11812
13787
  * thing being mined is "what keeps going wrong", not "what goes wrong on
11813
- * 617"). One global ceiling is one number to reason about.
13788
+ * 102"). One global ceiling is one number to reason about.
11814
13789
  * - An AGE bound would delete the corpus for being old, which is the failure
11815
13790
  * being fixed: a note from six months ago is the most valuable row in the
11816
13791
  * table precisely because the pattern it describes has had time to repeat.
@@ -13359,7 +15334,7 @@ var LogChannelDescriptorSchema = object({
13359
15334
  * `true` is a PROMISE with two halves, and both must hold: the gate is
13360
15335
  * consulted with the numeric device id, AND every line the channel admits
13361
15336
  * carries `tags: { deviceId }` with that same numeric id. The second half is
13362
- * what makes `| json | deviceId="617"` work in Loki — `loki-payload.ts`
15337
+ * what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
13363
15338
  * keeps `deviceId` out of the stream labels for cardinality, so the tag in
13364
15339
  * the body is the only way to filter.
13365
15340
  *
@@ -13735,7 +15710,7 @@ var ModelVariantGroupSchema = object({
13735
15710
  precision: _enum(["fp32", "int8"]).optional(),
13736
15711
  /**
13737
15712
  * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
13738
- * an alternate training of the same family (Scrypted `relu_test`); chip
15713
+ * an alternate training of the same family (plugin catalog `relu_test`); chip
13739
15714
  * label is "Test".
13740
15715
  */
13741
15716
  optimization: _enum(["standard", "test"]).optional(),
@@ -13987,8 +15962,8 @@ var ModelCatalogEntrySchema = object({
13987
15962
  provider: ModelProviderIdSchema.optional(),
13988
15963
  /**
13989
15964
  * Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
13990
- * applies (Frigate / COCO public catalog). Set on a custom model whose raw
13991
- * labels already ARE the CamStack macros (Scrypted identity map).
15965
+ * applies (plus catalog / COCO public catalog). Set on a custom model whose raw
15966
+ * labels already ARE the CamStack macros (plugin catalog identity map).
13992
15967
  */
13993
15968
  classMap: DetectionCatalogClassMapSchema.optional(),
13994
15969
  /**
@@ -16976,7 +18951,7 @@ method(object({
16976
18951
  * `1` is real time and is the ONLY value that allows the copy branch —
16977
18952
  * anything else forces `libx264` over the window. That was priced
16978
18953
  * before it was chosen: a per-event burst measured at 0.23 s and 254 KB
16979
- * on a real 615 720p cut, against 922 KB for the copy it replaces. A
18954
+ * on a real 101 720p cut, against 922 KB for the copy it replaces. A
16980
18955
  * re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
16981
18956
  * once the decode is forced the width stops being free.
16982
18957
  */
@@ -17506,6 +19481,7 @@ var CompositionRunStatusSchema = _enum([
17506
19481
  "starting",
17507
19482
  "running",
17508
19483
  "degraded",
19484
+ "incomplete",
17509
19485
  "failed"
17510
19486
  ]);
17511
19487
  var CompositionFieldStateKindSchema = _enum([
@@ -17726,6 +19702,7 @@ var CoreBlockStatusSchema = _enum([
17726
19702
  "starting",
17727
19703
  "running",
17728
19704
  "degraded",
19705
+ "incomplete",
17729
19706
  "failed"
17730
19707
  ]);
17731
19708
  /** path → TypeScript source for a multi-file block. */
@@ -39760,7 +41737,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
39760
41737
  * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
39761
41738
  * operator's casing. The registry matches labels trimmed + case-insensitively
39762
41739
  * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
39763
- * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
41740
+ * case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
39764
41741
  * map keyed on the displayed casing would orphan its entry on exactly that
39765
41742
  * edit. Consumers join by keying their own label through `locationIconKey`.
39766
41743
  */
@@ -39785,7 +41762,7 @@ var LocationDescriptionAssignmentSchema = object({
39785
41762
  /**
39786
41763
  * A SITE ZONE — a named part of the property that several locations belong to.
39787
41764
  *
39788
- * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
41765
+ * "Night zone" holds every bedroom; "Zona giorno" the living room and the
39789
41766
  * kitchen. A camera belongs to exactly one location, and a location to at most
39790
41767
  * one zone, so a camera's zone is derived and never stored on the device: the
39791
41768
  * whole point of this entity is that grouping rooms touches no device row.
@@ -39814,7 +41791,7 @@ var LocationDescriptionAssignmentSchema = object({
39814
41791
  * the locations inside it.
39815
41792
  *
39816
41793
  * The LABEL is carried alongside the key because the key is lossy on purpose —
39817
- * a surface must show "Zona notte", not "zona notte". Locations are carried
41794
+ * a surface must show "Night zone", not "night zone". Locations are carried
39818
41795
  * here, rather than left to a second call, because every consumer wants both
39819
41796
  * at once and a viewer that asked twice could render a zone whose membership
39820
41797
  * it has not fetched yet.
@@ -42124,8 +44101,8 @@ var LoadContributionSchema = object({
42124
44101
  "unattributable"
42125
44102
  ]),
42126
44103
  /**
42127
- * What ONE entry is, in the contributor's own words — `615/high`,
42128
- * `617/native`, `cuda:0 shared pool`. Free text because the unit differs per
44104
+ * What ONE entry is, in the contributor's own words — `101/high`,
44105
+ * `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
42129
44106
  * family and inventing a common one would lose the only information that
42130
44107
  * makes two entries for the same camera distinguishable.
42131
44108
  */
@@ -45192,7 +47169,7 @@ var NcConditionsSchema = object({
45192
47169
  * with the list under it is worse than no switch (D62).
45193
47170
  *
45194
47171
  * MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
45195
- * renameable, and a rule authored on "Gianluca" went silently dark the moment
47172
+ * renameable, and a rule authored on "Alice" went silently dark the moment
45196
47173
  * the operator fixed the spelling. The id reaches the record on
45197
47174
  * `LabelAttribution.identityId`; the name is what the editor shows and what
45198
47175
  * `{{label}}` renders.
@@ -45775,7 +47752,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
45775
47752
  * A rule scoped to one camera and one zone silently became a rule that
45776
47753
  * matches EVERY event on EVERY camera, and lost its `media` policy
45777
47754
  * (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
45778
- * live on 2026-08-12: a rule scoped to device 617 fired on 590 and 615
47755
+ * live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
45779
47756
  * within a minute of a two-field patch.
45780
47757
  *
45781
47758
  * So every defaulted field is re-declared here WITHOUT its default. The
@@ -47303,8 +49280,8 @@ var NcAlarmSensorsSchema = object({
47303
49280
  * own `sustainSeconds` (29 s on this hub), so its clip is anchored well in the
47304
49281
  * past — and the other source, the recordings, cannot cover a recent moment:
47305
49282
  * measured against `recording.getAvailability` for a 10 s window at several
47306
- * anchors, full coverage arrived at −18 s on device 590 and −26 s on 615 and
47307
- * 617. That edge is a PHASE of the 10-second segment cycle, not a number. The
49283
+ * anchors, full coverage arrived at −18 s on device 104 and −26 s on 101 and
49284
+ * 102. That edge is a PHASE of the 10-second segment cycle, not a number. The
47308
49285
  * ring therefore has to hold the moment until the recordings can take it over:
47309
49286
  * the worst measured phase (26 s) plus the confirmation lag (29 s) is 55 s, and
47310
49287
  * 60 is the round number above it.
@@ -48509,7 +50486,7 @@ var LabelAttributionSchema = object({
48509
50486
  * `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
48510
50487
  *
48511
50488
  * The text alone is a DISPLAY NAME, and a display name is renameable: a
48512
- * notification rule authored on "Gianluca" stopped matching the moment the
50489
+ * notification rule authored on "Alice" stopped matching the moment the
48513
50490
  * operator fixed the spelling in the gallery, and nothing said so. The id is
48514
50491
  * the thing that does not move, so it is what a rule matches on
48515
50492
  * (`NcConditions.identities`) and the text is what a human is shown.
@@ -51296,7 +53273,7 @@ var pipelineAnalyticsCapability = {
51296
53273
  * audio, stopping at the first hit — so on the live hub, where object
51297
53274
  * events own no media of their own and 299 883 of 300 559 media rows are
51298
53275
  * motion-owned, EVERY object event resolved to its motion namesake. A
51299
- * track from 17:34 on camera 615 was served a snapshot from 22:35 eleven
53276
+ * track from 17:34 on camera 101 was served a snapshot from 22:35 eleven
51300
53277
  * days earlier, silently.
51301
53278
  *
51302
53279
  * D476 had already disambiguated the KEY (`motion:` vs `object:`); this is
@@ -51846,7 +53823,7 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
51846
53823
  /**
51847
53824
  * Root-supplied detections for the tree's ROOT step (D730). Set by
51848
53825
  * `runDetailSubtree` when the camera's root model supplies a crop-kind
51849
- * step (a Frigate+ `license_plate` for `plate-detection`): the step is
53826
+ * step (a plus catalog `license_plate` for `plate-detection`): the step is
51850
53827
  * NOT inferred, these boxes are its output, and its children (the plate
51851
53828
  * reader) run on them through their own crop policy. Boxes are in the
51852
53829
  * PIXELS of the image this call carries. Absent ⇒ the root step runs.
@@ -53523,7 +55500,7 @@ var RunnerCameraConfigSchema = object({
53523
55500
  * detection session that asks for history. What shipped was a last-moment
53524
55501
  * discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
53525
55502
  * arriving inside a few hundred ms of wall clock looks to it like one frame's
53526
- * worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
55503
+ * worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
53527
55504
  * recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
53528
55505
  * 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
53529
55506
  * was decoded, and was freed.
@@ -55601,7 +57578,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
55601
57578
  * The signals a device can emit to WAKE its own stream.
55602
57579
  *
55603
57580
  * A camera whose stream is built on demand sleeps until something asks for it,
55604
- * and "something" cannot be a consumer that is merely attached — a Frigate-style
57581
+ * and "something" cannot be a consumer that is merely attached — a external-catalog
55605
57582
  * puller holds a session open for ever, and treating that as demand would keep
55606
57583
  * a battery camera awake for ever, which is the whole thing the battery is for
55607
57584
  * (D173). So the wake has to come from the CAMERA: an event it noticed by
@@ -56335,7 +58312,7 @@ var ClipSchema = object({
56335
58312
  * {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
56336
58313
  *
56337
58314
  * Bounded because it is not a payload the surface pages through: one visit on
56338
- * device 615 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
58315
+ * device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
56339
58316
  * camera-day. Read {@link eventCount} for the true total.
56340
58317
  */
56341
58318
  eventIds: array(string()).optional(),
@@ -56480,7 +58457,7 @@ var ClipPlaybackSchema = object({
56480
58457
  * camera has no recordings", which is the defect this whole line of work is
56481
58458
  * about: a battery camera nobody woke (`sleeping`), a camera that could not be
56482
58459
  * reached at all (`unreachable`, also what a provider that THREW reports), a
56483
- * camera whose SD card is not mounted (`no-storage`, measured on 640 —
58460
+ * camera whose SD card is not mounted (`no-storage`, measured on 106 —
56484
58461
  * `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
56485
58462
  * camera whose OWN index disagrees with its OWN calendar (`index-empty`,
56486
58463
  * measured on 618: the calendar marks 3–20 September, days 6–20 list zero
@@ -56745,7 +58722,7 @@ DeviceType.Camera, method(object({
56745
58722
  *
56746
58723
  * It was optional, documented as "absent means the device's BOUND
56747
58724
  * provider, which is CamStack on every camera". No code implemented
56748
- * that. Measured on the live hub 2026-09-20 — device 592, bound to
58725
+ * that. Measured on the live hub 2026-09-20 — device 107, bound to
56749
58726
  * `recorder` AND `provider-reolink` — a bare call with `limit: 3`
56750
58727
  * answered SIX rows, three from each source, merged newest-first:
56751
58728
  * `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
@@ -57888,7 +59865,10 @@ var airQualitySensorCapability = {
57888
59865
  */
57889
59866
  var AmbientLightSensorStatusSchema = object({
57890
59867
  /** Current illuminance in lux (lx). */
57891
- lux: number().min(0),
59868
+ lux: number().min(0).meta({
59869
+ unit: "lx",
59870
+ label: "Illuminance"
59871
+ }),
57892
59872
  /** Ms epoch when the slice was last updated. */
57893
59873
  lastFetchedAt: number(),
57894
59874
  /** Live display unit from the upstream source (e.g. HA
@@ -57931,7 +59911,12 @@ var ambientLightSensorCapability = {
57931
59911
  } } },
57932
59912
  /** Clock fields: written, but excluded from the compare that decides
57933
59913
  * whether persisting is worth a SQLite commit. */
57934
- volatileStateFields: ["lastFetchedAt"]
59914
+ volatileStateFields: ["lastFetchedAt"],
59915
+ customize: {
59916
+ version: 1,
59917
+ advanced: "derive",
59918
+ targets: []
59919
+ }
57935
59920
  };
57936
59921
  /**
57937
59922
  * Per-class audio metrics aggregated over a sliding window.
@@ -58158,7 +60143,10 @@ var BatteryStatusSchema = object({
58158
60143
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
58159
60144
  * declines to band a non-finite reading, which is the correct shape.
58160
60145
  */
58161
- percentage: number().min(0).max(100).nullable(),
60146
+ percentage: number().min(0).max(100).nullable().meta({
60147
+ unit: "%",
60148
+ label: "Charge"
60149
+ }),
58162
60150
  /**
58163
60151
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
58164
60152
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -58177,13 +60165,13 @@ var BatteryStatusSchema = object({
58177
60165
  "solar",
58178
60166
  "none",
58179
60167
  "unknown"
58180
- ]),
60168
+ ]).meta({ label: "Charging source" }),
58181
60169
  /**
58182
60170
  * True when the camera firmware has gone into low-power mode. Battery
58183
60171
  * providers MUST avoid polling during sleep — reading the battery
58184
60172
  * wakes the camera up and drains charge.
58185
60173
  */
58186
- sleeping: boolean(),
60174
+ sleeping: boolean().meta({ label: "Sleeping" }),
58187
60175
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
58188
60176
  lastUpdated: number(),
58189
60177
  /**
@@ -58223,7 +60211,7 @@ var BatteryStatusSchema = object({
58223
60211
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
58224
60212
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
58225
60213
  */
58226
- binary: boolean().optional()
60214
+ binary: boolean().optional().meta({ label: "Binary indicator" })
58227
60215
  });
58228
60216
  var BATTERY_DEVICE_TYPES = [
58229
60217
  DeviceType.Camera,
@@ -58237,6 +60225,7 @@ var BATTERY_DEVICE_TYPES = [
58237
60225
  /** Generic Customize target for the percentage reading (D936). */
58238
60226
  var batteryCustomize = {
58239
60227
  version: 1,
60228
+ advanced: "derive",
58240
60229
  targets: [{
58241
60230
  id: "percentage",
58242
60231
  cardinality: "scalar",
@@ -58387,7 +60376,7 @@ onStatusChanged: { data: object({
58387
60376
  * with the right HomeKit / Alexa display category.
58388
60377
  */
58389
60378
  var BinaryStatusSchema = object({
58390
- on: boolean(),
60379
+ on: boolean().meta({ label: "On" }),
58391
60380
  /** Ms epoch of the last transition. 0 if never observed. */
58392
60381
  lastChangedAt: number()
58393
60382
  });
@@ -58416,7 +60405,12 @@ var binaryCapability = {
58416
60405
  history: { fields: { on: { kind: "boolean" } } },
58417
60406
  /** Clock fields: written, but excluded from the compare that decides
58418
60407
  * whether persisting is worth a SQLite commit. */
58419
- volatileStateFields: ["lastChangedAt"]
60408
+ volatileStateFields: ["lastChangedAt"],
60409
+ customize: {
60410
+ version: 1,
60411
+ advanced: "derive",
60412
+ targets: []
60413
+ }
58420
60414
  };
58421
60415
  /**
58422
60416
  * Dimmable-light brightness control. Co-exists with `switch` on the
@@ -58749,7 +60743,7 @@ var GridLayoutCellSchema = object({
58749
60743
  *
58750
60744
  * A grid's `high` composes its sources' `high` and its `low` their `low`, so a
58751
60745
  * profile is on offer only when EVERY source can serve it. The refusal NAMES
58752
- * the sources, because "this grid has no low" is not a finding — "615 has no
60746
+ * the sources, because "this grid has no low" is not a finding — "101 has no
58753
60747
  * low" is, and it is the one an operator can act on.
58754
60748
  */
58755
60749
  var GridProfileOfferSchema = object({
@@ -61343,7 +63337,10 @@ var humidifierCapability = {
61343
63337
  */
61344
63338
  var HumiditySensorStatusSchema = object({
61345
63339
  /** Current relative humidity, 0..100. */
61346
- percent: number().min(0).max(100),
63340
+ percent: number().min(0).max(100).meta({
63341
+ unit: "%",
63342
+ label: "Humidity"
63343
+ }),
61347
63344
  /** Ms epoch when the slice was last updated. */
61348
63345
  lastFetchedAt: number(),
61349
63346
  /** Live display unit from the upstream source (e.g. HA
@@ -61385,7 +63382,12 @@ var humiditySensorCapability = {
61385
63382
  } } },
61386
63383
  /** Clock fields: written, but excluded from the compare that decides
61387
63384
  * whether persisting is worth a SQLite commit. */
61388
- volatileStateFields: ["lastFetchedAt"]
63385
+ volatileStateFields: ["lastFetchedAt"],
63386
+ customize: {
63387
+ version: 1,
63388
+ advanced: "derive",
63389
+ targets: []
63390
+ }
61389
63391
  };
61390
63392
  /**
61391
63393
  * Image display cap. Models a single still image exposed by an integration —
@@ -65099,9 +67101,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
65099
67101
  */
65100
67102
  var PowerMeterStatusSchema = object({
65101
67103
  /** Instantaneous power draw in watts. */
65102
- watts: number().optional(),
67104
+ watts: number().optional().meta({
67105
+ unit: "W",
67106
+ label: "Power"
67107
+ }),
65103
67108
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
65104
- kwhTotal: number().optional(),
67109
+ kwhTotal: number().optional().meta({
67110
+ unit: "kWh",
67111
+ label: "Energy"
67112
+ }),
65105
67113
  /** Voltage in volts. */
65106
67114
  volts: number().optional(),
65107
67115
  /** Current in amperes. */
@@ -65186,7 +67194,12 @@ var powerMeterCapability = {
65186
67194
  } },
65187
67195
  /** Clock fields: written, but excluded from the compare that decides
65188
67196
  * whether persisting is worth a SQLite commit. */
65189
- volatileStateFields: ["lastFetchedAt"]
67197
+ volatileStateFields: ["lastFetchedAt"],
67198
+ customize: {
67199
+ version: 1,
67200
+ advanced: "derive",
67201
+ targets: []
67202
+ }
65190
67203
  };
65191
67204
  /**
65192
67205
  * Presence cap. Models HA `person.*` and `device_tracker.*` entities
@@ -65608,9 +67621,9 @@ var PtzOptionsSchema = object({
65608
67621
  * Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
65609
67622
  * not one of the three cameras honours its own:
65610
67623
  *
65611
- * 592 Videocamera camera Daniel (reolink) preset 0 holds "stanza"
65612
- * 1438 Videocamera dispensa (hikvision) preset 1 holds "Credenza"
65613
- * 3836 Videocamera studio (amcrest) preset 1 holds "Preset1"
67624
+ * 107 Camera camera Carol (reolink) preset 0 holds "stanza"
67625
+ * 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
67626
+ * 3836 Camera studio (amcrest) preset 1 holds "Preset1"
65614
67627
  *
65615
67628
  * So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
65616
67629
  * and two of the three swallowed the failure in a bare `catch`. For autotrack
@@ -65854,7 +67867,7 @@ var RunningStateStatusSchema = object({
65854
67867
  running: boolean().nullable(),
65855
67868
  /** Epoch ms the current boolean began; null while `running` is null. */
65856
67869
  since: number().nullable(),
65857
- source: RunningStateSourceSchema,
67870
+ source: RunningStateSourceSchema.meta({ label: "Source" }),
65858
67871
  phase: string().nullable(),
65859
67872
  /** null until a reading has been published (D393). */
65860
67873
  lastFetchedAt: number().nullable()
@@ -65868,6 +67881,7 @@ var RUNNING_DEVICE_TYPES = Object.values(DeviceType);
65868
67881
  /** Generic Customize target for the running boolean (D936). */
65869
67882
  var runningCustomize = {
65870
67883
  version: 1,
67884
+ advanced: "derive",
65871
67885
  targets: [{
65872
67886
  id: "running",
65873
67887
  cardinality: "scalar",
@@ -66009,7 +68023,7 @@ var RecordingAvailabilitySchema = object({
66009
68023
  * would look identical. But the answer used to say nothing about that, so a
66010
68024
  * caller asking "what can I export?" read the single preferred profile as
66011
68025
  * the only one that exists — on this deployment every camera records `high`
66012
- * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
68026
+ * AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
66013
68027
  * UI could not see it.
66014
68028
  *
66015
68029
  * Cheap: it is the same shallow directory read the profile CHOICE already
@@ -66108,7 +68122,7 @@ var RecordingSourceOptionsSchema = object({
66108
68122
  * `sparse` = gaps are the absence of one, and must be drawn as such.
66109
68123
  *
66110
68124
  * Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
66111
- * of 592's day and 1.2 % of 1436's. It is a fact about a (source, camera)
68125
+ * of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
66112
68126
  * pair, and ours answers it per camera from `deriveRecordingMode`. */
66113
68127
  coverage: _enum(["continuous", "sparse"]),
66114
68128
  /** Where the playhead may be put.
@@ -66184,7 +68198,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
66184
68198
  * merely discouraged (D554 amended).
66185
68199
  *
66186
68200
  * It was learned the expensive way on `videoclips.listClips`: measured
66187
- * on the live hub 2026-09-20, device 592 bound to `recorder` AND
68201
+ * on the live hub 2026-09-20, device 107 bound to `recorder` AND
66188
68202
  * `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
66189
68203
  * three from each source, merged — `device-collection-dispatch.ts`
66190
68204
  * leaves an unpinned fan-out un-narrowed, so absence buys the union the
@@ -66785,7 +68799,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
66785
68799
  * on a 10 h window holding 29,393 s of footage every range landed late by the
66786
68800
  * gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
66787
68801
  * the video was a uniform timelapse, and the log line reported the five ranges
66788
- * that had been ASKED for (2026-08-13, export `57d14363`, camera 615).
68802
+ * that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
66789
68803
  *
66790
68804
  * Relative and not absolute epoch, because an absolute epoch would make every
66791
68805
  * call site responsible for the same subtraction.
@@ -67525,7 +69539,7 @@ getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) }
67525
69539
  * which put a "Scenes" tab on one camera's detail page. That is the wrong shape
67526
69540
  * for the thing: a scene is a standing question about the property ("is the bin
67527
69541
  * still out"), and the operator's question is "which of my scenes have tripped",
67528
- * across every camera at once — not "what does camera 617 think". Buried one
69542
+ * across every camera at once — not "what does camera 102 think". Buried one
67529
69543
  * camera deep it also could not be found. The surface is now a top-level admin
67530
69544
  * page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
67531
69545
  * picks the camera inside the create flow, the same shape Events and Faces have.
@@ -68402,7 +70416,7 @@ var streamParamsCapability = {
68402
70416
  * `getSettingsUISchema()` surface.
68403
70417
  */
68404
70418
  var SwitchStatusSchema = object({
68405
- on: boolean(),
70419
+ on: boolean().meta({ label: "On" }),
68406
70420
  /** Ms epoch of the last state change. Useful for UI "X minutes ago". */
68407
70421
  lastChangedAt: number()
68408
70422
  });
@@ -68461,7 +70475,12 @@ var switchCapability = {
68461
70475
  label: "On",
68462
70476
  kind: "boolean"
68463
70477
  }
68464
- }] }
70478
+ }] },
70479
+ customize: {
70480
+ version: 1,
70481
+ advanced: "derive",
70482
+ targets: []
70483
+ }
68465
70484
  };
68466
70485
  /** C0 controls, DEL and the C1 range: none of them belongs in a name. */
68467
70486
  function hasControlCharacter(value) {
@@ -69057,7 +71076,10 @@ var tamperCapability = {
69057
71076
  */
69058
71077
  var TemperatureSensorStatusSchema = object({
69059
71078
  /** Current temperature in Celsius. */
69060
- celsius: number(),
71079
+ celsius: number().meta({
71080
+ unit: "°C",
71081
+ label: "Temperature"
71082
+ }),
69061
71083
  /** Ms epoch when the slice was last updated (push or poll). */
69062
71084
  lastFetchedAt: number(),
69063
71085
  /** Live display unit from the upstream source (e.g. HA
@@ -69100,7 +71122,12 @@ var temperatureSensorCapability = {
69100
71122
  } } },
69101
71123
  /** Clock fields: written, but excluded from the compare that decides
69102
71124
  * whether persisting is worth a SQLite commit. */
69103
- volatileStateFields: ["lastFetchedAt"]
71125
+ volatileStateFields: ["lastFetchedAt"],
71126
+ customize: {
71127
+ version: 1,
71128
+ advanced: "derive",
71129
+ targets: []
71130
+ }
69104
71131
  };
69105
71132
  /**
69106
71133
  * toast — system-scoped singleton capability that streams toast
@@ -70646,6 +72673,10 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
70646
72673
  auth: "admin"
70647
72674
  });
70648
72675
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
72676
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
72677
+ String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
72678
+ DeviceRole.BinarySensor, DeviceRole.MotionSensor;
72679
+ new Set(CAP_NAMES);
70649
72680
  Object.freeze({
70650
72681
  person: .5,
70651
72682
  vehicle: .5,
@@ -84697,7 +86728,7 @@ var SENSOR_CAP_VOCABULARY = {
84697
86728
  state: [{
84698
86729
  kind: "boolean",
84699
86730
  field: "on",
84700
- label: t("Active", "Attivo"),
86731
+ label: t("On", "Acceso"),
84701
86732
  whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
84702
86733
  whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
84703
86734
  icon: "toggle-right"
@@ -88218,7 +90249,6 @@ var BucketAccumulator = class {
88218
90249
  }
88219
90250
  };
88220
90251
  DeviceType.Camera;
88221
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
88222
90252
  /**
88223
90253
  * A saved Customize assignment (D936). The schema is the type: callers use
88224
90254
  * `z.infer`, they do not restate the shape.
@@ -88307,7 +90337,6 @@ object({
88307
90337
  ]),
88308
90338
  reason: string().nullable()
88309
90339
  });
88310
- String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
88311
90340
  var G711_SCALE_CORRECTION_DB = {
88312
90341
  PCMU: 20 * Math.log10(4),
88313
90342
  PCMA: 20 * Math.log10(8)
@@ -90058,7 +92087,7 @@ var STATE_SUMMARY_SECTION_VARS = [
90058
92087
  {
90059
92088
  name: "summaryStreams",
90060
92089
  label: "Summary: streams offline",
90061
- example: "Ingresso (high) — since 06:40",
92090
+ example: "Front door (high) — since 06:40",
90062
92091
  kinds: ["stream-offline", "stream-online"]
90063
92092
  },
90064
92093
  {
@@ -90076,13 +92105,13 @@ var STATE_SUMMARY_SECTION_VARS = [
90076
92105
  {
90077
92106
  name: "summaryDetection",
90078
92107
  label: "Summary: cameras detecting nothing",
90079
- example: "Ingresso — since 05:10",
92108
+ example: "Front door — since 05:10",
90080
92109
  kinds: ["detection-blind"]
90081
92110
  },
90082
92111
  {
90083
92112
  name: "summaryNodes",
90084
92113
  label: "Summary: nodes",
90085
- example: "little-unraid — offline since 03:00",
92114
+ example: "agent-a — offline since 03:00",
90086
92115
  kinds: [
90087
92116
  "node-offline",
90088
92117
  "node-online",
@@ -90166,7 +92195,7 @@ var NC_TEMPLATE_VARS = [
90166
92195
  {
90167
92196
  name: "camera",
90168
92197
  label: "Camera",
90169
- example: "Ingresso",
92198
+ example: "Front door",
90170
92199
  group: "subject",
90171
92200
  families: ["rule", "timelapse"],
90172
92201
  systemEventKinds: [...DEVICE_EVENTS, "export-completed"]
@@ -90334,7 +92363,7 @@ var NC_TEMPLATE_VARS = [
90334
92363
  {
90335
92364
  name: "rule",
90336
92365
  label: "Rule name",
90337
- example: "Ingresso notte",
92366
+ example: "Front door notte",
90338
92367
  group: "rule",
90339
92368
  families: [
90340
92369
  "rule",
@@ -90435,7 +92464,7 @@ var NC_TEMPLATE_VARS = [
90435
92464
  {
90436
92465
  name: "deviceName",
90437
92466
  label: "Device",
90438
- example: "Ingresso",
92467
+ example: "Front door",
90439
92468
  group: "system",
90440
92469
  families: ["rule"],
90441
92470
  fields: [...RULE_TEXT],
@@ -90445,7 +92474,7 @@ var NC_TEMPLATE_VARS = [
90445
92474
  {
90446
92475
  name: "locations",
90447
92476
  label: "Intrusion locations",
90448
- example: "Ingresso, Corridoio, Salone",
92477
+ example: "Front door, Hallway, Hall",
90449
92478
  group: "system",
90450
92479
  families: ["rule"],
90451
92480
  fields: [...RULE_TEXT],
@@ -90455,7 +92484,7 @@ var NC_TEMPLATE_VARS = [
90455
92484
  {
90456
92485
  name: "deviceId",
90457
92486
  label: "Device id",
90458
- example: "617",
92487
+ example: "102",
90459
92488
  group: "system",
90460
92489
  families: ["rule"],
90461
92490
  fields: [...RULE_TEXT],
@@ -90543,7 +92572,7 @@ var NC_TEMPLATE_VARS = [
90543
92572
  {
90544
92573
  name: "nodeName",
90545
92574
  label: "Node name",
90546
- example: "little-unraid",
92575
+ example: "agent-a",
90547
92576
  group: "system",
90548
92577
  families: ["rule"],
90549
92578
  fields: [...RULE_TEXT],
@@ -90564,7 +92593,7 @@ var NC_TEMPLATE_VARS = [
90564
92593
  name: "devices",
90565
92594
  label: "Devices",
90566
92595
  description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / arming / refusal: HOW MANY devices are armed (or open).",
90567
- example: "Ingresso, Garage",
92596
+ example: "Front door, Garage",
90568
92597
  group: "system",
90569
92598
  families: ["rule"],
90570
92599
  fields: [...RULE_TEXT],
@@ -90765,7 +92794,7 @@ var NC_TEMPLATE_VARS = [
90765
92794
  name: "nodes",
90766
92795
  label: "Nodes",
90767
92796
  description: "Comma-joined node ids, when an update spans more than one — the single-node case names it through {{nodeId}} instead. `incomingFromUpdateAvailable` (event-intake.ts) fills `nodes` from ONE shared textParams object for both addon- and server-update-available, exactly like packageName/currentVersion/latestVersion/count — only the shipped TEXT (system.server-update-available.body.onNodes) reads it today, but the var is real on both kinds.",
90768
- example: "hub, little-unraid",
92797
+ example: "hub, agent-a",
90769
92798
  group: "system",
90770
92799
  families: ["rule"],
90771
92800
  fields: [...RULE_TEXT],
@@ -90876,7 +92905,7 @@ var NC_TEMPLATE_VARS = [
90876
92905
  {
90877
92906
  name: "title",
90878
92907
  label: "Export or alert title",
90879
- example: "Ingresso 08:00",
92908
+ example: "Front door 08:00",
90880
92909
  group: "system",
90881
92910
  families: ["rule"],
90882
92911
  fields: [...RULE_TEXT],
@@ -90990,7 +93019,7 @@ var NC_TEMPLATE_VARS = [
90990
93019
  name: "names",
90991
93020
  label: "Device names",
90992
93021
  description: "Armed / arming: the Active devices (or every skipped name when none are Active). Refusal: the open sensors.",
90993
- example: "Ingresso, Garage",
93022
+ example: "Front door, Garage",
90994
93023
  group: "system",
90995
93024
  families: ["rule"],
90996
93025
  fields: [...RULE_TEXT],
@@ -91038,7 +93067,7 @@ var NC_TEMPLATE_VARS = [
91038
93067
  name: "bypassedNames",
91039
93068
  label: "Bypassed sensors",
91040
93069
  description: "Sensors the operator armed around because they were open.",
91041
- example: "Finestra veranda",
93070
+ example: "Finestra porch",
91042
93071
  group: "system",
91043
93072
  families: ["rule"],
91044
93073
  fields: [...RULE_TEXT],
@@ -92090,7 +94119,7 @@ var TimelapseRuleInputSchema = object({
92090
94119
  * The caption a rule that never set one gets.
92091
94120
  *
92092
94121
  * Rendered through the ordinary `{{var}}` pass at delivery, so a rule created
92093
- * before this field existed still reads "Timelapse Videocamera ingresso" and
94122
+ * before this field existed still reads "Timelapse Camera front door" and
92094
94123
  * not the literal braces.
92095
94124
  */
92096
94125
  var DEFAULT_TIMELAPSE_PREVIEW_TEXT = "Timelapse {{camera}}";
@@ -93286,6 +95315,12 @@ Object.defineProperty(exports, "BucketAccumulator", {
93286
95315
  return BucketAccumulator;
93287
95316
  }
93288
95317
  });
95318
+ Object.defineProperty(exports, "CAP_ADVANCE_FIELDS", {
95319
+ enumerable: true,
95320
+ get: function() {
95321
+ return CAP_ADVANCE_FIELDS;
95322
+ }
95323
+ });
93289
95324
  Object.defineProperty(exports, "CLIP_EMBEDDING_STEP_ID", {
93290
95325
  enumerable: true,
93291
95326
  get: function() {