@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.
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- //#region ../types/dist/event-category-Ceif8n-v.mjs
2
+ //#region ../types/dist/event-category-DHXxB8t9.mjs
3
3
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
4
4
  EventCategory["SystemBoot"] = "system.boot";
5
5
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -295,7 +295,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
295
295
  * TRANSITION into that state (never per dispatch), and the node is dropped
296
296
  * from the placement candidate set for as long as it holds.
297
297
  *
298
- * This exists because the state was previously invisible: little-unraid
298
+ * This exists because the state was previously invisible: agent-a
299
299
  * absorbed 283k inference errors in a day while still being handed cameras,
300
300
  * and nothing in the system said so.
301
301
  *
@@ -5632,7 +5632,7 @@ var ZodIssueCode = {
5632
5632
  var ZodFirstPartyTypeKind;
5633
5633
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5634
5634
  //#endregion
5635
- //#region ../types/dist/sleep-CYfIZzGv.mjs
5635
+ //#region ../types/dist/sleep-BErAxhul.mjs
5636
5636
  /**
5637
5637
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5638
5638
  * window to float samples (D455).
@@ -8882,6 +8882,1981 @@ method(object({ deviceId: number() }), array(StreamSourceEntrySchema)), method(o
8882
8882
  kind: "mutation",
8883
8883
  auth: "admin"
8884
8884
  }), method(object({ deviceId: number() }), unknown().nullable()), method(object({ deviceId: number() }), RawStateResultSchema.nullable(), { auth: "protected" });
8885
+ /** cap name -> the numeric state field whose strict advance IS the cap's one-shot event. */
8886
+ var CAP_ADVANCE_FIELDS = Object.freeze({ "doorbell": "lastPressedAt" });
8887
+ /** Every capability name, so addon code can check a name without the schema graph. */
8888
+ var CAP_NAMES = Object.freeze([
8889
+ "accessories",
8890
+ "addon-pages",
8891
+ "addon-pages-source",
8892
+ "addon-routes",
8893
+ "addon-settings",
8894
+ "addon-widgets",
8895
+ "addon-widgets-source",
8896
+ "addons",
8897
+ "admin-ui",
8898
+ "air-quality-sensor",
8899
+ "alarm-panel",
8900
+ "alerts",
8901
+ "ambient-light-sensor",
8902
+ "audio-analysis",
8903
+ "audio-analyzer",
8904
+ "audio-codec",
8905
+ "audio-metrics",
8906
+ "auth-provider",
8907
+ "automation-control",
8908
+ "backup",
8909
+ "battery",
8910
+ "binary",
8911
+ "brightness",
8912
+ "broker",
8913
+ "button",
8914
+ "calendar-source",
8915
+ "calendars",
8916
+ "camera-credentials",
8917
+ "camera-grid-layout",
8918
+ "camera-pipeline-config",
8919
+ "camera-streams",
8920
+ "carbon-monoxide",
8921
+ "climate-control",
8922
+ "color",
8923
+ "composer",
8924
+ "connection-test",
8925
+ "connectivity",
8926
+ "consumables",
8927
+ "contact",
8928
+ "control",
8929
+ "core-blocks",
8930
+ "cover",
8931
+ "custom-model-registry",
8932
+ "data-store-provider",
8933
+ "database-snapshot",
8934
+ "day-night",
8935
+ "decoder",
8936
+ "detection-pipeline",
8937
+ "device-admin-link",
8938
+ "device-adoption",
8939
+ "device-credentials",
8940
+ "device-discovery",
8941
+ "device-export",
8942
+ "device-extension",
8943
+ "device-history",
8944
+ "device-manager",
8945
+ "device-ops",
8946
+ "device-provider",
8947
+ "device-removal-hook",
8948
+ "device-state",
8949
+ "device-status",
8950
+ "dishwasher",
8951
+ "display-palette",
8952
+ "doorbell",
8953
+ "embedding-encoder",
8954
+ "enum-sensor",
8955
+ "event-emitter",
8956
+ "face-gallery",
8957
+ "failure-contribution",
8958
+ "fan-control",
8959
+ "feature-probe",
8960
+ "filesystem-browse",
8961
+ "flood",
8962
+ "gas",
8963
+ "heating-valve",
8964
+ "humidifier",
8965
+ "humidity-sensor",
8966
+ "image",
8967
+ "image-settings",
8968
+ "integrations",
8969
+ "intercom",
8970
+ "keychain",
8971
+ "keychain-admin",
8972
+ "lawn-mower-control",
8973
+ "llm",
8974
+ "llm-runtime",
8975
+ "load-contribution",
8976
+ "local-network",
8977
+ "lock-control",
8978
+ "log-channels",
8979
+ "log-destination",
8980
+ "login-method",
8981
+ "media-player",
8982
+ "mesh-network",
8983
+ "metrics-provider",
8984
+ "model-convert",
8985
+ "model-distributor",
8986
+ "motion",
8987
+ "motion-detection",
8988
+ "motion-trigger",
8989
+ "motion-zones",
8990
+ "mqtt-broker",
8991
+ "native-object-detection",
8992
+ "navigation",
8993
+ "network-access",
8994
+ "network-link",
8995
+ "network-quality",
8996
+ "node-certificates",
8997
+ "nodes",
8998
+ "notification-output",
8999
+ "notification-rules",
9000
+ "notifier",
9001
+ "numeric-sensor",
9002
+ "oauth-integration",
9003
+ "oidc-connections",
9004
+ "osd",
9005
+ "osd-manager",
9006
+ "pet-feeder",
9007
+ "pipeline-analytics",
9008
+ "pipeline-executor",
9009
+ "pipeline-orchestrator",
9010
+ "pipeline-runner",
9011
+ "plate-gallery",
9012
+ "platform-probe",
9013
+ "power-meter",
9014
+ "presence",
9015
+ "pressure-sensor",
9016
+ "privacy-mask",
9017
+ "ptz",
9018
+ "ptz-autotrack",
9019
+ "reboot",
9020
+ "record-entries",
9021
+ "recording",
9022
+ "recording-archive",
9023
+ "recording-export",
9024
+ "recording-onboard",
9025
+ "recording-signal",
9026
+ "records",
9027
+ "running-state",
9028
+ "scene-monitor",
9029
+ "script-runner",
9030
+ "server-management",
9031
+ "settings-store",
9032
+ "smoke",
9033
+ "smtp-provider",
9034
+ "snapshot",
9035
+ "sso-bridge",
9036
+ "storage",
9037
+ "storage-admin",
9038
+ "storage-evictable",
9039
+ "storage-migration",
9040
+ "storage-occupancy",
9041
+ "storage-provider",
9042
+ "stream-broker",
9043
+ "stream-catalog",
9044
+ "stream-params",
9045
+ "stream-signals",
9046
+ "switch",
9047
+ "system",
9048
+ "tamper",
9049
+ "temperature-sensor",
9050
+ "terminal-session",
9051
+ "toast",
9052
+ "training",
9053
+ "training-provider",
9054
+ "turn-provider",
9055
+ "update",
9056
+ "user-management",
9057
+ "user-passkeys",
9058
+ "vacuum-control",
9059
+ "valve",
9060
+ "vector-store",
9061
+ "vibration",
9062
+ "videoclips",
9063
+ "viewer-ui",
9064
+ "water-heater",
9065
+ "weather",
9066
+ "webrtc-session",
9067
+ "zone-analytics",
9068
+ "zone-rules",
9069
+ "zones"
9070
+ ]);
9071
+ Object.freeze({
9072
+ "air-quality-sensor": [
9073
+ {
9074
+ "path": "co2Ppm",
9075
+ "valueType": "number"
9076
+ },
9077
+ {
9078
+ "path": "vocPpb",
9079
+ "valueType": "number"
9080
+ },
9081
+ {
9082
+ "path": "pm25",
9083
+ "valueType": "number"
9084
+ },
9085
+ {
9086
+ "path": "pm10",
9087
+ "valueType": "number"
9088
+ },
9089
+ {
9090
+ "path": "aqi",
9091
+ "valueType": "number"
9092
+ },
9093
+ {
9094
+ "path": "unit",
9095
+ "valueType": "string"
9096
+ },
9097
+ {
9098
+ "path": "precision",
9099
+ "valueType": "number"
9100
+ }
9101
+ ],
9102
+ "alarm-panel": [
9103
+ {
9104
+ "path": "state",
9105
+ "valueType": "enum",
9106
+ "enumValues": [
9107
+ "disarmed",
9108
+ "armed_home",
9109
+ "armed_away",
9110
+ "armed_night",
9111
+ "armed_vacation",
9112
+ "armed_custom_bypass",
9113
+ "arming",
9114
+ "disarming",
9115
+ "pending",
9116
+ "triggered"
9117
+ ]
9118
+ },
9119
+ {
9120
+ "path": "targetMode",
9121
+ "valueType": "enum",
9122
+ "enumValues": [
9123
+ "home",
9124
+ "away",
9125
+ "night",
9126
+ "vacation",
9127
+ "custom_bypass"
9128
+ ]
9129
+ },
9130
+ {
9131
+ "path": "requiresCode",
9132
+ "valueType": "boolean"
9133
+ }
9134
+ ],
9135
+ "ambient-light-sensor": [
9136
+ {
9137
+ "path": "lux",
9138
+ "valueType": "number"
9139
+ },
9140
+ {
9141
+ "path": "unit",
9142
+ "valueType": "string"
9143
+ },
9144
+ {
9145
+ "path": "precision",
9146
+ "valueType": "number"
9147
+ }
9148
+ ],
9149
+ "audio-metrics": [
9150
+ {
9151
+ "path": "ts",
9152
+ "valueType": "number"
9153
+ },
9154
+ {
9155
+ "path": "windowSec",
9156
+ "valueType": "number"
9157
+ },
9158
+ {
9159
+ "path": "level.rms",
9160
+ "valueType": "number"
9161
+ },
9162
+ {
9163
+ "path": "level.dbfs",
9164
+ "valueType": "number"
9165
+ },
9166
+ {
9167
+ "path": "peakDbfs",
9168
+ "valueType": "number"
9169
+ },
9170
+ {
9171
+ "path": "avgDbfs",
9172
+ "valueType": "number"
9173
+ },
9174
+ {
9175
+ "path": "current.className",
9176
+ "valueType": "string"
9177
+ },
9178
+ {
9179
+ "path": "current.score",
9180
+ "valueType": "number"
9181
+ },
9182
+ {
9183
+ "path": "current.timestamp",
9184
+ "valueType": "number"
9185
+ }
9186
+ ],
9187
+ "automation-control": [
9188
+ {
9189
+ "path": "enabled",
9190
+ "valueType": "boolean"
9191
+ },
9192
+ {
9193
+ "path": "isRunning",
9194
+ "valueType": "boolean"
9195
+ },
9196
+ {
9197
+ "path": "lastTriggeredAt",
9198
+ "valueType": "number"
9199
+ },
9200
+ {
9201
+ "path": "lastError",
9202
+ "valueType": "string"
9203
+ }
9204
+ ],
9205
+ "battery": [
9206
+ {
9207
+ "path": "percentage",
9208
+ "valueType": "number"
9209
+ },
9210
+ {
9211
+ "path": "charging",
9212
+ "valueType": "enum",
9213
+ "enumValues": [
9214
+ "dc",
9215
+ "solar",
9216
+ "none",
9217
+ "unknown"
9218
+ ]
9219
+ },
9220
+ {
9221
+ "path": "sleeping",
9222
+ "valueType": "boolean"
9223
+ },
9224
+ {
9225
+ "path": "lastUpdated",
9226
+ "valueType": "number"
9227
+ },
9228
+ {
9229
+ "path": "lastContactAt",
9230
+ "valueType": "number"
9231
+ },
9232
+ {
9233
+ "path": "lastFullRefreshAt",
9234
+ "valueType": "number"
9235
+ },
9236
+ {
9237
+ "path": "binary",
9238
+ "valueType": "boolean"
9239
+ }
9240
+ ],
9241
+ "binary": [{
9242
+ "path": "on",
9243
+ "valueType": "boolean"
9244
+ }],
9245
+ "brightness": [{
9246
+ "path": "percentage",
9247
+ "valueType": "number"
9248
+ }],
9249
+ "broker": [{
9250
+ "path": "brokerCount",
9251
+ "valueType": "number"
9252
+ }, {
9253
+ "path": "connectedCount",
9254
+ "valueType": "number"
9255
+ }],
9256
+ "camera-credentials": [
9257
+ {
9258
+ "path": "host",
9259
+ "valueType": "string"
9260
+ },
9261
+ {
9262
+ "path": "port",
9263
+ "valueType": "number"
9264
+ },
9265
+ {
9266
+ "path": "onvifPort",
9267
+ "valueType": "number"
9268
+ },
9269
+ {
9270
+ "path": "rtspPort",
9271
+ "valueType": "number"
9272
+ },
9273
+ {
9274
+ "path": "https",
9275
+ "valueType": "boolean"
9276
+ },
9277
+ {
9278
+ "path": "hasUsername",
9279
+ "valueType": "boolean"
9280
+ },
9281
+ {
9282
+ "path": "hasPassword",
9283
+ "valueType": "boolean"
9284
+ },
9285
+ {
9286
+ "path": "onvifProfile",
9287
+ "valueType": "string"
9288
+ }
9289
+ ],
9290
+ "camera-streams": [
9291
+ {
9292
+ "path": "online",
9293
+ "valueType": "boolean"
9294
+ },
9295
+ {
9296
+ "path": "slotStatuses.high",
9297
+ "valueType": "enum",
9298
+ "enumValues": [
9299
+ "unassigned",
9300
+ "idle",
9301
+ "connecting",
9302
+ "streaming",
9303
+ "error"
9304
+ ]
9305
+ },
9306
+ {
9307
+ "path": "slotStatuses.mid",
9308
+ "valueType": "enum",
9309
+ "enumValues": [
9310
+ "unassigned",
9311
+ "idle",
9312
+ "connecting",
9313
+ "streaming",
9314
+ "error"
9315
+ ]
9316
+ },
9317
+ {
9318
+ "path": "slotStatuses.low",
9319
+ "valueType": "enum",
9320
+ "enumValues": [
9321
+ "unassigned",
9322
+ "idle",
9323
+ "connecting",
9324
+ "streaming",
9325
+ "error"
9326
+ ]
9327
+ },
9328
+ {
9329
+ "path": "slotErrors.high",
9330
+ "valueType": "string"
9331
+ },
9332
+ {
9333
+ "path": "slotErrors.mid",
9334
+ "valueType": "string"
9335
+ },
9336
+ {
9337
+ "path": "slotErrors.low",
9338
+ "valueType": "string"
9339
+ }
9340
+ ],
9341
+ "carbon-monoxide": [{
9342
+ "path": "detected",
9343
+ "valueType": "boolean"
9344
+ }],
9345
+ "climate-control": [
9346
+ {
9347
+ "path": "mode",
9348
+ "valueType": "enum",
9349
+ "enumValues": [
9350
+ "off",
9351
+ "heat",
9352
+ "cool",
9353
+ "auto",
9354
+ "heat_cool",
9355
+ "fan_only",
9356
+ "dry"
9357
+ ]
9358
+ },
9359
+ {
9360
+ "path": "fanMode",
9361
+ "valueType": "string"
9362
+ },
9363
+ {
9364
+ "path": "preset",
9365
+ "valueType": "string"
9366
+ },
9367
+ {
9368
+ "path": "target",
9369
+ "valueType": "number"
9370
+ },
9371
+ {
9372
+ "path": "targetHigh",
9373
+ "valueType": "number"
9374
+ },
9375
+ {
9376
+ "path": "targetLow",
9377
+ "valueType": "number"
9378
+ },
9379
+ {
9380
+ "path": "targetHumidity",
9381
+ "valueType": "number"
9382
+ },
9383
+ {
9384
+ "path": "currentTemp",
9385
+ "valueType": "number"
9386
+ },
9387
+ {
9388
+ "path": "currentHumidity",
9389
+ "valueType": "number"
9390
+ },
9391
+ {
9392
+ "path": "swingVertical",
9393
+ "valueType": "boolean"
9394
+ },
9395
+ {
9396
+ "path": "swingHorizontal",
9397
+ "valueType": "boolean"
9398
+ },
9399
+ {
9400
+ "path": "minTemp",
9401
+ "valueType": "number"
9402
+ },
9403
+ {
9404
+ "path": "maxTemp",
9405
+ "valueType": "number"
9406
+ },
9407
+ {
9408
+ "path": "tempStep",
9409
+ "valueType": "number"
9410
+ }
9411
+ ],
9412
+ "color": [
9413
+ {
9414
+ "path": "mode",
9415
+ "valueType": "enum",
9416
+ "enumValues": [
9417
+ "rgb",
9418
+ "hsv",
9419
+ "mired"
9420
+ ]
9421
+ },
9422
+ {
9423
+ "path": "rgb.r",
9424
+ "valueType": "number"
9425
+ },
9426
+ {
9427
+ "path": "rgb.g",
9428
+ "valueType": "number"
9429
+ },
9430
+ {
9431
+ "path": "rgb.b",
9432
+ "valueType": "number"
9433
+ },
9434
+ {
9435
+ "path": "hsv.h",
9436
+ "valueType": "number"
9437
+ },
9438
+ {
9439
+ "path": "hsv.s",
9440
+ "valueType": "number"
9441
+ },
9442
+ {
9443
+ "path": "hsv.v",
9444
+ "valueType": "number"
9445
+ },
9446
+ {
9447
+ "path": "mireds",
9448
+ "valueType": "number"
9449
+ }
9450
+ ],
9451
+ "connectivity": [{
9452
+ "path": "connected",
9453
+ "valueType": "boolean"
9454
+ }],
9455
+ "contact": [{
9456
+ "path": "entryOpen",
9457
+ "valueType": "boolean"
9458
+ }],
9459
+ "control": [
9460
+ {
9461
+ "path": "kind",
9462
+ "valueType": "enum",
9463
+ "enumValues": [
9464
+ "numeric",
9465
+ "select",
9466
+ "text",
9467
+ "datetime"
9468
+ ]
9469
+ },
9470
+ {
9471
+ "path": "unit",
9472
+ "valueType": "string"
9473
+ },
9474
+ {
9475
+ "path": "min",
9476
+ "valueType": "number"
9477
+ },
9478
+ {
9479
+ "path": "max",
9480
+ "valueType": "number"
9481
+ },
9482
+ {
9483
+ "path": "step",
9484
+ "valueType": "number"
9485
+ },
9486
+ {
9487
+ "path": "precision",
9488
+ "valueType": "number"
9489
+ },
9490
+ {
9491
+ "path": "format",
9492
+ "valueType": "enum",
9493
+ "enumValues": [
9494
+ "date",
9495
+ "time",
9496
+ "datetime"
9497
+ ]
9498
+ }
9499
+ ],
9500
+ "cover": [
9501
+ {
9502
+ "path": "state",
9503
+ "valueType": "enum",
9504
+ "enumValues": [
9505
+ "open",
9506
+ "opening",
9507
+ "closing",
9508
+ "closed",
9509
+ "stopped"
9510
+ ]
9511
+ },
9512
+ {
9513
+ "path": "position",
9514
+ "valueType": "number"
9515
+ },
9516
+ {
9517
+ "path": "tiltPosition",
9518
+ "valueType": "number"
9519
+ }
9520
+ ],
9521
+ "day-night": [
9522
+ {
9523
+ "path": "mode",
9524
+ "valueType": "enum",
9525
+ "enumValues": [
9526
+ "auto",
9527
+ "day",
9528
+ "night",
9529
+ "schedule"
9530
+ ]
9531
+ },
9532
+ {
9533
+ "path": "sensitivity",
9534
+ "valueType": "number"
9535
+ },
9536
+ {
9537
+ "path": "switchDelaySec",
9538
+ "valueType": "number"
9539
+ }
9540
+ ],
9541
+ "device-adoption": [
9542
+ {
9543
+ "path": "lastDiscoveryAt",
9544
+ "valueType": "number"
9545
+ },
9546
+ {
9547
+ "path": "candidateCount",
9548
+ "valueType": "number"
9549
+ },
9550
+ {
9551
+ "path": "adoptedCount",
9552
+ "valueType": "number"
9553
+ },
9554
+ {
9555
+ "path": "lastError",
9556
+ "valueType": "string"
9557
+ }
9558
+ ],
9559
+ "device-discovery": [{
9560
+ "path": "lastDiscoveryAt",
9561
+ "valueType": "number"
9562
+ }, {
9563
+ "path": "lastError",
9564
+ "valueType": "string"
9565
+ }],
9566
+ "device-export": [
9567
+ {
9568
+ "path": "linkState",
9569
+ "valueType": "enum",
9570
+ "enumValues": [
9571
+ "unlinked",
9572
+ "linked",
9573
+ "error"
9574
+ ]
9575
+ },
9576
+ {
9577
+ "path": "exposedDeviceCount",
9578
+ "valueType": "number"
9579
+ },
9580
+ {
9581
+ "path": "error",
9582
+ "valueType": "string"
9583
+ },
9584
+ {
9585
+ "path": "setup.qr",
9586
+ "valueType": "string"
9587
+ },
9588
+ {
9589
+ "path": "setup.note",
9590
+ "valueType": "string"
9591
+ }
9592
+ ],
9593
+ "device-status": [{
9594
+ "path": "online",
9595
+ "valueType": "boolean"
9596
+ }],
9597
+ "dishwasher": [
9598
+ {
9599
+ "path": "availability",
9600
+ "valueType": "enum",
9601
+ "enumValues": [
9602
+ "available",
9603
+ "offline",
9604
+ "description-missing"
9605
+ ]
9606
+ },
9607
+ {
9608
+ "path": "state",
9609
+ "valueType": "enum",
9610
+ "enumValues": [
9611
+ "idle",
9612
+ "running",
9613
+ "paused",
9614
+ "finished",
9615
+ "error",
9616
+ "unavailable"
9617
+ ]
9618
+ },
9619
+ {
9620
+ "path": "operationState",
9621
+ "valueType": "enum",
9622
+ "enumValues": [
9623
+ "Inactive",
9624
+ "Ready",
9625
+ "DelayedStart",
9626
+ "Run",
9627
+ "Pause",
9628
+ "ActionRequired",
9629
+ "Finished",
9630
+ "Error",
9631
+ "Aborting"
9632
+ ]
9633
+ },
9634
+ {
9635
+ "path": "program",
9636
+ "valueType": "string"
9637
+ },
9638
+ {
9639
+ "path": "selectedProgram",
9640
+ "valueType": "string"
9641
+ },
9642
+ {
9643
+ "path": "remainingSeconds",
9644
+ "valueType": "number"
9645
+ },
9646
+ {
9647
+ "path": "delayedStartSeconds",
9648
+ "valueType": "number"
9649
+ },
9650
+ {
9651
+ "path": "progressPercent",
9652
+ "valueType": "number"
9653
+ },
9654
+ {
9655
+ "path": "doorOpen",
9656
+ "valueType": "boolean"
9657
+ },
9658
+ {
9659
+ "path": "doorLocked",
9660
+ "valueType": "boolean"
9661
+ },
9662
+ {
9663
+ "path": "remoteStartAllowed",
9664
+ "valueType": "boolean"
9665
+ },
9666
+ {
9667
+ "path": "remoteControlActive",
9668
+ "valueType": "boolean"
9669
+ },
9670
+ {
9671
+ "path": "localControlActive",
9672
+ "valueType": "boolean"
9673
+ },
9674
+ {
9675
+ "path": "powerOn",
9676
+ "valueType": "boolean"
9677
+ },
9678
+ {
9679
+ "path": "powerState",
9680
+ "valueType": "string"
9681
+ },
9682
+ {
9683
+ "path": "filterCleaningDue",
9684
+ "valueType": "boolean"
9685
+ },
9686
+ {
9687
+ "path": "machineCareDue",
9688
+ "valueType": "boolean"
9689
+ },
9690
+ {
9691
+ "path": "machineCareRemainingRuns",
9692
+ "valueType": "number"
9693
+ },
9694
+ {
9695
+ "path": "halfLoad",
9696
+ "valueType": "boolean"
9697
+ },
9698
+ {
9699
+ "path": "hygienePlus",
9700
+ "valueType": "boolean"
9701
+ },
9702
+ {
9703
+ "path": "extraDry",
9704
+ "valueType": "boolean"
9705
+ },
9706
+ {
9707
+ "path": "intensiveZone",
9708
+ "valueType": "boolean"
9709
+ },
9710
+ {
9711
+ "path": "varioSpeedPlus",
9712
+ "valueType": "boolean"
9713
+ },
9714
+ {
9715
+ "path": "childLock",
9716
+ "valueType": "boolean"
9717
+ },
9718
+ {
9719
+ "path": "errorCode",
9720
+ "valueType": "number"
9721
+ },
9722
+ {
9723
+ "path": "errorLabel",
9724
+ "valueType": "string"
9725
+ }
9726
+ ],
9727
+ "doorbell": [{
9728
+ "path": "lastPressedAt",
9729
+ "valueType": "number"
9730
+ }, {
9731
+ "path": "pressCountSinceStart",
9732
+ "valueType": "number"
9733
+ }],
9734
+ "enum-sensor": [{
9735
+ "path": "value",
9736
+ "valueType": "string"
9737
+ }, {
9738
+ "path": "format",
9739
+ "valueType": "enum",
9740
+ "enumValues": [
9741
+ "date",
9742
+ "time",
9743
+ "datetime"
9744
+ ]
9745
+ }],
9746
+ "event-emitter": [
9747
+ {
9748
+ "path": "lastEvent.deviceId",
9749
+ "valueType": "number"
9750
+ },
9751
+ {
9752
+ "path": "lastEvent.eventType",
9753
+ "valueType": "string"
9754
+ },
9755
+ {
9756
+ "path": "lastEvent.timestamp",
9757
+ "valueType": "number"
9758
+ },
9759
+ {
9760
+ "path": "lastEvent.seq",
9761
+ "valueType": "number"
9762
+ },
9763
+ {
9764
+ "path": "eventCountSinceStart",
9765
+ "valueType": "number"
9766
+ }
9767
+ ],
9768
+ "fan-control": [
9769
+ {
9770
+ "path": "percentage",
9771
+ "valueType": "number"
9772
+ },
9773
+ {
9774
+ "path": "percentageStep",
9775
+ "valueType": "number"
9776
+ },
9777
+ {
9778
+ "path": "preset",
9779
+ "valueType": "string"
9780
+ },
9781
+ {
9782
+ "path": "direction",
9783
+ "valueType": "enum",
9784
+ "enumValues": ["forward", "reverse"]
9785
+ },
9786
+ {
9787
+ "path": "oscillating",
9788
+ "valueType": "boolean"
9789
+ }
9790
+ ],
9791
+ "feature-probe": [
9792
+ {
9793
+ "path": "deviceType",
9794
+ "valueType": "string"
9795
+ },
9796
+ {
9797
+ "path": "model",
9798
+ "valueType": "string"
9799
+ },
9800
+ {
9801
+ "path": "channelCount",
9802
+ "valueType": "number"
9803
+ },
9804
+ {
9805
+ "path": "lastProbedAt",
9806
+ "valueType": "number"
9807
+ }
9808
+ ],
9809
+ "flood": [{
9810
+ "path": "flooded",
9811
+ "valueType": "boolean"
9812
+ }],
9813
+ "gas": [{
9814
+ "path": "detected",
9815
+ "valueType": "boolean"
9816
+ }],
9817
+ "heating-valve": [{
9818
+ "path": "position",
9819
+ "valueType": "number"
9820
+ }],
9821
+ "humidifier": [
9822
+ {
9823
+ "path": "on",
9824
+ "valueType": "boolean"
9825
+ },
9826
+ {
9827
+ "path": "currentHumidity",
9828
+ "valueType": "number"
9829
+ },
9830
+ {
9831
+ "path": "targetHumidity",
9832
+ "valueType": "number"
9833
+ },
9834
+ {
9835
+ "path": "mode",
9836
+ "valueType": "string"
9837
+ },
9838
+ {
9839
+ "path": "action",
9840
+ "valueType": "string"
9841
+ },
9842
+ {
9843
+ "path": "minHumidity",
9844
+ "valueType": "number"
9845
+ },
9846
+ {
9847
+ "path": "maxHumidity",
9848
+ "valueType": "number"
9849
+ }
9850
+ ],
9851
+ "humidity-sensor": [
9852
+ {
9853
+ "path": "percent",
9854
+ "valueType": "number"
9855
+ },
9856
+ {
9857
+ "path": "unit",
9858
+ "valueType": "string"
9859
+ },
9860
+ {
9861
+ "path": "precision",
9862
+ "valueType": "number"
9863
+ }
9864
+ ],
9865
+ "image": [{
9866
+ "path": "url",
9867
+ "valueType": "string"
9868
+ }, {
9869
+ "path": "lastUpdated",
9870
+ "valueType": "number"
9871
+ }],
9872
+ "image-settings": [
9873
+ {
9874
+ "path": "brightness",
9875
+ "valueType": "number"
9876
+ },
9877
+ {
9878
+ "path": "contrast",
9879
+ "valueType": "number"
9880
+ },
9881
+ {
9882
+ "path": "saturation",
9883
+ "valueType": "number"
9884
+ },
9885
+ {
9886
+ "path": "sharpness",
9887
+ "valueType": "number"
9888
+ },
9889
+ {
9890
+ "path": "mirror",
9891
+ "valueType": "boolean"
9892
+ },
9893
+ {
9894
+ "path": "flip",
9895
+ "valueType": "boolean"
9896
+ },
9897
+ {
9898
+ "path": "rotate",
9899
+ "valueType": "enum",
9900
+ "enumValues": [
9901
+ "0",
9902
+ "90",
9903
+ "180",
9904
+ "270"
9905
+ ]
9906
+ },
9907
+ {
9908
+ "path": "whiteBalance",
9909
+ "valueType": "enum",
9910
+ "enumValues": ["auto", "manual"]
9911
+ },
9912
+ {
9913
+ "path": "warmth",
9914
+ "valueType": "number"
9915
+ },
9916
+ {
9917
+ "path": "exposureMode",
9918
+ "valueType": "enum",
9919
+ "enumValues": ["auto", "manual"]
9920
+ },
9921
+ {
9922
+ "path": "backlightMode",
9923
+ "valueType": "enum",
9924
+ "enumValues": [
9925
+ "off",
9926
+ "blc",
9927
+ "wdr",
9928
+ "hlc"
9929
+ ]
9930
+ }
9931
+ ],
9932
+ "intercom": [
9933
+ {
9934
+ "path": "talking",
9935
+ "valueType": "boolean"
9936
+ },
9937
+ {
9938
+ "path": "lastSessionAt",
9939
+ "valueType": "number"
9940
+ },
9941
+ {
9942
+ "path": "ability.sampleRate",
9943
+ "valueType": "number"
9944
+ },
9945
+ {
9946
+ "path": "ability.duplex",
9947
+ "valueType": "enum",
9948
+ "enumValues": ["half", "full"]
9949
+ },
9950
+ {
9951
+ "path": "ability.maxBacklogMs",
9952
+ "valueType": "number"
9953
+ }
9954
+ ],
9955
+ "lawn-mower-control": [
9956
+ {
9957
+ "path": "activity",
9958
+ "valueType": "enum",
9959
+ "enumValues": [
9960
+ "idle",
9961
+ "mowing",
9962
+ "paused",
9963
+ "docked",
9964
+ "error"
9965
+ ]
9966
+ },
9967
+ {
9968
+ "path": "batteryLevel",
9969
+ "valueType": "number"
9970
+ },
9971
+ {
9972
+ "path": "progressPercent",
9973
+ "valueType": "number"
9974
+ },
9975
+ {
9976
+ "path": "currentCode",
9977
+ "valueType": "number"
9978
+ },
9979
+ {
9980
+ "path": "currentCodeLabel",
9981
+ "valueType": "string"
9982
+ },
9983
+ {
9984
+ "path": "severity",
9985
+ "valueType": "enum",
9986
+ "enumValues": [
9987
+ "info",
9988
+ "warning",
9989
+ "error"
9990
+ ]
9991
+ }
9992
+ ],
9993
+ "lock-control": [{
9994
+ "path": "state",
9995
+ "valueType": "enum",
9996
+ "enumValues": [
9997
+ "locked",
9998
+ "unlocked",
9999
+ "locking",
10000
+ "unlocking",
10001
+ "jammed"
10002
+ ]
10003
+ }],
10004
+ "media-player": [
10005
+ {
10006
+ "path": "state",
10007
+ "valueType": "enum",
10008
+ "enumValues": [
10009
+ "off",
10010
+ "on",
10011
+ "idle",
10012
+ "playing",
10013
+ "paused",
10014
+ "buffering",
10015
+ "standby"
10016
+ ]
10017
+ },
10018
+ {
10019
+ "path": "volumeLevel",
10020
+ "valueType": "number"
10021
+ },
10022
+ {
10023
+ "path": "isMuted",
10024
+ "valueType": "boolean"
10025
+ },
10026
+ {
10027
+ "path": "source",
10028
+ "valueType": "string"
10029
+ },
10030
+ {
10031
+ "path": "currentMedia.type",
10032
+ "valueType": "string"
10033
+ },
10034
+ {
10035
+ "path": "currentMedia.title",
10036
+ "valueType": "string"
10037
+ },
10038
+ {
10039
+ "path": "currentMedia.artist",
10040
+ "valueType": "string"
10041
+ },
10042
+ {
10043
+ "path": "currentMedia.album",
10044
+ "valueType": "string"
10045
+ },
10046
+ {
10047
+ "path": "currentMedia.imageUrl",
10048
+ "valueType": "string"
10049
+ },
10050
+ {
10051
+ "path": "positionMs",
10052
+ "valueType": "number"
10053
+ },
10054
+ {
10055
+ "path": "durationMs",
10056
+ "valueType": "number"
10057
+ },
10058
+ {
10059
+ "path": "shuffle",
10060
+ "valueType": "boolean"
10061
+ },
10062
+ {
10063
+ "path": "repeat",
10064
+ "valueType": "enum",
10065
+ "enumValues": [
10066
+ "off",
10067
+ "all",
10068
+ "one"
10069
+ ]
10070
+ }
10071
+ ],
10072
+ "motion": [
10073
+ {
10074
+ "path": "detected",
10075
+ "valueType": "boolean"
10076
+ },
10077
+ {
10078
+ "path": "lastDetectedAt",
10079
+ "valueType": "number"
10080
+ },
10081
+ {
10082
+ "path": "autoClearAfterMs",
10083
+ "valueType": "number"
10084
+ }
10085
+ ],
10086
+ "motion-trigger": [{
10087
+ "path": "enabled",
10088
+ "valueType": "boolean"
10089
+ }],
10090
+ "motion-zones": [{
10091
+ "path": "enabled",
10092
+ "valueType": "boolean"
10093
+ }, {
10094
+ "path": "sensitivity",
10095
+ "valueType": "number"
10096
+ }],
10097
+ "mqtt-broker": [{
10098
+ "path": "brokerCount",
10099
+ "valueType": "number"
10100
+ }, {
10101
+ "path": "embeddedRunning",
10102
+ "valueType": "boolean"
10103
+ }],
10104
+ "native-object-detection": [{
10105
+ "path": "enabled",
10106
+ "valueType": "boolean"
10107
+ }],
10108
+ "navigation": [
10109
+ {
10110
+ "path": "mode",
10111
+ "valueType": "enum",
10112
+ "enumValues": [
10113
+ "idle",
10114
+ "cleaning",
10115
+ "spot",
10116
+ "following",
10117
+ "goto",
10118
+ "returning",
10119
+ "paused",
10120
+ "unknown"
10121
+ ]
10122
+ },
10123
+ {
10124
+ "path": "following",
10125
+ "valueType": "boolean"
10126
+ },
10127
+ {
10128
+ "path": "flash",
10129
+ "valueType": "boolean"
10130
+ },
10131
+ {
10132
+ "path": "lightMode",
10133
+ "valueType": "enum",
10134
+ "enumValues": ["auto", "manual"]
10135
+ },
10136
+ {
10137
+ "path": "lightLevel",
10138
+ "valueType": "number"
10139
+ }
10140
+ ],
10141
+ "network-link": [
10142
+ {
10143
+ "path": "type",
10144
+ "valueType": "enum",
10145
+ "enumValues": [
10146
+ "wifi",
10147
+ "ethernet",
10148
+ "cellular",
10149
+ "unknown"
10150
+ ]
10151
+ },
10152
+ {
10153
+ "path": "signalPercent",
10154
+ "valueType": "number"
10155
+ },
10156
+ {
10157
+ "path": "rssiDbm",
10158
+ "valueType": "number"
10159
+ },
10160
+ {
10161
+ "path": "ssid",
10162
+ "valueType": "string"
10163
+ },
10164
+ {
10165
+ "path": "lastUpdated",
10166
+ "valueType": "number"
10167
+ }
10168
+ ],
10169
+ "notifier": [
10170
+ {
10171
+ "path": "lastSentAt",
10172
+ "valueType": "number"
10173
+ },
10174
+ {
10175
+ "path": "lastError",
10176
+ "valueType": "string"
10177
+ },
10178
+ {
10179
+ "path": "queueDepth",
10180
+ "valueType": "number"
10181
+ },
10182
+ {
10183
+ "path": "supports.image",
10184
+ "valueType": "boolean"
10185
+ },
10186
+ {
10187
+ "path": "supports.priority",
10188
+ "valueType": "boolean"
10189
+ },
10190
+ {
10191
+ "path": "supports.data",
10192
+ "valueType": "boolean"
10193
+ },
10194
+ {
10195
+ "path": "supports.actions",
10196
+ "valueType": "boolean"
10197
+ },
10198
+ {
10199
+ "path": "supports.recipients",
10200
+ "valueType": "boolean"
10201
+ }
10202
+ ],
10203
+ "numeric-sensor": [
10204
+ {
10205
+ "path": "value",
10206
+ "valueType": "number"
10207
+ },
10208
+ {
10209
+ "path": "unit",
10210
+ "valueType": "string"
10211
+ },
10212
+ {
10213
+ "path": "precision",
10214
+ "valueType": "number"
10215
+ }
10216
+ ],
10217
+ "pet-feeder": [
10218
+ {
10219
+ "path": "foodLevel",
10220
+ "valueType": "number"
10221
+ },
10222
+ {
10223
+ "path": "food1",
10224
+ "valueType": "number"
10225
+ },
10226
+ {
10227
+ "path": "food2",
10228
+ "valueType": "number"
10229
+ },
10230
+ {
10231
+ "path": "lowFood",
10232
+ "valueType": "boolean"
10233
+ },
10234
+ {
10235
+ "path": "batteryPower",
10236
+ "valueType": "number"
10237
+ },
10238
+ {
10239
+ "path": "desiccantLeftDays",
10240
+ "valueType": "number"
10241
+ },
10242
+ {
10243
+ "path": "feeding",
10244
+ "valueType": "boolean"
10245
+ },
10246
+ {
10247
+ "path": "status",
10248
+ "valueType": "enum",
10249
+ "enumValues": [
10250
+ "normal",
10251
+ "offline",
10252
+ "on_batteries"
10253
+ ]
10254
+ },
10255
+ {
10256
+ "path": "error",
10257
+ "valueType": "string"
10258
+ },
10259
+ {
10260
+ "path": "errorCode",
10261
+ "valueType": "number"
10262
+ },
10263
+ {
10264
+ "path": "isDualHopper",
10265
+ "valueType": "boolean"
10266
+ },
10267
+ {
10268
+ "path": "childLock",
10269
+ "valueType": "boolean"
10270
+ },
10271
+ {
10272
+ "path": "indicatorLight",
10273
+ "valueType": "boolean"
10274
+ },
10275
+ {
10276
+ "path": "feedSound",
10277
+ "valueType": "boolean"
10278
+ },
10279
+ {
10280
+ "path": "volume",
10281
+ "valueType": "number"
10282
+ }
10283
+ ],
10284
+ "power-meter": [
10285
+ {
10286
+ "path": "watts",
10287
+ "valueType": "number"
10288
+ },
10289
+ {
10290
+ "path": "kwhTotal",
10291
+ "valueType": "number"
10292
+ },
10293
+ {
10294
+ "path": "volts",
10295
+ "valueType": "number"
10296
+ },
10297
+ {
10298
+ "path": "amps",
10299
+ "valueType": "number"
10300
+ },
10301
+ {
10302
+ "path": "va",
10303
+ "valueType": "number"
10304
+ },
10305
+ {
10306
+ "path": "powerFactor",
10307
+ "valueType": "number"
10308
+ },
10309
+ {
10310
+ "path": "unit",
10311
+ "valueType": "string"
10312
+ },
10313
+ {
10314
+ "path": "precision",
10315
+ "valueType": "number"
10316
+ }
10317
+ ],
10318
+ "presence": [
10319
+ {
10320
+ "path": "state",
10321
+ "valueType": "string"
10322
+ },
10323
+ {
10324
+ "path": "location",
10325
+ "valueType": "string"
10326
+ },
10327
+ {
10328
+ "path": "gps.latitude",
10329
+ "valueType": "number"
10330
+ },
10331
+ {
10332
+ "path": "gps.longitude",
10333
+ "valueType": "number"
10334
+ },
10335
+ {
10336
+ "path": "gps.accuracyMeters",
10337
+ "valueType": "number"
10338
+ },
10339
+ {
10340
+ "path": "batteryPercent",
10341
+ "valueType": "number"
10342
+ }
10343
+ ],
10344
+ "pressure-sensor": [
10345
+ {
10346
+ "path": "hpa",
10347
+ "valueType": "number"
10348
+ },
10349
+ {
10350
+ "path": "unit",
10351
+ "valueType": "string"
10352
+ },
10353
+ {
10354
+ "path": "precision",
10355
+ "valueType": "number"
10356
+ }
10357
+ ],
10358
+ "privacy-mask": [{
10359
+ "path": "enabled",
10360
+ "valueType": "boolean"
10361
+ }, {
10362
+ "path": "audioEnabled",
10363
+ "valueType": "boolean"
10364
+ }],
10365
+ "ptz": [
10366
+ {
10367
+ "path": "pan",
10368
+ "valueType": "number"
10369
+ },
10370
+ {
10371
+ "path": "tilt",
10372
+ "valueType": "number"
10373
+ },
10374
+ {
10375
+ "path": "zoom",
10376
+ "valueType": "number"
10377
+ },
10378
+ {
10379
+ "path": "autofocus",
10380
+ "valueType": "boolean"
10381
+ }
10382
+ ],
10383
+ "ptz-autotrack": [
10384
+ {
10385
+ "path": "enabled",
10386
+ "valueType": "boolean"
10387
+ },
10388
+ {
10389
+ "path": "currentSettings.targetType",
10390
+ "valueType": "string"
10391
+ },
10392
+ {
10393
+ "path": "currentSettings.stopDelaySeconds",
10394
+ "valueType": "number"
10395
+ },
10396
+ {
10397
+ "path": "currentSettings.disappearDelaySeconds",
10398
+ "valueType": "number"
10399
+ }
10400
+ ],
10401
+ "recording-archive": [
10402
+ {
10403
+ "path": "deviceId",
10404
+ "valueType": "number"
10405
+ },
10406
+ {
10407
+ "path": "enabled",
10408
+ "valueType": "boolean"
10409
+ },
10410
+ {
10411
+ "path": "activeMode",
10412
+ "valueType": "enum",
10413
+ "enumValues": [
10414
+ "off",
10415
+ "events",
10416
+ "continuous",
10417
+ "on-device-decision"
10418
+ ]
10419
+ },
10420
+ {
10421
+ "path": "nodeId",
10422
+ "valueType": "string"
10423
+ },
10424
+ {
10425
+ "path": "storageBytes",
10426
+ "valueType": "number"
10427
+ }
10428
+ ],
10429
+ "recording-onboard": [
10430
+ {
10431
+ "path": "primaryTrackId",
10432
+ "valueType": "string"
10433
+ },
10434
+ {
10435
+ "path": "enabled",
10436
+ "valueType": "boolean"
10437
+ },
10438
+ {
10439
+ "path": "overwriteWhenFull",
10440
+ "valueType": "boolean"
10441
+ },
10442
+ {
10443
+ "path": "preRecordSec",
10444
+ "valueType": "number"
10445
+ },
10446
+ {
10447
+ "path": "postRecordSec",
10448
+ "valueType": "number"
10449
+ },
10450
+ {
10451
+ "path": "segmentMinutes",
10452
+ "valueType": "number"
10453
+ },
10454
+ {
10455
+ "path": "unreadableWindows",
10456
+ "valueType": "number"
10457
+ },
10458
+ {
10459
+ "path": "recordingToNowhere",
10460
+ "valueType": "boolean"
10461
+ }
10462
+ ],
10463
+ "recording-signal": [{
10464
+ "path": "active",
10465
+ "valueType": "boolean"
10466
+ }, {
10467
+ "path": "reason",
10468
+ "valueType": "string"
10469
+ }],
10470
+ "running-state": [
10471
+ {
10472
+ "path": "running",
10473
+ "valueType": "boolean"
10474
+ },
10475
+ {
10476
+ "path": "since",
10477
+ "valueType": "number"
10478
+ },
10479
+ {
10480
+ "path": "source",
10481
+ "valueType": "enum",
10482
+ "enumValues": ["native", "assigned"]
10483
+ },
10484
+ {
10485
+ "path": "phase",
10486
+ "valueType": "string"
10487
+ }
10488
+ ],
10489
+ "script-runner": [
10490
+ {
10491
+ "path": "isRunning",
10492
+ "valueType": "boolean"
10493
+ },
10494
+ {
10495
+ "path": "lastRunAt",
10496
+ "valueType": "number"
10497
+ },
10498
+ {
10499
+ "path": "lastRunSuccess",
10500
+ "valueType": "boolean"
10501
+ },
10502
+ {
10503
+ "path": "lastError",
10504
+ "valueType": "string"
10505
+ }
10506
+ ],
10507
+ "smoke": [{
10508
+ "path": "detected",
10509
+ "valueType": "boolean"
10510
+ }],
10511
+ "snapshot": [
10512
+ {
10513
+ "path": "lastCapturedAt",
10514
+ "valueType": "number"
10515
+ },
10516
+ {
10517
+ "path": "cacheAgeMs",
10518
+ "valueType": "number"
10519
+ },
10520
+ {
10521
+ "path": "lastBytes",
10522
+ "valueType": "number"
10523
+ },
10524
+ {
10525
+ "path": "lastStreamId",
10526
+ "valueType": "string"
10527
+ }
10528
+ ],
10529
+ "stream-params": [
10530
+ {
10531
+ "path": "main.width",
10532
+ "valueType": "number"
10533
+ },
10534
+ {
10535
+ "path": "main.height",
10536
+ "valueType": "number"
10537
+ },
10538
+ {
10539
+ "path": "main.codec",
10540
+ "valueType": "enum",
10541
+ "enumValues": ["h264", "h265"]
10542
+ },
10543
+ {
10544
+ "path": "main.framerate",
10545
+ "valueType": "number"
10546
+ },
10547
+ {
10548
+ "path": "main.bitrate",
10549
+ "valueType": "number"
10550
+ },
10551
+ {
10552
+ "path": "main.bitrateMode",
10553
+ "valueType": "enum",
10554
+ "enumValues": ["vbr", "cbr"]
10555
+ },
10556
+ {
10557
+ "path": "main.encoderProfile",
10558
+ "valueType": "enum",
10559
+ "enumValues": [
10560
+ "high",
10561
+ "main",
10562
+ "baseline"
10563
+ ]
10564
+ },
10565
+ {
10566
+ "path": "main.gop",
10567
+ "valueType": "number"
10568
+ },
10569
+ {
10570
+ "path": "main.audio",
10571
+ "valueType": "boolean"
10572
+ },
10573
+ {
10574
+ "path": "sub.width",
10575
+ "valueType": "number"
10576
+ },
10577
+ {
10578
+ "path": "sub.height",
10579
+ "valueType": "number"
10580
+ },
10581
+ {
10582
+ "path": "sub.codec",
10583
+ "valueType": "enum",
10584
+ "enumValues": ["h264", "h265"]
10585
+ },
10586
+ {
10587
+ "path": "sub.framerate",
10588
+ "valueType": "number"
10589
+ },
10590
+ {
10591
+ "path": "sub.bitrate",
10592
+ "valueType": "number"
10593
+ },
10594
+ {
10595
+ "path": "sub.bitrateMode",
10596
+ "valueType": "enum",
10597
+ "enumValues": ["vbr", "cbr"]
10598
+ },
10599
+ {
10600
+ "path": "sub.encoderProfile",
10601
+ "valueType": "enum",
10602
+ "enumValues": [
10603
+ "high",
10604
+ "main",
10605
+ "baseline"
10606
+ ]
10607
+ },
10608
+ {
10609
+ "path": "sub.gop",
10610
+ "valueType": "number"
10611
+ },
10612
+ {
10613
+ "path": "sub.audio",
10614
+ "valueType": "boolean"
10615
+ },
10616
+ {
10617
+ "path": "ext.width",
10618
+ "valueType": "number"
10619
+ },
10620
+ {
10621
+ "path": "ext.height",
10622
+ "valueType": "number"
10623
+ },
10624
+ {
10625
+ "path": "ext.codec",
10626
+ "valueType": "enum",
10627
+ "enumValues": ["h264", "h265"]
10628
+ },
10629
+ {
10630
+ "path": "ext.framerate",
10631
+ "valueType": "number"
10632
+ },
10633
+ {
10634
+ "path": "ext.bitrate",
10635
+ "valueType": "number"
10636
+ },
10637
+ {
10638
+ "path": "ext.bitrateMode",
10639
+ "valueType": "enum",
10640
+ "enumValues": ["vbr", "cbr"]
10641
+ },
10642
+ {
10643
+ "path": "ext.encoderProfile",
10644
+ "valueType": "enum",
10645
+ "enumValues": [
10646
+ "high",
10647
+ "main",
10648
+ "baseline"
10649
+ ]
10650
+ },
10651
+ {
10652
+ "path": "ext.gop",
10653
+ "valueType": "number"
10654
+ },
10655
+ {
10656
+ "path": "ext.audio",
10657
+ "valueType": "boolean"
10658
+ }
10659
+ ],
10660
+ "switch": [{
10661
+ "path": "on",
10662
+ "valueType": "boolean"
10663
+ }],
10664
+ "tamper": [{
10665
+ "path": "tampered",
10666
+ "valueType": "boolean"
10667
+ }],
10668
+ "temperature-sensor": [
10669
+ {
10670
+ "path": "celsius",
10671
+ "valueType": "number"
10672
+ },
10673
+ {
10674
+ "path": "unit",
10675
+ "valueType": "string"
10676
+ },
10677
+ {
10678
+ "path": "precision",
10679
+ "valueType": "number"
10680
+ }
10681
+ ],
10682
+ "update": [
10683
+ {
10684
+ "path": "currentVersion",
10685
+ "valueType": "string"
10686
+ },
10687
+ {
10688
+ "path": "availableVersion",
10689
+ "valueType": "string"
10690
+ },
10691
+ {
10692
+ "path": "updatable",
10693
+ "valueType": "boolean"
10694
+ },
10695
+ {
10696
+ "path": "state",
10697
+ "valueType": "string"
10698
+ },
10699
+ {
10700
+ "path": "inProgress",
10701
+ "valueType": "boolean"
10702
+ }
10703
+ ],
10704
+ "vacuum-control": [
10705
+ {
10706
+ "path": "state",
10707
+ "valueType": "enum",
10708
+ "enumValues": [
10709
+ "idle",
10710
+ "cleaning",
10711
+ "paused",
10712
+ "returning",
10713
+ "docked",
10714
+ "drying",
10715
+ "error"
10716
+ ]
10717
+ },
10718
+ {
10719
+ "path": "batteryLevel",
10720
+ "valueType": "number"
10721
+ },
10722
+ {
10723
+ "path": "fanSpeed",
10724
+ "valueType": "string"
10725
+ },
10726
+ {
10727
+ "path": "progressPercent",
10728
+ "valueType": "number"
10729
+ },
10730
+ {
10731
+ "path": "errorCode",
10732
+ "valueType": "number"
10733
+ },
10734
+ {
10735
+ "path": "errorLabel",
10736
+ "valueType": "string"
10737
+ }
10738
+ ],
10739
+ "valve": [{
10740
+ "path": "state",
10741
+ "valueType": "enum",
10742
+ "enumValues": [
10743
+ "open",
10744
+ "opening",
10745
+ "closing",
10746
+ "closed",
10747
+ "stopped"
10748
+ ]
10749
+ }, {
10750
+ "path": "position",
10751
+ "valueType": "number"
10752
+ }],
10753
+ "vibration": [{
10754
+ "path": "detected",
10755
+ "valueType": "boolean"
10756
+ }],
10757
+ "water-heater": [
10758
+ {
10759
+ "path": "currentTemp",
10760
+ "valueType": "number"
10761
+ },
10762
+ {
10763
+ "path": "targetTemp",
10764
+ "valueType": "number"
10765
+ },
10766
+ {
10767
+ "path": "operationMode",
10768
+ "valueType": "string"
10769
+ },
10770
+ {
10771
+ "path": "away",
10772
+ "valueType": "boolean"
10773
+ },
10774
+ {
10775
+ "path": "minTemp",
10776
+ "valueType": "number"
10777
+ },
10778
+ {
10779
+ "path": "maxTemp",
10780
+ "valueType": "number"
10781
+ }
10782
+ ],
10783
+ "weather": [
10784
+ {
10785
+ "path": "condition",
10786
+ "valueType": "string"
10787
+ },
10788
+ {
10789
+ "path": "temperature",
10790
+ "valueType": "number"
10791
+ },
10792
+ {
10793
+ "path": "temperatureUnit",
10794
+ "valueType": "string"
10795
+ },
10796
+ {
10797
+ "path": "humidity",
10798
+ "valueType": "number"
10799
+ },
10800
+ {
10801
+ "path": "pressure",
10802
+ "valueType": "number"
10803
+ },
10804
+ {
10805
+ "path": "pressureUnit",
10806
+ "valueType": "string"
10807
+ },
10808
+ {
10809
+ "path": "windSpeed",
10810
+ "valueType": "number"
10811
+ },
10812
+ {
10813
+ "path": "windSpeedUnit",
10814
+ "valueType": "string"
10815
+ },
10816
+ {
10817
+ "path": "windBearing",
10818
+ "valueType": "number"
10819
+ }
10820
+ ],
10821
+ "zone-analytics": [
10822
+ {
10823
+ "path": "ts",
10824
+ "valueType": "number"
10825
+ },
10826
+ {
10827
+ "path": "frameWidth",
10828
+ "valueType": "number"
10829
+ },
10830
+ {
10831
+ "path": "frameHeight",
10832
+ "valueType": "number"
10833
+ },
10834
+ {
10835
+ "path": "frame.totalObjects",
10836
+ "valueType": "number"
10837
+ },
10838
+ {
10839
+ "path": "frame.standingObjects",
10840
+ "valueType": "number"
10841
+ },
10842
+ {
10843
+ "path": "frame.transientObjects",
10844
+ "valueType": "number"
10845
+ },
10846
+ {
10847
+ "path": "unzoned.totalObjects",
10848
+ "valueType": "number"
10849
+ },
10850
+ {
10851
+ "path": "unzoned.standingObjects",
10852
+ "valueType": "number"
10853
+ },
10854
+ {
10855
+ "path": "unzoned.transientObjects",
10856
+ "valueType": "number"
10857
+ }
10858
+ ]
10859
+ });
8885
10860
  /**
8886
10861
  * AUTO-GENERATED by scripts/generate-device-scoped-caps.ts — DO NOT EDIT.
8887
10862
  *
@@ -9381,7 +11356,7 @@ function errMsg(err) {
9381
11356
  return String(err);
9382
11357
  }
9383
11358
  //#endregion
9384
- //#region ../types/dist/composition-BJ8iAZb3.mjs
11359
+ //#region ../types/dist/composition-kEl9mevu.mjs
9385
11360
  /**
9386
11361
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
9387
11362
  * canonical form sorts object keys alphabetically at every depth so two
@@ -10634,7 +12609,7 @@ function gifDeriveSpeed(gifSpeed, videoSpeed) {
10634
12609
  * runs at `fps / speed` in SOURCE time and `setpts` multiplies what survived.
10635
12610
  * The trailing `fps` re-declares the rate, which is NOT redundant: `setpts`
10636
12611
  * leaves the filter link advertising the sampled rate and the gif muxer
10637
- * believes the link — measured on 615 as a 3.01 s gif of ten frames.
12612
+ * believes the link — measured on 101 as a 3.01 s gif of ten frames.
10638
12613
  */
10639
12614
  function gifFilterComplex(input) {
10640
12615
  const speed = input.speed > 0 ? input.speed : 1;
@@ -11520,7 +13495,7 @@ function retrainRevisionConflictMessage(frameId, conflict) {
11520
13495
  * ── Why a TABLE and not a log line ─────────────────────────────────────────
11521
13496
  * `logs.query` is an in-memory ring. Measured on the live hub on 2026-09-08 it
11522
13497
  * held 40 000 entries covering 38 minutes — the whole ring is under an hour of
11523
- * fleet traffic. Every question this data is for ("how often, on camera 617,
13498
+ * fleet traffic. Every question this data is for ("how often, on camera 102,
11524
13499
  * over the week the operator complained about") outlives that ring by two
11525
13500
  * orders of magnitude, and a previous investigation in this repo was blocked
11526
13501
  * for precisely this reason. The gate ALREADY writes a log line per decision
@@ -11779,7 +13754,7 @@ var BirthDecisionQueryInputSchema = object({
11779
13754
  * - A per-device bound multiplies by the fleet — 30 cameras at 500 each is
11780
13755
  * 15 000 rows to protect a corpus that only ever gets read fleet-wide (the
11781
13756
  * thing being mined is "what keeps going wrong", not "what goes wrong on
11782
- * 617"). One global ceiling is one number to reason about.
13757
+ * 102"). One global ceiling is one number to reason about.
11783
13758
  * - An AGE bound would delete the corpus for being old, which is the failure
11784
13759
  * being fixed: a note from six months ago is the most valuable row in the
11785
13760
  * table precisely because the pattern it describes has had time to repeat.
@@ -13328,7 +15303,7 @@ var LogChannelDescriptorSchema = object({
13328
15303
  * `true` is a PROMISE with two halves, and both must hold: the gate is
13329
15304
  * consulted with the numeric device id, AND every line the channel admits
13330
15305
  * carries `tags: { deviceId }` with that same numeric id. The second half is
13331
- * what makes `| json | deviceId="617"` work in Loki — `loki-payload.ts`
15306
+ * what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
13332
15307
  * keeps `deviceId` out of the stream labels for cardinality, so the tag in
13333
15308
  * the body is the only way to filter.
13334
15309
  *
@@ -13704,7 +15679,7 @@ var ModelVariantGroupSchema = object({
13704
15679
  precision: _enum(["fp32", "int8"]).optional(),
13705
15680
  /**
13706
15681
  * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
13707
- * an alternate training of the same family (Scrypted `relu_test`); chip
15682
+ * an alternate training of the same family (plugin catalog `relu_test`); chip
13708
15683
  * label is "Test".
13709
15684
  */
13710
15685
  optimization: _enum(["standard", "test"]).optional(),
@@ -13956,8 +15931,8 @@ var ModelCatalogEntrySchema = object({
13956
15931
  provider: ModelProviderIdSchema.optional(),
13957
15932
  /**
13958
15933
  * Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
13959
- * applies (Frigate / COCO public catalog). Set on a custom model whose raw
13960
- * labels already ARE the CamStack macros (Scrypted identity map).
15934
+ * applies (plus catalog / COCO public catalog). Set on a custom model whose raw
15935
+ * labels already ARE the CamStack macros (plugin catalog identity map).
13961
15936
  */
13962
15937
  classMap: DetectionCatalogClassMapSchema.optional(),
13963
15938
  /**
@@ -16945,7 +18920,7 @@ method(object({
16945
18920
  * `1` is real time and is the ONLY value that allows the copy branch —
16946
18921
  * anything else forces `libx264` over the window. That was priced
16947
18922
  * before it was chosen: a per-event burst measured at 0.23 s and 254 KB
16948
- * on a real 615 720p cut, against 922 KB for the copy it replaces. A
18923
+ * on a real 101 720p cut, against 922 KB for the copy it replaces. A
16949
18924
  * re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
16950
18925
  * once the decode is forced the width stops being free.
16951
18926
  */
@@ -17475,6 +19450,7 @@ var CompositionRunStatusSchema = _enum([
17475
19450
  "starting",
17476
19451
  "running",
17477
19452
  "degraded",
19453
+ "incomplete",
17478
19454
  "failed"
17479
19455
  ]);
17480
19456
  var CompositionFieldStateKindSchema = _enum([
@@ -17695,6 +19671,7 @@ var CoreBlockStatusSchema = _enum([
17695
19671
  "starting",
17696
19672
  "running",
17697
19673
  "degraded",
19674
+ "incomplete",
17698
19675
  "failed"
17699
19676
  ]);
17700
19677
  /** path → TypeScript source for a multi-file block. */
@@ -39729,7 +41706,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
39729
41706
  * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
39730
41707
  * operator's casing. The registry matches labels trimmed + case-insensitively
39731
41708
  * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
39732
- * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
41709
+ * case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
39733
41710
  * map keyed on the displayed casing would orphan its entry on exactly that
39734
41711
  * edit. Consumers join by keying their own label through `locationIconKey`.
39735
41712
  */
@@ -39754,7 +41731,7 @@ var LocationDescriptionAssignmentSchema = object({
39754
41731
  /**
39755
41732
  * A SITE ZONE — a named part of the property that several locations belong to.
39756
41733
  *
39757
- * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
41734
+ * "Night zone" holds every bedroom; "Zona giorno" the living room and the
39758
41735
  * kitchen. A camera belongs to exactly one location, and a location to at most
39759
41736
  * one zone, so a camera's zone is derived and never stored on the device: the
39760
41737
  * whole point of this entity is that grouping rooms touches no device row.
@@ -39783,7 +41760,7 @@ var LocationDescriptionAssignmentSchema = object({
39783
41760
  * the locations inside it.
39784
41761
  *
39785
41762
  * The LABEL is carried alongside the key because the key is lossy on purpose —
39786
- * a surface must show "Zona notte", not "zona notte". Locations are carried
41763
+ * a surface must show "Night zone", not "night zone". Locations are carried
39787
41764
  * here, rather than left to a second call, because every consumer wants both
39788
41765
  * at once and a viewer that asked twice could render a zone whose membership
39789
41766
  * it has not fetched yet.
@@ -42093,8 +44070,8 @@ var LoadContributionSchema = object({
42093
44070
  "unattributable"
42094
44071
  ]),
42095
44072
  /**
42096
- * What ONE entry is, in the contributor's own words — `615/high`,
42097
- * `617/native`, `cuda:0 shared pool`. Free text because the unit differs per
44073
+ * What ONE entry is, in the contributor's own words — `101/high`,
44074
+ * `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
42098
44075
  * family and inventing a common one would lose the only information that
42099
44076
  * makes two entries for the same camera distinguishable.
42100
44077
  */
@@ -45161,7 +47138,7 @@ var NcConditionsSchema = object({
45161
47138
  * with the list under it is worse than no switch (D62).
45162
47139
  *
45163
47140
  * MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
45164
- * renameable, and a rule authored on "Gianluca" went silently dark the moment
47141
+ * renameable, and a rule authored on "Alice" went silently dark the moment
45165
47142
  * the operator fixed the spelling. The id reaches the record on
45166
47143
  * `LabelAttribution.identityId`; the name is what the editor shows and what
45167
47144
  * `{{label}}` renders.
@@ -45744,7 +47721,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
45744
47721
  * A rule scoped to one camera and one zone silently became a rule that
45745
47722
  * matches EVERY event on EVERY camera, and lost its `media` policy
45746
47723
  * (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
45747
- * live on 2026-08-12: a rule scoped to device 617 fired on 590 and 615
47724
+ * live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
45748
47725
  * within a minute of a two-field patch.
45749
47726
  *
45750
47727
  * So every defaulted field is re-declared here WITHOUT its default. The
@@ -47272,8 +49249,8 @@ var NcAlarmSensorsSchema = object({
47272
49249
  * own `sustainSeconds` (29 s on this hub), so its clip is anchored well in the
47273
49250
  * past — and the other source, the recordings, cannot cover a recent moment:
47274
49251
  * measured against `recording.getAvailability` for a 10 s window at several
47275
- * anchors, full coverage arrived at −18 s on device 590 and −26 s on 615 and
47276
- * 617. That edge is a PHASE of the 10-second segment cycle, not a number. The
49252
+ * anchors, full coverage arrived at −18 s on device 104 and −26 s on 101 and
49253
+ * 102. That edge is a PHASE of the 10-second segment cycle, not a number. The
47277
49254
  * ring therefore has to hold the moment until the recordings can take it over:
47278
49255
  * the worst measured phase (26 s) plus the confirmation lag (29 s) is 55 s, and
47279
49256
  * 60 is the round number above it.
@@ -48478,7 +50455,7 @@ var LabelAttributionSchema = object({
48478
50455
  * `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
48479
50456
  *
48480
50457
  * The text alone is a DISPLAY NAME, and a display name is renameable: a
48481
- * notification rule authored on "Gianluca" stopped matching the moment the
50458
+ * notification rule authored on "Alice" stopped matching the moment the
48482
50459
  * operator fixed the spelling in the gallery, and nothing said so. The id is
48483
50460
  * the thing that does not move, so it is what a rule matches on
48484
50461
  * (`NcConditions.identities`) and the text is what a human is shown.
@@ -51265,7 +53242,7 @@ var pipelineAnalyticsCapability = {
51265
53242
  * audio, stopping at the first hit — so on the live hub, where object
51266
53243
  * events own no media of their own and 299 883 of 300 559 media rows are
51267
53244
  * motion-owned, EVERY object event resolved to its motion namesake. A
51268
- * track from 17:34 on camera 615 was served a snapshot from 22:35 eleven
53245
+ * track from 17:34 on camera 101 was served a snapshot from 22:35 eleven
51269
53246
  * days earlier, silently.
51270
53247
  *
51271
53248
  * D476 had already disambiguated the KEY (`motion:` vs `object:`); this is
@@ -51815,7 +53792,7 @@ method(_void(), array(PipelineEngineChoiceSchema)), method(_void(), PipelineEngi
51815
53792
  /**
51816
53793
  * Root-supplied detections for the tree's ROOT step (D730). Set by
51817
53794
  * `runDetailSubtree` when the camera's root model supplies a crop-kind
51818
- * step (a Frigate+ `license_plate` for `plate-detection`): the step is
53795
+ * step (a plus catalog `license_plate` for `plate-detection`): the step is
51819
53796
  * NOT inferred, these boxes are its output, and its children (the plate
51820
53797
  * reader) run on them through their own crop policy. Boxes are in the
51821
53798
  * PIXELS of the image this call carries. Absent ⇒ the root step runs.
@@ -53492,7 +55469,7 @@ var RunnerCameraConfigSchema = object({
53492
55469
  * detection session that asks for history. What shipped was a last-moment
53493
55470
  * discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
53494
55471
  * arriving inside a few hundred ms of wall clock looks to it like one frame's
53495
- * worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
55472
+ * worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
53496
55473
  * recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
53497
55474
  * 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
53498
55475
  * was decoded, and was freed.
@@ -55570,7 +57547,7 @@ method(_void(), ProviderInfoSchema, { auth: "admin" }), method(object({ config:
55570
57547
  * The signals a device can emit to WAKE its own stream.
55571
57548
  *
55572
57549
  * A camera whose stream is built on demand sleeps until something asks for it,
55573
- * and "something" cannot be a consumer that is merely attached — a Frigate-style
57550
+ * and "something" cannot be a consumer that is merely attached — a external-catalog
55574
57551
  * puller holds a session open for ever, and treating that as demand would keep
55575
57552
  * a battery camera awake for ever, which is the whole thing the battery is for
55576
57553
  * (D173). So the wake has to come from the CAMERA: an event it noticed by
@@ -56304,7 +58281,7 @@ var ClipSchema = object({
56304
58281
  * {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
56305
58282
  *
56306
58283
  * Bounded because it is not a payload the surface pages through: one visit on
56307
- * device 615 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
58284
+ * device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
56308
58285
  * camera-day. Read {@link eventCount} for the true total.
56309
58286
  */
56310
58287
  eventIds: array(string()).optional(),
@@ -56449,7 +58426,7 @@ var ClipPlaybackSchema = object({
56449
58426
  * camera has no recordings", which is the defect this whole line of work is
56450
58427
  * about: a battery camera nobody woke (`sleeping`), a camera that could not be
56451
58428
  * reached at all (`unreachable`, also what a provider that THREW reports), a
56452
- * camera whose SD card is not mounted (`no-storage`, measured on 640 —
58429
+ * camera whose SD card is not mounted (`no-storage`, measured on 106 —
56453
58430
  * `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
56454
58431
  * camera whose OWN index disagrees with its OWN calendar (`index-empty`,
56455
58432
  * measured on 618: the calendar marks 3–20 September, days 6–20 list zero
@@ -56714,7 +58691,7 @@ DeviceType.Camera, method(object({
56714
58691
  *
56715
58692
  * It was optional, documented as "absent means the device's BOUND
56716
58693
  * provider, which is CamStack on every camera". No code implemented
56717
- * that. Measured on the live hub 2026-09-20 — device 592, bound to
58694
+ * that. Measured on the live hub 2026-09-20 — device 107, bound to
56718
58695
  * `recorder` AND `provider-reolink` — a bare call with `limit: 3`
56719
58696
  * answered SIX rows, three from each source, merged newest-first:
56720
58697
  * `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
@@ -57857,7 +59834,10 @@ var airQualitySensorCapability = {
57857
59834
  */
57858
59835
  var AmbientLightSensorStatusSchema = object({
57859
59836
  /** Current illuminance in lux (lx). */
57860
- lux: number().min(0),
59837
+ lux: number().min(0).meta({
59838
+ unit: "lx",
59839
+ label: "Illuminance"
59840
+ }),
57861
59841
  /** Ms epoch when the slice was last updated. */
57862
59842
  lastFetchedAt: number(),
57863
59843
  /** Live display unit from the upstream source (e.g. HA
@@ -57900,7 +59880,12 @@ var ambientLightSensorCapability = {
57900
59880
  } } },
57901
59881
  /** Clock fields: written, but excluded from the compare that decides
57902
59882
  * whether persisting is worth a SQLite commit. */
57903
- volatileStateFields: ["lastFetchedAt"]
59883
+ volatileStateFields: ["lastFetchedAt"],
59884
+ customize: {
59885
+ version: 1,
59886
+ advanced: "derive",
59887
+ targets: []
59888
+ }
57904
59889
  };
57905
59890
  /**
57906
59891
  * Per-class audio metrics aggregated over a sliding window.
@@ -58127,7 +60112,10 @@ var BatteryStatusSchema = object({
58127
60112
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
58128
60113
  * declines to band a non-finite reading, which is the correct shape.
58129
60114
  */
58130
- percentage: number().min(0).max(100).nullable(),
60115
+ percentage: number().min(0).max(100).nullable().meta({
60116
+ unit: "%",
60117
+ label: "Charge"
60118
+ }),
58131
60119
  /**
58132
60120
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
58133
60121
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -58146,13 +60134,13 @@ var BatteryStatusSchema = object({
58146
60134
  "solar",
58147
60135
  "none",
58148
60136
  "unknown"
58149
- ]),
60137
+ ]).meta({ label: "Charging source" }),
58150
60138
  /**
58151
60139
  * True when the camera firmware has gone into low-power mode. Battery
58152
60140
  * providers MUST avoid polling during sleep — reading the battery
58153
60141
  * wakes the camera up and drains charge.
58154
60142
  */
58155
- sleeping: boolean(),
60143
+ sleeping: boolean().meta({ label: "Sleeping" }),
58156
60144
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
58157
60145
  lastUpdated: number(),
58158
60146
  /**
@@ -58192,7 +60180,7 @@ var BatteryStatusSchema = object({
58192
60180
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
58193
60181
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
58194
60182
  */
58195
- binary: boolean().optional()
60183
+ binary: boolean().optional().meta({ label: "Binary indicator" })
58196
60184
  });
58197
60185
  var BATTERY_DEVICE_TYPES = [
58198
60186
  DeviceType.Camera,
@@ -58206,6 +60194,7 @@ var BATTERY_DEVICE_TYPES = [
58206
60194
  /** Generic Customize target for the percentage reading (D936). */
58207
60195
  var batteryCustomize = {
58208
60196
  version: 1,
60197
+ advanced: "derive",
58209
60198
  targets: [{
58210
60199
  id: "percentage",
58211
60200
  cardinality: "scalar",
@@ -58356,7 +60345,7 @@ onStatusChanged: { data: object({
58356
60345
  * with the right HomeKit / Alexa display category.
58357
60346
  */
58358
60347
  var BinaryStatusSchema = object({
58359
- on: boolean(),
60348
+ on: boolean().meta({ label: "On" }),
58360
60349
  /** Ms epoch of the last transition. 0 if never observed. */
58361
60350
  lastChangedAt: number()
58362
60351
  });
@@ -58385,7 +60374,12 @@ var binaryCapability = {
58385
60374
  history: { fields: { on: { kind: "boolean" } } },
58386
60375
  /** Clock fields: written, but excluded from the compare that decides
58387
60376
  * whether persisting is worth a SQLite commit. */
58388
- volatileStateFields: ["lastChangedAt"]
60377
+ volatileStateFields: ["lastChangedAt"],
60378
+ customize: {
60379
+ version: 1,
60380
+ advanced: "derive",
60381
+ targets: []
60382
+ }
58389
60383
  };
58390
60384
  /**
58391
60385
  * Dimmable-light brightness control. Co-exists with `switch` on the
@@ -58718,7 +60712,7 @@ var GridLayoutCellSchema = object({
58718
60712
  *
58719
60713
  * A grid's `high` composes its sources' `high` and its `low` their `low`, so a
58720
60714
  * profile is on offer only when EVERY source can serve it. The refusal NAMES
58721
- * the sources, because "this grid has no low" is not a finding — "615 has no
60715
+ * the sources, because "this grid has no low" is not a finding — "101 has no
58722
60716
  * low" is, and it is the one an operator can act on.
58723
60717
  */
58724
60718
  var GridProfileOfferSchema = object({
@@ -61312,7 +63306,10 @@ var humidifierCapability = {
61312
63306
  */
61313
63307
  var HumiditySensorStatusSchema = object({
61314
63308
  /** Current relative humidity, 0..100. */
61315
- percent: number().min(0).max(100),
63309
+ percent: number().min(0).max(100).meta({
63310
+ unit: "%",
63311
+ label: "Humidity"
63312
+ }),
61316
63313
  /** Ms epoch when the slice was last updated. */
61317
63314
  lastFetchedAt: number(),
61318
63315
  /** Live display unit from the upstream source (e.g. HA
@@ -61354,7 +63351,12 @@ var humiditySensorCapability = {
61354
63351
  } } },
61355
63352
  /** Clock fields: written, but excluded from the compare that decides
61356
63353
  * whether persisting is worth a SQLite commit. */
61357
- volatileStateFields: ["lastFetchedAt"]
63354
+ volatileStateFields: ["lastFetchedAt"],
63355
+ customize: {
63356
+ version: 1,
63357
+ advanced: "derive",
63358
+ targets: []
63359
+ }
61358
63360
  };
61359
63361
  /**
61360
63362
  * Image display cap. Models a single still image exposed by an integration —
@@ -65068,9 +67070,15 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
65068
67070
  */
65069
67071
  var PowerMeterStatusSchema = object({
65070
67072
  /** Instantaneous power draw in watts. */
65071
- watts: number().optional(),
67073
+ watts: number().optional().meta({
67074
+ unit: "W",
67075
+ label: "Power"
67076
+ }),
65072
67077
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
65073
- kwhTotal: number().optional(),
67078
+ kwhTotal: number().optional().meta({
67079
+ unit: "kWh",
67080
+ label: "Energy"
67081
+ }),
65074
67082
  /** Voltage in volts. */
65075
67083
  volts: number().optional(),
65076
67084
  /** Current in amperes. */
@@ -65155,7 +67163,12 @@ var powerMeterCapability = {
65155
67163
  } },
65156
67164
  /** Clock fields: written, but excluded from the compare that decides
65157
67165
  * whether persisting is worth a SQLite commit. */
65158
- volatileStateFields: ["lastFetchedAt"]
67166
+ volatileStateFields: ["lastFetchedAt"],
67167
+ customize: {
67168
+ version: 1,
67169
+ advanced: "derive",
67170
+ targets: []
67171
+ }
65159
67172
  };
65160
67173
  /**
65161
67174
  * Presence cap. Models HA `person.*` and `device_tracker.*` entities
@@ -65577,9 +67590,9 @@ var PtzOptionsSchema = object({
65577
67590
  * Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
65578
67591
  * not one of the three cameras honours its own:
65579
67592
  *
65580
- * 592 Videocamera camera Daniel (reolink) preset 0 holds "stanza"
65581
- * 1438 Videocamera dispensa (hikvision) preset 1 holds "Credenza"
65582
- * 3836 Videocamera studio (amcrest) preset 1 holds "Preset1"
67593
+ * 107 Camera camera Carol (reolink) preset 0 holds "stanza"
67594
+ * 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
67595
+ * 3836 Camera studio (amcrest) preset 1 holds "Preset1"
65583
67596
  *
65584
67597
  * So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
65585
67598
  * and two of the three swallowed the failure in a bare `catch`. For autotrack
@@ -65823,7 +67836,7 @@ var RunningStateStatusSchema = object({
65823
67836
  running: boolean().nullable(),
65824
67837
  /** Epoch ms the current boolean began; null while `running` is null. */
65825
67838
  since: number().nullable(),
65826
- source: RunningStateSourceSchema,
67839
+ source: RunningStateSourceSchema.meta({ label: "Source" }),
65827
67840
  phase: string().nullable(),
65828
67841
  /** null until a reading has been published (D393). */
65829
67842
  lastFetchedAt: number().nullable()
@@ -65837,6 +67850,7 @@ var RUNNING_DEVICE_TYPES = Object.values(DeviceType);
65837
67850
  /** Generic Customize target for the running boolean (D936). */
65838
67851
  var runningCustomize = {
65839
67852
  version: 1,
67853
+ advanced: "derive",
65840
67854
  targets: [{
65841
67855
  id: "running",
65842
67856
  cardinality: "scalar",
@@ -65978,7 +67992,7 @@ var RecordingAvailabilitySchema = object({
65978
67992
  * would look identical. But the answer used to say nothing about that, so a
65979
67993
  * caller asking "what can I export?" read the single preferred profile as
65980
67994
  * the only one that exists — on this deployment every camera records `high`
65981
- * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
67995
+ * AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
65982
67996
  * UI could not see it.
65983
67997
  *
65984
67998
  * Cheap: it is the same shallow directory read the profile CHOICE already
@@ -66077,7 +68091,7 @@ var RecordingSourceOptionsSchema = object({
66077
68091
  * `sparse` = gaps are the absence of one, and must be drawn as such.
66078
68092
  *
66079
68093
  * Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
66080
- * of 592's day and 1.2 % of 1436's. It is a fact about a (source, camera)
68094
+ * of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
66081
68095
  * pair, and ours answers it per camera from `deriveRecordingMode`. */
66082
68096
  coverage: _enum(["continuous", "sparse"]),
66083
68097
  /** Where the playhead may be put.
@@ -66153,7 +68167,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(RecordingSourceS
66153
68167
  * merely discouraged (D554 amended).
66154
68168
  *
66155
68169
  * It was learned the expensive way on `videoclips.listClips`: measured
66156
- * on the live hub 2026-09-20, device 592 bound to `recorder` AND
68170
+ * on the live hub 2026-09-20, device 107 bound to `recorder` AND
66157
68171
  * `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
66158
68172
  * three from each source, merged — `device-collection-dispatch.ts`
66159
68173
  * leaves an unpinned fan-out un-narrowed, so absence buys the union the
@@ -66754,7 +68768,7 @@ var ExportSpeedSchema = number().min(.25).max(32);
66754
68768
  * on a 10 h window holding 29,393 s of footage every range landed late by the
66755
68769
  * gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
66756
68770
  * the video was a uniform timelapse, and the log line reported the five ranges
66757
- * that had been ASKED for (2026-08-13, export `57d14363`, camera 615).
68771
+ * that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
66758
68772
  *
66759
68773
  * Relative and not absolute epoch, because an absolute epoch would make every
66760
68774
  * call site responsible for the same subtraction.
@@ -67494,7 +69508,7 @@ getStatus: method(object({ deviceId: number() }), RecordingSignalStatusSchema) }
67494
69508
  * which put a "Scenes" tab on one camera's detail page. That is the wrong shape
67495
69509
  * for the thing: a scene is a standing question about the property ("is the bin
67496
69510
  * still out"), and the operator's question is "which of my scenes have tripped",
67497
- * across every camera at once — not "what does camera 617 think". Buried one
69511
+ * across every camera at once — not "what does camera 102 think". Buried one
67498
69512
  * camera deep it also could not be found. The surface is now a top-level admin
67499
69513
  * page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
67500
69514
  * picks the camera inside the create flow, the same shape Events and Faces have.
@@ -68371,7 +70385,7 @@ var streamParamsCapability = {
68371
70385
  * `getSettingsUISchema()` surface.
68372
70386
  */
68373
70387
  var SwitchStatusSchema = object({
68374
- on: boolean(),
70388
+ on: boolean().meta({ label: "On" }),
68375
70389
  /** Ms epoch of the last state change. Useful for UI "X minutes ago". */
68376
70390
  lastChangedAt: number()
68377
70391
  });
@@ -68430,7 +70444,12 @@ var switchCapability = {
68430
70444
  label: "On",
68431
70445
  kind: "boolean"
68432
70446
  }
68433
- }] }
70447
+ }] },
70448
+ customize: {
70449
+ version: 1,
70450
+ advanced: "derive",
70451
+ targets: []
70452
+ }
68434
70453
  };
68435
70454
  /** C0 controls, DEL and the C1 range: none of them belongs in a name. */
68436
70455
  function hasControlCharacter(value) {
@@ -69026,7 +71045,10 @@ var tamperCapability = {
69026
71045
  */
69027
71046
  var TemperatureSensorStatusSchema = object({
69028
71047
  /** Current temperature in Celsius. */
69029
- celsius: number(),
71048
+ celsius: number().meta({
71049
+ unit: "°C",
71050
+ label: "Temperature"
71051
+ }),
69030
71052
  /** Ms epoch when the slice was last updated (push or poll). */
69031
71053
  lastFetchedAt: number(),
69032
71054
  /** Live display unit from the upstream source (e.g. HA
@@ -69069,7 +71091,12 @@ var temperatureSensorCapability = {
69069
71091
  } } },
69070
71092
  /** Clock fields: written, but excluded from the compare that decides
69071
71093
  * whether persisting is worth a SQLite commit. */
69072
- volatileStateFields: ["lastFetchedAt"]
71094
+ volatileStateFields: ["lastFetchedAt"],
71095
+ customize: {
71096
+ version: 1,
71097
+ advanced: "derive",
71098
+ targets: []
71099
+ }
69073
71100
  };
69074
71101
  /**
69075
71102
  * toast — system-scoped singleton capability that streams toast
@@ -70615,6 +72642,10 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
70615
72642
  auth: "admin"
70616
72643
  });
70617
72644
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
72645
+ 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;
72646
+ String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
72647
+ DeviceRole.BinarySensor, DeviceRole.MotionSensor;
72648
+ new Set(CAP_NAMES);
70618
72649
  Object.freeze({
70619
72650
  person: .5,
70620
72651
  vehicle: .5,
@@ -84666,7 +86697,7 @@ var SENSOR_CAP_VOCABULARY = {
84666
86697
  state: [{
84667
86698
  kind: "boolean",
84668
86699
  field: "on",
84669
- label: t("Active", "Attivo"),
86700
+ label: t("On", "Acceso"),
84670
86701
  whenTrue: t("When {device} turns active", "Quando {device} si attiva"),
84671
86702
  whenFalse: t("When {device} turns inactive", "Quando {device} si disattiva"),
84672
86703
  icon: "toggle-right"
@@ -88187,7 +90218,6 @@ var BucketAccumulator = class {
88187
90218
  }
88188
90219
  };
88189
90220
  DeviceType.Camera;
88190
- 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;
88191
90221
  /**
88192
90222
  * A saved Customize assignment (D936). The schema is the type: callers use
88193
90223
  * `z.infer`, they do not restate the shape.
@@ -88276,7 +90306,6 @@ object({
88276
90306
  ]),
88277
90307
  reason: string().nullable()
88278
90308
  });
88279
- String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
88280
90309
  var G711_SCALE_CORRECTION_DB = {
88281
90310
  PCMU: 20 * Math.log10(4),
88282
90311
  PCMA: 20 * Math.log10(8)
@@ -90027,7 +92056,7 @@ var STATE_SUMMARY_SECTION_VARS = [
90027
92056
  {
90028
92057
  name: "summaryStreams",
90029
92058
  label: "Summary: streams offline",
90030
- example: "Ingresso (high) — since 06:40",
92059
+ example: "Front door (high) — since 06:40",
90031
92060
  kinds: ["stream-offline", "stream-online"]
90032
92061
  },
90033
92062
  {
@@ -90045,13 +92074,13 @@ var STATE_SUMMARY_SECTION_VARS = [
90045
92074
  {
90046
92075
  name: "summaryDetection",
90047
92076
  label: "Summary: cameras detecting nothing",
90048
- example: "Ingresso — since 05:10",
92077
+ example: "Front door — since 05:10",
90049
92078
  kinds: ["detection-blind"]
90050
92079
  },
90051
92080
  {
90052
92081
  name: "summaryNodes",
90053
92082
  label: "Summary: nodes",
90054
- example: "little-unraid — offline since 03:00",
92083
+ example: "agent-a — offline since 03:00",
90055
92084
  kinds: [
90056
92085
  "node-offline",
90057
92086
  "node-online",
@@ -90135,7 +92164,7 @@ var NC_TEMPLATE_VARS = [
90135
92164
  {
90136
92165
  name: "camera",
90137
92166
  label: "Camera",
90138
- example: "Ingresso",
92167
+ example: "Front door",
90139
92168
  group: "subject",
90140
92169
  families: ["rule", "timelapse"],
90141
92170
  systemEventKinds: [...DEVICE_EVENTS, "export-completed"]
@@ -90303,7 +92332,7 @@ var NC_TEMPLATE_VARS = [
90303
92332
  {
90304
92333
  name: "rule",
90305
92334
  label: "Rule name",
90306
- example: "Ingresso notte",
92335
+ example: "Front door notte",
90307
92336
  group: "rule",
90308
92337
  families: [
90309
92338
  "rule",
@@ -90404,7 +92433,7 @@ var NC_TEMPLATE_VARS = [
90404
92433
  {
90405
92434
  name: "deviceName",
90406
92435
  label: "Device",
90407
- example: "Ingresso",
92436
+ example: "Front door",
90408
92437
  group: "system",
90409
92438
  families: ["rule"],
90410
92439
  fields: [...RULE_TEXT],
@@ -90414,7 +92443,7 @@ var NC_TEMPLATE_VARS = [
90414
92443
  {
90415
92444
  name: "locations",
90416
92445
  label: "Intrusion locations",
90417
- example: "Ingresso, Corridoio, Salone",
92446
+ example: "Front door, Hallway, Hall",
90418
92447
  group: "system",
90419
92448
  families: ["rule"],
90420
92449
  fields: [...RULE_TEXT],
@@ -90424,7 +92453,7 @@ var NC_TEMPLATE_VARS = [
90424
92453
  {
90425
92454
  name: "deviceId",
90426
92455
  label: "Device id",
90427
- example: "617",
92456
+ example: "102",
90428
92457
  group: "system",
90429
92458
  families: ["rule"],
90430
92459
  fields: [...RULE_TEXT],
@@ -90512,7 +92541,7 @@ var NC_TEMPLATE_VARS = [
90512
92541
  {
90513
92542
  name: "nodeName",
90514
92543
  label: "Node name",
90515
- example: "little-unraid",
92544
+ example: "agent-a",
90516
92545
  group: "system",
90517
92546
  families: ["rule"],
90518
92547
  fields: [...RULE_TEXT],
@@ -90533,7 +92562,7 @@ var NC_TEMPLATE_VARS = [
90533
92562
  name: "devices",
90534
92563
  label: "Devices",
90535
92564
  description: "node-inference-unavailable: the affected cameras, comma-joined. Alarm arm / arming / refusal: HOW MANY devices are armed (or open).",
90536
- example: "Ingresso, Garage",
92565
+ example: "Front door, Garage",
90537
92566
  group: "system",
90538
92567
  families: ["rule"],
90539
92568
  fields: [...RULE_TEXT],
@@ -90734,7 +92763,7 @@ var NC_TEMPLATE_VARS = [
90734
92763
  name: "nodes",
90735
92764
  label: "Nodes",
90736
92765
  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.",
90737
- example: "hub, little-unraid",
92766
+ example: "hub, agent-a",
90738
92767
  group: "system",
90739
92768
  families: ["rule"],
90740
92769
  fields: [...RULE_TEXT],
@@ -90845,7 +92874,7 @@ var NC_TEMPLATE_VARS = [
90845
92874
  {
90846
92875
  name: "title",
90847
92876
  label: "Export or alert title",
90848
- example: "Ingresso 08:00",
92877
+ example: "Front door 08:00",
90849
92878
  group: "system",
90850
92879
  families: ["rule"],
90851
92880
  fields: [...RULE_TEXT],
@@ -90959,7 +92988,7 @@ var NC_TEMPLATE_VARS = [
90959
92988
  name: "names",
90960
92989
  label: "Device names",
90961
92990
  description: "Armed / arming: the Active devices (or every skipped name when none are Active). Refusal: the open sensors.",
90962
- example: "Ingresso, Garage",
92991
+ example: "Front door, Garage",
90963
92992
  group: "system",
90964
92993
  families: ["rule"],
90965
92994
  fields: [...RULE_TEXT],
@@ -91007,7 +93036,7 @@ var NC_TEMPLATE_VARS = [
91007
93036
  name: "bypassedNames",
91008
93037
  label: "Bypassed sensors",
91009
93038
  description: "Sensors the operator armed around because they were open.",
91010
- example: "Finestra veranda",
93039
+ example: "Finestra porch",
91011
93040
  group: "system",
91012
93041
  families: ["rule"],
91013
93042
  fields: [...RULE_TEXT],
@@ -92059,7 +94088,7 @@ var TimelapseRuleInputSchema = object({
92059
94088
  * The caption a rule that never set one gets.
92060
94089
  *
92061
94090
  * Rendered through the ordinary `{{var}}` pass at delivery, so a rule created
92062
- * before this field existed still reads "Timelapse Videocamera ingresso" and
94091
+ * before this field existed still reads "Timelapse Camera front door" and
92063
94092
  * not the literal braces.
92064
94093
  */
92065
94094
  var DEFAULT_TIMELAPSE_PREVIEW_TEXT = "Timelapse {{camera}}";
@@ -93177,4 +95206,4 @@ function buildClipModelRegistry(entries) {
93177
95206
  /** The built-in catalog's registry. */
93178
95207
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
93179
95208
  //#endregion
93180
- export { MediaFileKindEnum as $, CamProfileSchema as $i, cloneAlarmSettings as $n, paintHex as $r, OpsLogEntrySchema as $t, DeclaredDevices as A, subKindsOf as Ai, TrackSideSchema as An, isAudioClassName as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, templateCarriesSummary as Bi, applyModeDelaysEdits as Bn, isRootSuppliableStepId as Br, NcRuleUpdateInputSchema as Bt, ClearTrackRelationResultSchema as C, strictObject as Ca, ruleKindOf as Ci, TimelapseRuleInputSchema as Cn, failureContributionCapability as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, union as Da, servedTemplateVars as Di, TrackPuritySchema as Dn, isAlertEpisodeOpen as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, tuple as Ea, sensorRaisedOf as Ei, TrackPlacementSchema as En, isAlarmControllableCap as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, systemEventDeliveryProblems as Fi, alarmPanelCapability as Fn, isEventOwnerType as Fr, NcRuleActionSchema as Ft, ListTrackRelationsResultSchema as G, zoneAnalyticsCapability as Gi, audioMetricsCapability as Gn, kebabToCamel as Gr, NcSnoozeSuppressedSchema as Gt, LABEL_SUPPLY_MACRO as H, vectorDimFromBase64 as Hi, applySecureOnArmEdit as Hn, isSystemDelivery as Hr, NcSharedSequenceSchema as Ht, EVENT_KIND_BY_CAP as I, systemEventFamilyProblems as Ii, alertEpisodeId as In, isKnownTemplateVar as Ir, NcRuleInputSchema as It, MAX_BIRTH_DECISION_RECORDS as J, evaluateSensorEdge as Ji, buildSubjectPath as Jn, memoizePinnedFfmpeg as Jr, NcTaxonomySchema as Jt, LockStateSchema as K, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Ki, audioModeOf as Kn, linkedStepOf as Kr, NcStateSummarySectionIdSchema as Kt, EVENT_OWNER_TYPES as L, systemEventFilterApplies as Li, alertEpisodeKind as Ln, isLabelSupplyStepId as Lr, NcRulePatchSchema as Lt, EMBEDDING_MODEL_FAILED as M, subjectPathSvgPoints as Mi, activateAlarmProfile as Mn, isDetectionMacroClass as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, summarizeReview as Ni, addonWidgetsSourceCapability as Nn, isDrawableSubjectPath as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, unknown as Oa, startMoverUnderClearance as Oi, TrackRelationKindSchema as On, isAlertEpisodeSeverity as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, syncActiveAlarmProfileSettings as Pi, alarmDeviceSecureOnArm as Pn, isEventKindLabelKey as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, BaseAddon as Qi, classifyRetrainReview as Qn, occupancyScope as Qr, OPS_LOG_DEFAULT_LIMIT as Qt, EXPORT_DENSE_MAX_RANGES as R, systemEventSummaryScheduleOf as Ri, alertEpisodePayload as Rn, isMediaOwnerType as Rr, NcRuleSchema as Rt, ClearTrackRelationInputSchema as S, record as Sa, ruleGroupingApplies as Si, TRACK_RELATIONS_DEFAULT_LIMIT as Sn, faceGalleryCapability as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, templateLiteral as Ta, secureActuationFor as Ti, TimelapseRuleSchema as Tn, gifFromMp4Args as Tr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Tt, LabelAttributionSchema as U, viewerLinkBaseOf as Ui, armRemovalReconcile as Un, isSystemEventSummaryRule as Ur, NcSnoozeInputSchema as Ut, FailureCounters as V, templateVarsFor as Vi, applyNonBlockingEdit as Vn, isScheduleActive as Vr, NcScheduleSchema as Vt, ListTrackRelationsInputSchema as W, withSystemEventClasses as Wi, assertTimelapseCadences as Wn, isVectorIndexDimConflict as Wr, NcSnoozeSchema as Wt, MAX_TRACK_PURITIES as X, DeviceType as Xi, bundledCamstack as Xn, normalizeNcMediaPolicy as Xr, NcTemplatePreviewSchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, isSourceCap as Yi, buildViewerLink as Yn, ncMediaPolicyError as Yr, NcTemplatePreviewInputSchema as Yt, MAX_TRACK_RELATIONS as Z, errMsg as Zi, calendarEventLocalSpan as Zn, notificationRulesCapability as Zr, NcTemplateVarDescriptorSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, literal as _a, retrainRevisionConflictMessage as _i, SceneMonitorSchema as _n, embeddingRequirementsUnavailableError as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, defineCustomActions as aa, plateGalleryCapability as ai, RetrainDismissedSchema as an, deleteAlarmProfile as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, object as ba, ruleBelongsToAlarm as bi, SetTrackRelationInputSchema as bn, eventKindLabel as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, isDeviceScopedCap as ca, readMotionTriggeredBy as ci, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as cn, deriveRecordingMode as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, sleep as da, resolveClipSearchMinScore as di, SCENE_DEFAULT_CHECK_INTERVAL_SEC as dn, deviceAttentionKind as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, InvalidRecordError as ea, paletteResultSchema as ei, PackageLlmVerdictSchema as en, consumableFormOf as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, ZodObject as fa, resolveLocationMode as fi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as fn, deviceRemovalHookCapability as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, discriminatedUnion as ga, resolvePoolMemoryPolicy as gi, SCENE_RESET_RECAPTURES as gn, embeddingRequirementsFailedError as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, boolean as ha, resolveNcMediaImage as hi, SCENE_DIVERGED as hn, embeddingRefusalOf as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, customAction as ia, pipelineAnalyticsCapability as ii, RebuildObjectEmbeddingsRefusalSchema as in, createAlarmProfile as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, subjectPathSampleFromBox as ji, TrackSourceSchema as jn, isDefaultAlarmProfileId as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, EventCategory as ka, storageOccupancyCapability as ki, TrackRelationSchema as kn, isAppLinkBase as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, nodePin as la, readTimelapseGeneratedAt as li, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as ln, describeSystemEventDeliveryProblem as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, array as ma, resolveModeNotifyPolicy as mi, SCENE_DEFAULT_UNCOVERED_POLICY as mn, embeddingModelFailedError as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, RECORD_QUERY_MAX as na, parseProcStatus as ni, RECORDING_EXPORT_MAX_READ_BYTES as nn, coreBlockIdFromAddonId as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, defineRecordKinds as oa, projectSubjectPath as oi, RetrainOriginSchema as on, deriveDetailCropRect as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, _enum as pa, resolveModeDelays as pi, SCENE_DEFAULT_QUIET_SECONDS as pn, embeddingEncoderCapability as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, canonicalHash as qi, buildEventKindDescriptor as qn, mayWriteToLocation as qr, NcSystemEventKindSchema as qt, CLIP_IMAGE_MODELS as r, createEvent as ra, pickFaceRescoreIntervalMinutes as ri, RECORDING_SOURCE_CAMSTACK_ADDON as rn, cosineSimilarity as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, hydrateSchema as sa, readDeviceStateFrom as si, RetrainStatusSchema as sn, derivePostTriggeredAction as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, RECORD_MAX_DATA_BYTES as ta, parseAlertEpisodePayload as ti, PoolMemoryWatchdog as tn, consumableLowPercentOf as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, normalizeNodeId as ua, renameAlarmProfile as ui, SCENE_DEFAULT_ANCHOR_THRESHOLD as un, describeSystemEventFamilyProblem as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, looseObject as va, rootSupplyServes as vi, SetTrackPurityInputSchema as vn, encodeVectorBase64 as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, string as wa, sceneMonitorCapability as wi, TimelapseRulePatchSchema as wn, gifDeriveSpeed as wr, NC_STATE_SUMMARY_SECTION_IDS as wt, COCO_TO_MACRO as x, partialRecord as xa, ruleDeviceCompatCapQueries as xi, TIMELAPSE_DENSE_FLOOR_SEC as xn, evictionPolicyOfLocation as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, number as ya, ruleAutoTriggersAlarm as yi, SetTrackPurityResultSchema as yn, ensureAlarmProfiles as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, systemEventSummarySplitOf as zi, applyBlockingEdit as zn, isRetiredClearKey as zr, NcRuleTargetSchema as zt };
95209
+ export { MediaFileKindEnum as $, CAP_ADVANCE_FIELDS as $i, cloneAlarmSettings as $n, paintHex as $r, OpsLogEntrySchema as $t, DeclaredDevices as A, EventCategory as Aa, subKindsOf as Ai, TrackSideSchema as An, isAudioClassName as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, templateCarriesSummary as Bi, applyModeDelaysEdits as Bn, isRootSuppliableStepId as Br, NcRuleUpdateInputSchema as Bt, ClearTrackRelationResultSchema as C, record as Ca, ruleKindOf as Ci, TimelapseRuleInputSchema as Cn, failureContributionCapability as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, tuple as Da, servedTemplateVars as Di, TrackPuritySchema as Dn, isAlertEpisodeOpen as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, templateLiteral as Ea, sensorRaisedOf as Ei, TrackPlacementSchema as En, isAlarmControllableCap as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, systemEventDeliveryProblems as Fi, alarmPanelCapability as Fn, isEventOwnerType as Fr, NcRuleActionSchema as Ft, ListTrackRelationsResultSchema as G, zoneAnalyticsCapability as Gi, audioMetricsCapability as Gn, kebabToCamel as Gr, NcSnoozeSuppressedSchema as Gt, LABEL_SUPPLY_MACRO as H, vectorDimFromBase64 as Hi, applySecureOnArmEdit as Hn, isSystemDelivery as Hr, NcSharedSequenceSchema as Ht, EVENT_KIND_BY_CAP as I, systemEventFamilyProblems as Ii, alertEpisodeId as In, isKnownTemplateVar as Ir, NcRuleInputSchema as It, MAX_BIRTH_DECISION_RECORDS as J, evaluateSensorEdge as Ji, buildSubjectPath as Jn, memoizePinnedFfmpeg as Jr, NcTaxonomySchema as Jt, LockStateSchema as K, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Ki, audioModeOf as Kn, linkedStepOf as Kr, NcStateSummarySectionIdSchema as Kt, EVENT_OWNER_TYPES as L, systemEventFilterApplies as Li, alertEpisodeKind as Ln, isLabelSupplyStepId as Lr, NcRulePatchSchema as Lt, EMBEDDING_MODEL_FAILED as M, subjectPathSvgPoints as Mi, activateAlarmProfile as Mn, isDetectionMacroClass as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, summarizeReview as Ni, addonWidgetsSourceCapability as Nn, isDrawableSubjectPath as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, union as Oa, startMoverUnderClearance as Oi, TrackRelationKindSchema as On, isAlertEpisodeSeverity as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, syncActiveAlarmProfileSettings as Pi, alarmDeviceSecureOnArm as Pn, isEventKindLabelKey as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, BaseAddon as Qi, classifyRetrainReview as Qn, occupancyScope as Qr, OPS_LOG_DEFAULT_LIMIT as Qt, EXPORT_DENSE_MAX_RANGES as R, systemEventSummaryScheduleOf as Ri, alertEpisodePayload as Rn, isMediaOwnerType as Rr, NcRuleSchema as Rt, ClearTrackRelationInputSchema as S, partialRecord as Sa, ruleGroupingApplies as Si, TRACK_RELATIONS_DEFAULT_LIMIT as Sn, faceGalleryCapability as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, string as Ta, secureActuationFor as Ti, TimelapseRuleSchema as Tn, gifFromMp4Args as Tr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Tt, LabelAttributionSchema as U, viewerLinkBaseOf as Ui, armRemovalReconcile as Un, isSystemEventSummaryRule as Ur, NcSnoozeInputSchema as Ut, FailureCounters as V, templateVarsFor as Vi, applyNonBlockingEdit as Vn, isScheduleActive as Vr, NcScheduleSchema as Vt, ListTrackRelationsInputSchema as W, withSystemEventClasses as Wi, assertTimelapseCadences as Wn, isVectorIndexDimConflict as Wr, NcSnoozeSchema as Wt, MAX_TRACK_PURITIES as X, DeviceType as Xi, bundledCamstack as Xn, normalizeNcMediaPolicy as Xr, NcTemplatePreviewSchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, isSourceCap as Yi, buildViewerLink as Yn, ncMediaPolicyError as Yr, NcTemplatePreviewInputSchema as Yt, MAX_TRACK_RELATIONS as Z, errMsg as Zi, calendarEventLocalSpan as Zn, notificationRulesCapability as Zr, NcTemplateVarDescriptorSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, discriminatedUnion as _a, retrainRevisionConflictMessage as _i, SceneMonitorSchema as _n, embeddingRequirementsUnavailableError as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, customAction as aa, plateGalleryCapability as ai, RetrainDismissedSchema as an, deleteAlarmProfile as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, number as ba, ruleBelongsToAlarm as bi, SetTrackRelationInputSchema as bn, eventKindLabel as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, hydrateSchema as ca, readMotionTriggeredBy as ci, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as cn, deriveRecordingMode as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, normalizeNodeId as da, resolveClipSearchMinScore as di, SCENE_DEFAULT_CHECK_INTERVAL_SEC as dn, deviceAttentionKind as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, CamProfileSchema as ea, paletteResultSchema as ei, PackageLlmVerdictSchema as en, consumableFormOf as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, sleep as fa, resolveLocationMode as fi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as fn, deviceRemovalHookCapability as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, boolean as ga, resolvePoolMemoryPolicy as gi, SCENE_RESET_RECAPTURES as gn, embeddingRequirementsFailedError as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, array as ha, resolveNcMediaImage as hi, SCENE_DIVERGED as hn, embeddingRefusalOf as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, createEvent as ia, pipelineAnalyticsCapability as ii, RebuildObjectEmbeddingsRefusalSchema as in, createAlarmProfile as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, subjectPathSampleFromBox as ji, TrackSourceSchema as jn, isDefaultAlarmProfileId as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, unknown as ka, storageOccupancyCapability as ki, TrackRelationSchema as kn, isAppLinkBase as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, isDeviceScopedCap as la, readTimelapseGeneratedAt as li, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as ln, describeSystemEventDeliveryProblem as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, _enum as ma, resolveModeNotifyPolicy as mi, SCENE_DEFAULT_UNCOVERED_POLICY as mn, embeddingModelFailedError as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, RECORD_MAX_DATA_BYTES as na, parseProcStatus as ni, RECORDING_EXPORT_MAX_READ_BYTES as nn, coreBlockIdFromAddonId as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, defineCustomActions as oa, projectSubjectPath as oi, RetrainOriginSchema as on, deriveDetailCropRect as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, ZodObject as pa, resolveModeDelays as pi, SCENE_DEFAULT_QUIET_SECONDS as pn, embeddingEncoderCapability as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, canonicalHash as qi, buildEventKindDescriptor as qn, mayWriteToLocation as qr, NcSystemEventKindSchema as qt, CLIP_IMAGE_MODELS as r, RECORD_QUERY_MAX as ra, pickFaceRescoreIntervalMinutes as ri, RECORDING_SOURCE_CAMSTACK_ADDON as rn, cosineSimilarity as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, defineRecordKinds as sa, readDeviceStateFrom as si, RetrainStatusSchema as sn, derivePostTriggeredAction as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, InvalidRecordError as ta, parseAlertEpisodePayload as ti, PoolMemoryWatchdog as tn, consumableLowPercentOf as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, nodePin as ua, renameAlarmProfile as ui, SCENE_DEFAULT_ANCHOR_THRESHOLD as un, describeSystemEventFamilyProblem as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, literal as va, rootSupplyServes as vi, SetTrackPurityInputSchema as vn, encodeVectorBase64 as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, strictObject as wa, sceneMonitorCapability as wi, TimelapseRulePatchSchema as wn, gifDeriveSpeed as wr, NC_STATE_SUMMARY_SECTION_IDS as wt, COCO_TO_MACRO as x, object as xa, ruleDeviceCompatCapQueries as xi, TIMELAPSE_DENSE_FLOOR_SEC as xn, evictionPolicyOfLocation as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, looseObject as ya, ruleAutoTriggersAlarm as yi, SetTrackPurityResultSchema as yn, ensureAlarmProfiles as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, systemEventSummarySplitOf as zi, applyBlockingEdit as zn, isRetiredClearKey as zr, NcRuleTargetSchema as zt };