@camstack/addon-pipeline 1.2.624 → 1.2.626

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/THIRD_PARTY_MODELS.md +2 -2
  2. package/dist/audio-analyzer/index.js +3 -3
  3. package/dist/audio-analyzer/index.mjs +3 -3
  4. package/dist/{custom-model-catalog-Dx6W1kAo.mjs → custom-model-catalog-CacTUROW.mjs} +6 -6
  5. package/dist/{custom-model-catalog-6zwaRe6H.js → custom-model-catalog-CgxVHzSZ.js} +6 -6
  6. package/dist/detection-pipeline/index.js +16 -16
  7. package/dist/detection-pipeline/index.mjs +16 -16
  8. package/dist/{dist-BK3z-nti.mjs → dist-Bg9whnXR.mjs} +2055 -58
  9. package/dist/{dist-63VVVhpw.js → dist-CtbRj-Dn.js} +2055 -58
  10. package/dist/{model-catalogs-DyOMg-xZ.js → model-catalogs-BQqKruf-.js} +3 -3
  11. package/dist/{model-catalogs-CllYj2Q2.mjs → model-catalogs-D04DNvMI.mjs} +3 -3
  12. package/dist/motion-wasm/index.js +1 -1
  13. package/dist/motion-wasm/index.mjs +1 -1
  14. package/dist/{node-BAcWHimZ.mjs → node-CfgKBxdH.mjs} +2 -2
  15. package/dist/{node-DdaBnHEq.js → node-PivXOnUx.js} +2 -2
  16. package/dist/pipeline-runner/index.js +20 -20
  17. package/dist/pipeline-runner/index.mjs +20 -20
  18. package/dist/{process-memory-CUlknrLl.js → process-memory-68U4DnuZ.js} +1 -1
  19. package/dist/{process-memory-OZwib1pK.mjs → process-memory-Z6v2Fm60.mjs} +1 -1
  20. package/dist/recorder/index.js +26 -1816
  21. package/dist/recorder/index.mjs +26 -1816
  22. package/dist/{restream-intent-DyGmLAU9.mjs → restream-intent-DvzCnthK.mjs} +1 -1
  23. package/dist/{restream-intent-7uDNqMKs.js → restream-intent-DzrZ_EHP.js} +1 -1
  24. package/dist/{segment-demux-js-WNlg0SXP.js → segment-demux-js-BcnG-zVD.js} +1 -1
  25. package/dist/{segment-demux-js-C3rhCLCG.mjs → segment-demux-js-CRzvBMVr.mjs} +1 -1
  26. package/dist/session-decode/decode-worker-main.js +8 -8
  27. package/dist/session-decode/decode-worker-main.mjs +8 -8
  28. package/dist/stream-broker/_stub.js +1 -1
  29. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Di7t7N3r.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-B9jSVeoa.mjs} +3 -3
  30. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D-GlPMcf.mjs +26 -0
  31. package/dist/stream-broker/demux-worker-child.js +1 -1
  32. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  33. package/dist/stream-broker/{hostInit-CMDvBrqv.mjs → hostInit-C_J8Mxe2.mjs} +3 -3
  34. package/dist/stream-broker/index.js +34 -34
  35. package/dist/stream-broker/index.mjs +34 -34
  36. package/dist/stream-broker/remoteEntry.js +1 -1
  37. package/package.json +1 -1
  38. package/python/inference_pool.py +3 -3
  39. package/python/postprocessors/ctc.py +1 -1
  40. package/python/postprocessors/plate_slots.py +2 -2
  41. package/python/postprocessors/test_ctc.py +1 -1
  42. package/python/postprocessors/test_plate_slots.py +1 -1
  43. package/python/postprocessors/test_ssd.py +1 -1
  44. package/python/postprocessors/test_yolo_split_dfl.py +3 -3
  45. package/python/postprocessors/test_yolo_split_dfl_numpy.py +5 -5
  46. package/python/postprocessors/test_yolonas.py +5 -5
  47. package/python/postprocessors/test_yolov9_edgetpu_concat.py +3 -3
  48. package/python/postprocessors/testdata/yunet_int8_outputs.json +2 -2
  49. package/python/postprocessors/yolo_split_dfl.py +5 -5
  50. package/python/postprocessors/yolonas.py +3 -3
  51. package/python/test_dequant_edgetpu.py +2 -2
  52. package/python/test_inference_pool_preprocess.py +2 -2
  53. package/python/webgpu_isolated.py +1 -1
  54. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DDRGMoJ1.mjs +0 -26
@@ -1,7 +1,7 @@
1
- import { $n as defineCustomActions, An as stripRetiredBandPreBufferSec, At as evictionPolicyForMode, B as RECORDING_SOURCE_CAMSTACK, Bt as isFirstLevelMacroClass, C as EVENT_PAD_MS, Cr as record, Ct as dominantClipLabels, Dn as storageEvictableCapability, Er as EventCategory, G as RecordingSignalStatusSchema, Gn as BaseAddon, Hn as DeviceType, It as gbToBytes, J as VISIT_MERGE_GAP_MS, Jt as memoizePinnedFfmpeg, Kt as mayReadLocation, Mn as videoclipsCapability, Mt as exportSubjectOf, On as storageOccupancyCapability, P as OpsLogEntrySchema, Qn as customAction, Rn as evaluateSensorEdge, S as EVENT_OWNER_TYPES, Sr as preprocess, St as deviceRemovalHookCapability, T as ExportRecordSchema, Tn as startMoverUnderClearance, Un as errMsg$1, Ut as loadContributionCapability, V as RECORDING_SOURCE_CAMSTACK_ADDON, Vn as DeviceFeature, W as RecordingConfigSchema, Xt as modeMayWrite, Yt as migrateLegacyDeviceSignalConfig, _n as resolveLocationMode, _t as deriveBatteryPresence, bn as resolveRecordingProfiles, br as number, ct as clipExportFailure, dn as recordingExportCapability, dr as selectAssignedProfileSlots, er as defineRecordKinds, et as armRemovalReconcile, fn as recordingSignalCapability, fr as sleep$1, gr as boolean, hn as resolveCreateExportSubject, hr as array, it as batteryCapability, jt as evictionPolicyOfLocation, kt as eventOverlapsClipWindow, ln as recordingArchiveCapability, lr as nodePin, lt as clipExportFailureOf, mr as _enum, o as BatteryStatusSchema, pr as userError, q as VIDEOCLIPS_MAX_OFFER_BYTES, qt as mayWriteToLocation, rr as hydrateSchema, s as CLIP_BROKER_PACED_RATES, un as recordingCapability, v as DEFAULT_EVENTS_BAND_BUFFER_SEC, wr as string, xr as object, yt as deriveRecordingMode, z as RECORDING_EXPORT_MAX_READ_BYTES } from "../dist-BK3z-nti.mjs";
2
- import { i as NO_COST_CLAIM, o as physicalRootOf, t as ChildCostRegistry } from "../node-BAcWHimZ.mjs";
1
+ import { $n as defineCustomActions, An as stripRetiredBandPreBufferSec, At as evictionPolicyForMode, B as RECORDING_SOURCE_CAMSTACK, Bt as isFirstLevelMacroClass, C as EVENT_PAD_MS, Cr as record, Ct as dominantClipLabels, Dn as storageEvictableCapability, Er as EventCategory, G as RecordingSignalStatusSchema, Gn as BaseAddon, Hn as DeviceType, It as gbToBytes, J as VISIT_MERGE_GAP_MS, Jt as memoizePinnedFfmpeg, Kt as mayReadLocation, Mn as videoclipsCapability, Mt as exportSubjectOf, On as storageOccupancyCapability, P as OpsLogEntrySchema, Qn as customAction, Rn as evaluateSensorEdge, S as EVENT_OWNER_TYPES, Sr as preprocess, St as deviceRemovalHookCapability, T as ExportRecordSchema, Tn as startMoverUnderClearance, Un as errMsg$1, Ut as loadContributionCapability, V as RECORDING_SOURCE_CAMSTACK_ADDON, Vn as DeviceFeature, W as RecordingConfigSchema, Xt as modeMayWrite, Yt as migrateLegacyDeviceSignalConfig, _n as resolveLocationMode, _t as deriveBatteryPresence, bn as resolveRecordingProfiles, br as number, ct as clipExportFailure, dn as recordingExportCapability, dr as selectAssignedProfileSlots, er as defineRecordKinds, et as armRemovalReconcile, fn as recordingSignalCapability, fr as sleep$1, gr as boolean, hn as resolveCreateExportSubject, hr as array, it as batteryCapability, jt as evictionPolicyOfLocation, kt as eventOverlapsClipWindow, ln as recordingArchiveCapability, lr as nodePin, lt as clipExportFailureOf, mr as _enum, o as BatteryStatusSchema, pr as userError, q as VIDEOCLIPS_MAX_OFFER_BYTES, qt as mayWriteToLocation, rr as hydrateSchema, s as CLIP_BROKER_PACED_RATES, un as recordingCapability, v as DEFAULT_EVENTS_BAND_BUFFER_SEC, wr as string, xr as object, yt as deriveRecordingMode, z as RECORDING_EXPORT_MAX_READ_BYTES } from "../dist-Bg9whnXR.mjs";
2
+ import { i as NO_COST_CLAIM, o as physicalRootOf, t as ChildCostRegistry } from "../node-CfgKBxdH.mjs";
3
3
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
4
- import { d as PREBUFFER_MAX_MS, l as withRecordingIntent, r as RECORDING_PRE_ROLL_REQUEST_MS } from "../restream-intent-DyGmLAU9.mjs";
4
+ import { d as PREBUFFER_MAX_MS, l as withRecordingIntent, r as RECORDING_PRE_ROLL_REQUEST_MS } from "../restream-intent-DvzCnthK.mjs";
5
5
  import { randomUUID } from "node:crypto";
6
6
  import { createReadStream, promises, realpathSync } from "node:fs";
7
7
  import path from "node:path";
@@ -3935,7 +3935,7 @@ function summarizeEvictionsByDevice(victims, orphanDeviceIds) {
3935
3935
  * `getDaysWithRecordings` and `getAvailability` answer from
3936
3936
  * `index.segments(deviceId)`, so the date selector — the first thing an operator
3937
3937
  * sees — cannot resolve until the archive-wide walk has finished. Measured on
3938
- * the live archive (device 590, `low`): that walk is **68,457 ms over 258,449
3938
+ * the live archive (device 104, `low`): that walk is **68,457 ms over 258,449
3939
3939
  * files**, while the questions it is being asked cost
3940
3940
  *
3941
3941
  * which days of a month 28 entries 1 ms
@@ -4114,9 +4114,9 @@ async function segmentsOfHour(root, deviceId, profile, hourStartMs) {
4114
4114
  *
4115
4115
  * {@link availabilityProfile} deliberately returns ONE — the timeline is a
4116
4116
  * single bar. That is right for the bar and wrong for the ANSWER: on
4117
- * 2026-09-10 `getAvailability` reported twenty `high` ranges for camera 615
4117
+ * 2026-09-10 `getAvailability` reported twenty `high` ranges for camera 101
4118
4118
  * and the conclusion drawn was that this deployment records no `low` at all,
4119
- * while `/media-fast/recordingsLow/615/low/` held 14 GB on a different
4119
+ * while `/media-fast/recordingsLow/101/low/` held 14 GB on a different
4120
4120
  * location (D433).
4121
4121
  *
4122
4122
  * Unions across roots for exactly that reason: `high` and `low` do not share a
@@ -5022,7 +5022,7 @@ function archiveUsageComplete(ledger, locationIds) {
5022
5022
  * Per-device recording-config persistence for the recorder addon.
5023
5023
  *
5024
5024
  * A camera's config is its PER-DEVICE SETTINGS (D865), key `recordingConfig`,
5025
- * through `ctx.settings.*DeviceStore`. Asking what camera 617 records is one
5025
+ * through `ctx.settings.*DeviceStore`. Asking what camera 102 records is one
5026
5026
  * scope read; saving its config writes that key and touches no other camera.
5027
5027
  * Deleting the camera clears the scope centrally.
5028
5028
  *
@@ -5031,7 +5031,7 @@ function archiveUsageComplete(ledger, locationIds) {
5031
5031
  * Until the 2026-08-19 flatten every camera's `RecordingConfig` lived in ONE
5032
5032
  * key of the recorder's `addon-settings` / `root` blob — a row that was 201 833
5033
5033
  * bytes on the reference hub, because the ops-log and the export history shared
5034
- * it. So `loadDeviceConfig(617)` read and `JSON.parse`d 201 KB, and
5034
+ * it. So `loadDeviceConfig(102)` read and `JSON.parse`d 201 KB, and
5035
5035
  * `saveDeviceConfig` read that, merged, and rewrote it. The staging walk did it
5036
5036
  * once per device and lost 45–267 s of a boot to it (2026-08-18); teaching the
5037
5037
  * walk to read the map once capped the symptom, and this removes the cause.
@@ -6244,1796 +6244,6 @@ Object.freeze({
6244
6244
  "readClipBytes"
6245
6245
  ]
6246
6246
  });
6247
- Object.freeze({ "doorbell": "lastPressedAt" });
6248
- Object.freeze({
6249
- "air-quality-sensor": [
6250
- {
6251
- "path": "co2Ppm",
6252
- "valueType": "number"
6253
- },
6254
- {
6255
- "path": "vocPpb",
6256
- "valueType": "number"
6257
- },
6258
- {
6259
- "path": "pm25",
6260
- "valueType": "number"
6261
- },
6262
- {
6263
- "path": "pm10",
6264
- "valueType": "number"
6265
- },
6266
- {
6267
- "path": "aqi",
6268
- "valueType": "number"
6269
- },
6270
- {
6271
- "path": "unit",
6272
- "valueType": "string"
6273
- },
6274
- {
6275
- "path": "precision",
6276
- "valueType": "number"
6277
- }
6278
- ],
6279
- "alarm-panel": [
6280
- {
6281
- "path": "state",
6282
- "valueType": "enum",
6283
- "enumValues": [
6284
- "disarmed",
6285
- "armed_home",
6286
- "armed_away",
6287
- "armed_night",
6288
- "armed_vacation",
6289
- "armed_custom_bypass",
6290
- "arming",
6291
- "disarming",
6292
- "pending",
6293
- "triggered"
6294
- ]
6295
- },
6296
- {
6297
- "path": "targetMode",
6298
- "valueType": "enum",
6299
- "enumValues": [
6300
- "home",
6301
- "away",
6302
- "night",
6303
- "vacation",
6304
- "custom_bypass"
6305
- ]
6306
- },
6307
- {
6308
- "path": "requiresCode",
6309
- "valueType": "boolean"
6310
- }
6311
- ],
6312
- "ambient-light-sensor": [
6313
- {
6314
- "path": "lux",
6315
- "valueType": "number"
6316
- },
6317
- {
6318
- "path": "unit",
6319
- "valueType": "string"
6320
- },
6321
- {
6322
- "path": "precision",
6323
- "valueType": "number"
6324
- }
6325
- ],
6326
- "audio-metrics": [
6327
- {
6328
- "path": "ts",
6329
- "valueType": "number"
6330
- },
6331
- {
6332
- "path": "windowSec",
6333
- "valueType": "number"
6334
- },
6335
- {
6336
- "path": "level.rms",
6337
- "valueType": "number"
6338
- },
6339
- {
6340
- "path": "level.dbfs",
6341
- "valueType": "number"
6342
- },
6343
- {
6344
- "path": "peakDbfs",
6345
- "valueType": "number"
6346
- },
6347
- {
6348
- "path": "avgDbfs",
6349
- "valueType": "number"
6350
- },
6351
- {
6352
- "path": "current.className",
6353
- "valueType": "string"
6354
- },
6355
- {
6356
- "path": "current.score",
6357
- "valueType": "number"
6358
- },
6359
- {
6360
- "path": "current.timestamp",
6361
- "valueType": "number"
6362
- }
6363
- ],
6364
- "automation-control": [
6365
- {
6366
- "path": "enabled",
6367
- "valueType": "boolean"
6368
- },
6369
- {
6370
- "path": "isRunning",
6371
- "valueType": "boolean"
6372
- },
6373
- {
6374
- "path": "lastTriggeredAt",
6375
- "valueType": "number"
6376
- },
6377
- {
6378
- "path": "lastError",
6379
- "valueType": "string"
6380
- }
6381
- ],
6382
- "battery": [
6383
- {
6384
- "path": "percentage",
6385
- "valueType": "number"
6386
- },
6387
- {
6388
- "path": "charging",
6389
- "valueType": "enum",
6390
- "enumValues": [
6391
- "dc",
6392
- "solar",
6393
- "none",
6394
- "unknown"
6395
- ]
6396
- },
6397
- {
6398
- "path": "sleeping",
6399
- "valueType": "boolean"
6400
- },
6401
- {
6402
- "path": "lastUpdated",
6403
- "valueType": "number"
6404
- },
6405
- {
6406
- "path": "lastContactAt",
6407
- "valueType": "number"
6408
- },
6409
- {
6410
- "path": "lastFullRefreshAt",
6411
- "valueType": "number"
6412
- },
6413
- {
6414
- "path": "binary",
6415
- "valueType": "boolean"
6416
- }
6417
- ],
6418
- "binary": [{
6419
- "path": "on",
6420
- "valueType": "boolean"
6421
- }],
6422
- "brightness": [{
6423
- "path": "percentage",
6424
- "valueType": "number"
6425
- }],
6426
- "broker": [{
6427
- "path": "brokerCount",
6428
- "valueType": "number"
6429
- }, {
6430
- "path": "connectedCount",
6431
- "valueType": "number"
6432
- }],
6433
- "camera-credentials": [
6434
- {
6435
- "path": "host",
6436
- "valueType": "string"
6437
- },
6438
- {
6439
- "path": "port",
6440
- "valueType": "number"
6441
- },
6442
- {
6443
- "path": "onvifPort",
6444
- "valueType": "number"
6445
- },
6446
- {
6447
- "path": "rtspPort",
6448
- "valueType": "number"
6449
- },
6450
- {
6451
- "path": "https",
6452
- "valueType": "boolean"
6453
- },
6454
- {
6455
- "path": "hasUsername",
6456
- "valueType": "boolean"
6457
- },
6458
- {
6459
- "path": "hasPassword",
6460
- "valueType": "boolean"
6461
- },
6462
- {
6463
- "path": "onvifProfile",
6464
- "valueType": "string"
6465
- }
6466
- ],
6467
- "camera-streams": [
6468
- {
6469
- "path": "online",
6470
- "valueType": "boolean"
6471
- },
6472
- {
6473
- "path": "slotStatuses.high",
6474
- "valueType": "enum",
6475
- "enumValues": [
6476
- "unassigned",
6477
- "idle",
6478
- "connecting",
6479
- "streaming",
6480
- "error"
6481
- ]
6482
- },
6483
- {
6484
- "path": "slotStatuses.mid",
6485
- "valueType": "enum",
6486
- "enumValues": [
6487
- "unassigned",
6488
- "idle",
6489
- "connecting",
6490
- "streaming",
6491
- "error"
6492
- ]
6493
- },
6494
- {
6495
- "path": "slotStatuses.low",
6496
- "valueType": "enum",
6497
- "enumValues": [
6498
- "unassigned",
6499
- "idle",
6500
- "connecting",
6501
- "streaming",
6502
- "error"
6503
- ]
6504
- },
6505
- {
6506
- "path": "slotErrors.high",
6507
- "valueType": "string"
6508
- },
6509
- {
6510
- "path": "slotErrors.mid",
6511
- "valueType": "string"
6512
- },
6513
- {
6514
- "path": "slotErrors.low",
6515
- "valueType": "string"
6516
- }
6517
- ],
6518
- "carbon-monoxide": [{
6519
- "path": "detected",
6520
- "valueType": "boolean"
6521
- }],
6522
- "climate-control": [
6523
- {
6524
- "path": "mode",
6525
- "valueType": "enum",
6526
- "enumValues": [
6527
- "off",
6528
- "heat",
6529
- "cool",
6530
- "auto",
6531
- "heat_cool",
6532
- "fan_only",
6533
- "dry"
6534
- ]
6535
- },
6536
- {
6537
- "path": "fanMode",
6538
- "valueType": "string"
6539
- },
6540
- {
6541
- "path": "preset",
6542
- "valueType": "string"
6543
- },
6544
- {
6545
- "path": "target",
6546
- "valueType": "number"
6547
- },
6548
- {
6549
- "path": "targetHigh",
6550
- "valueType": "number"
6551
- },
6552
- {
6553
- "path": "targetLow",
6554
- "valueType": "number"
6555
- },
6556
- {
6557
- "path": "targetHumidity",
6558
- "valueType": "number"
6559
- },
6560
- {
6561
- "path": "currentTemp",
6562
- "valueType": "number"
6563
- },
6564
- {
6565
- "path": "currentHumidity",
6566
- "valueType": "number"
6567
- },
6568
- {
6569
- "path": "swingVertical",
6570
- "valueType": "boolean"
6571
- },
6572
- {
6573
- "path": "swingHorizontal",
6574
- "valueType": "boolean"
6575
- },
6576
- {
6577
- "path": "minTemp",
6578
- "valueType": "number"
6579
- },
6580
- {
6581
- "path": "maxTemp",
6582
- "valueType": "number"
6583
- },
6584
- {
6585
- "path": "tempStep",
6586
- "valueType": "number"
6587
- }
6588
- ],
6589
- "color": [
6590
- {
6591
- "path": "mode",
6592
- "valueType": "enum",
6593
- "enumValues": [
6594
- "rgb",
6595
- "hsv",
6596
- "mired"
6597
- ]
6598
- },
6599
- {
6600
- "path": "rgb.r",
6601
- "valueType": "number"
6602
- },
6603
- {
6604
- "path": "rgb.g",
6605
- "valueType": "number"
6606
- },
6607
- {
6608
- "path": "rgb.b",
6609
- "valueType": "number"
6610
- },
6611
- {
6612
- "path": "hsv.h",
6613
- "valueType": "number"
6614
- },
6615
- {
6616
- "path": "hsv.s",
6617
- "valueType": "number"
6618
- },
6619
- {
6620
- "path": "hsv.v",
6621
- "valueType": "number"
6622
- },
6623
- {
6624
- "path": "mireds",
6625
- "valueType": "number"
6626
- }
6627
- ],
6628
- "connectivity": [{
6629
- "path": "connected",
6630
- "valueType": "boolean"
6631
- }],
6632
- "contact": [{
6633
- "path": "entryOpen",
6634
- "valueType": "boolean"
6635
- }],
6636
- "control": [
6637
- {
6638
- "path": "kind",
6639
- "valueType": "enum",
6640
- "enumValues": [
6641
- "numeric",
6642
- "select",
6643
- "text",
6644
- "datetime"
6645
- ]
6646
- },
6647
- {
6648
- "path": "unit",
6649
- "valueType": "string"
6650
- },
6651
- {
6652
- "path": "min",
6653
- "valueType": "number"
6654
- },
6655
- {
6656
- "path": "max",
6657
- "valueType": "number"
6658
- },
6659
- {
6660
- "path": "step",
6661
- "valueType": "number"
6662
- },
6663
- {
6664
- "path": "precision",
6665
- "valueType": "number"
6666
- },
6667
- {
6668
- "path": "format",
6669
- "valueType": "enum",
6670
- "enumValues": [
6671
- "date",
6672
- "time",
6673
- "datetime"
6674
- ]
6675
- }
6676
- ],
6677
- "cover": [
6678
- {
6679
- "path": "state",
6680
- "valueType": "enum",
6681
- "enumValues": [
6682
- "open",
6683
- "opening",
6684
- "closing",
6685
- "closed",
6686
- "stopped"
6687
- ]
6688
- },
6689
- {
6690
- "path": "position",
6691
- "valueType": "number"
6692
- },
6693
- {
6694
- "path": "tiltPosition",
6695
- "valueType": "number"
6696
- }
6697
- ],
6698
- "day-night": [
6699
- {
6700
- "path": "mode",
6701
- "valueType": "enum",
6702
- "enumValues": [
6703
- "auto",
6704
- "day",
6705
- "night",
6706
- "schedule"
6707
- ]
6708
- },
6709
- {
6710
- "path": "sensitivity",
6711
- "valueType": "number"
6712
- },
6713
- {
6714
- "path": "switchDelaySec",
6715
- "valueType": "number"
6716
- }
6717
- ],
6718
- "device-adoption": [
6719
- {
6720
- "path": "lastDiscoveryAt",
6721
- "valueType": "number"
6722
- },
6723
- {
6724
- "path": "candidateCount",
6725
- "valueType": "number"
6726
- },
6727
- {
6728
- "path": "adoptedCount",
6729
- "valueType": "number"
6730
- },
6731
- {
6732
- "path": "lastError",
6733
- "valueType": "string"
6734
- }
6735
- ],
6736
- "device-discovery": [{
6737
- "path": "lastDiscoveryAt",
6738
- "valueType": "number"
6739
- }, {
6740
- "path": "lastError",
6741
- "valueType": "string"
6742
- }],
6743
- "device-export": [
6744
- {
6745
- "path": "linkState",
6746
- "valueType": "enum",
6747
- "enumValues": [
6748
- "unlinked",
6749
- "linked",
6750
- "error"
6751
- ]
6752
- },
6753
- {
6754
- "path": "exposedDeviceCount",
6755
- "valueType": "number"
6756
- },
6757
- {
6758
- "path": "error",
6759
- "valueType": "string"
6760
- },
6761
- {
6762
- "path": "setup.qr",
6763
- "valueType": "string"
6764
- },
6765
- {
6766
- "path": "setup.note",
6767
- "valueType": "string"
6768
- }
6769
- ],
6770
- "device-status": [{
6771
- "path": "online",
6772
- "valueType": "boolean"
6773
- }],
6774
- "dishwasher": [
6775
- {
6776
- "path": "availability",
6777
- "valueType": "enum",
6778
- "enumValues": [
6779
- "available",
6780
- "offline",
6781
- "description-missing"
6782
- ]
6783
- },
6784
- {
6785
- "path": "state",
6786
- "valueType": "enum",
6787
- "enumValues": [
6788
- "idle",
6789
- "running",
6790
- "paused",
6791
- "finished",
6792
- "error",
6793
- "unavailable"
6794
- ]
6795
- },
6796
- {
6797
- "path": "operationState",
6798
- "valueType": "enum",
6799
- "enumValues": [
6800
- "Inactive",
6801
- "Ready",
6802
- "DelayedStart",
6803
- "Run",
6804
- "Pause",
6805
- "ActionRequired",
6806
- "Finished",
6807
- "Error",
6808
- "Aborting"
6809
- ]
6810
- },
6811
- {
6812
- "path": "program",
6813
- "valueType": "string"
6814
- },
6815
- {
6816
- "path": "selectedProgram",
6817
- "valueType": "string"
6818
- },
6819
- {
6820
- "path": "remainingSeconds",
6821
- "valueType": "number"
6822
- },
6823
- {
6824
- "path": "delayedStartSeconds",
6825
- "valueType": "number"
6826
- },
6827
- {
6828
- "path": "progressPercent",
6829
- "valueType": "number"
6830
- },
6831
- {
6832
- "path": "doorOpen",
6833
- "valueType": "boolean"
6834
- },
6835
- {
6836
- "path": "doorLocked",
6837
- "valueType": "boolean"
6838
- },
6839
- {
6840
- "path": "remoteStartAllowed",
6841
- "valueType": "boolean"
6842
- },
6843
- {
6844
- "path": "remoteControlActive",
6845
- "valueType": "boolean"
6846
- },
6847
- {
6848
- "path": "localControlActive",
6849
- "valueType": "boolean"
6850
- },
6851
- {
6852
- "path": "powerOn",
6853
- "valueType": "boolean"
6854
- },
6855
- {
6856
- "path": "powerState",
6857
- "valueType": "string"
6858
- },
6859
- {
6860
- "path": "filterCleaningDue",
6861
- "valueType": "boolean"
6862
- },
6863
- {
6864
- "path": "machineCareDue",
6865
- "valueType": "boolean"
6866
- },
6867
- {
6868
- "path": "machineCareRemainingRuns",
6869
- "valueType": "number"
6870
- },
6871
- {
6872
- "path": "halfLoad",
6873
- "valueType": "boolean"
6874
- },
6875
- {
6876
- "path": "hygienePlus",
6877
- "valueType": "boolean"
6878
- },
6879
- {
6880
- "path": "extraDry",
6881
- "valueType": "boolean"
6882
- },
6883
- {
6884
- "path": "intensiveZone",
6885
- "valueType": "boolean"
6886
- },
6887
- {
6888
- "path": "varioSpeedPlus",
6889
- "valueType": "boolean"
6890
- },
6891
- {
6892
- "path": "childLock",
6893
- "valueType": "boolean"
6894
- },
6895
- {
6896
- "path": "errorCode",
6897
- "valueType": "number"
6898
- },
6899
- {
6900
- "path": "errorLabel",
6901
- "valueType": "string"
6902
- }
6903
- ],
6904
- "doorbell": [{
6905
- "path": "lastPressedAt",
6906
- "valueType": "number"
6907
- }, {
6908
- "path": "pressCountSinceStart",
6909
- "valueType": "number"
6910
- }],
6911
- "enum-sensor": [{
6912
- "path": "value",
6913
- "valueType": "string"
6914
- }, {
6915
- "path": "format",
6916
- "valueType": "enum",
6917
- "enumValues": [
6918
- "date",
6919
- "time",
6920
- "datetime"
6921
- ]
6922
- }],
6923
- "event-emitter": [
6924
- {
6925
- "path": "lastEvent.deviceId",
6926
- "valueType": "number"
6927
- },
6928
- {
6929
- "path": "lastEvent.eventType",
6930
- "valueType": "string"
6931
- },
6932
- {
6933
- "path": "lastEvent.timestamp",
6934
- "valueType": "number"
6935
- },
6936
- {
6937
- "path": "lastEvent.seq",
6938
- "valueType": "number"
6939
- },
6940
- {
6941
- "path": "eventCountSinceStart",
6942
- "valueType": "number"
6943
- }
6944
- ],
6945
- "fan-control": [
6946
- {
6947
- "path": "percentage",
6948
- "valueType": "number"
6949
- },
6950
- {
6951
- "path": "percentageStep",
6952
- "valueType": "number"
6953
- },
6954
- {
6955
- "path": "preset",
6956
- "valueType": "string"
6957
- },
6958
- {
6959
- "path": "direction",
6960
- "valueType": "enum",
6961
- "enumValues": ["forward", "reverse"]
6962
- },
6963
- {
6964
- "path": "oscillating",
6965
- "valueType": "boolean"
6966
- }
6967
- ],
6968
- "feature-probe": [
6969
- {
6970
- "path": "deviceType",
6971
- "valueType": "string"
6972
- },
6973
- {
6974
- "path": "model",
6975
- "valueType": "string"
6976
- },
6977
- {
6978
- "path": "channelCount",
6979
- "valueType": "number"
6980
- },
6981
- {
6982
- "path": "lastProbedAt",
6983
- "valueType": "number"
6984
- }
6985
- ],
6986
- "flood": [{
6987
- "path": "flooded",
6988
- "valueType": "boolean"
6989
- }],
6990
- "gas": [{
6991
- "path": "detected",
6992
- "valueType": "boolean"
6993
- }],
6994
- "heating-valve": [{
6995
- "path": "position",
6996
- "valueType": "number"
6997
- }],
6998
- "humidifier": [
6999
- {
7000
- "path": "on",
7001
- "valueType": "boolean"
7002
- },
7003
- {
7004
- "path": "currentHumidity",
7005
- "valueType": "number"
7006
- },
7007
- {
7008
- "path": "targetHumidity",
7009
- "valueType": "number"
7010
- },
7011
- {
7012
- "path": "mode",
7013
- "valueType": "string"
7014
- },
7015
- {
7016
- "path": "action",
7017
- "valueType": "string"
7018
- },
7019
- {
7020
- "path": "minHumidity",
7021
- "valueType": "number"
7022
- },
7023
- {
7024
- "path": "maxHumidity",
7025
- "valueType": "number"
7026
- }
7027
- ],
7028
- "humidity-sensor": [
7029
- {
7030
- "path": "percent",
7031
- "valueType": "number"
7032
- },
7033
- {
7034
- "path": "unit",
7035
- "valueType": "string"
7036
- },
7037
- {
7038
- "path": "precision",
7039
- "valueType": "number"
7040
- }
7041
- ],
7042
- "image": [{
7043
- "path": "url",
7044
- "valueType": "string"
7045
- }, {
7046
- "path": "lastUpdated",
7047
- "valueType": "number"
7048
- }],
7049
- "image-settings": [
7050
- {
7051
- "path": "brightness",
7052
- "valueType": "number"
7053
- },
7054
- {
7055
- "path": "contrast",
7056
- "valueType": "number"
7057
- },
7058
- {
7059
- "path": "saturation",
7060
- "valueType": "number"
7061
- },
7062
- {
7063
- "path": "sharpness",
7064
- "valueType": "number"
7065
- },
7066
- {
7067
- "path": "mirror",
7068
- "valueType": "boolean"
7069
- },
7070
- {
7071
- "path": "flip",
7072
- "valueType": "boolean"
7073
- },
7074
- {
7075
- "path": "rotate",
7076
- "valueType": "enum",
7077
- "enumValues": [
7078
- "0",
7079
- "90",
7080
- "180",
7081
- "270"
7082
- ]
7083
- },
7084
- {
7085
- "path": "whiteBalance",
7086
- "valueType": "enum",
7087
- "enumValues": ["auto", "manual"]
7088
- },
7089
- {
7090
- "path": "warmth",
7091
- "valueType": "number"
7092
- },
7093
- {
7094
- "path": "exposureMode",
7095
- "valueType": "enum",
7096
- "enumValues": ["auto", "manual"]
7097
- },
7098
- {
7099
- "path": "backlightMode",
7100
- "valueType": "enum",
7101
- "enumValues": [
7102
- "off",
7103
- "blc",
7104
- "wdr",
7105
- "hlc"
7106
- ]
7107
- }
7108
- ],
7109
- "intercom": [
7110
- {
7111
- "path": "talking",
7112
- "valueType": "boolean"
7113
- },
7114
- {
7115
- "path": "lastSessionAt",
7116
- "valueType": "number"
7117
- },
7118
- {
7119
- "path": "ability.sampleRate",
7120
- "valueType": "number"
7121
- },
7122
- {
7123
- "path": "ability.duplex",
7124
- "valueType": "enum",
7125
- "enumValues": ["half", "full"]
7126
- },
7127
- {
7128
- "path": "ability.maxBacklogMs",
7129
- "valueType": "number"
7130
- }
7131
- ],
7132
- "lawn-mower-control": [
7133
- {
7134
- "path": "activity",
7135
- "valueType": "enum",
7136
- "enumValues": [
7137
- "idle",
7138
- "mowing",
7139
- "paused",
7140
- "docked",
7141
- "error"
7142
- ]
7143
- },
7144
- {
7145
- "path": "batteryLevel",
7146
- "valueType": "number"
7147
- },
7148
- {
7149
- "path": "progressPercent",
7150
- "valueType": "number"
7151
- },
7152
- {
7153
- "path": "currentCode",
7154
- "valueType": "number"
7155
- },
7156
- {
7157
- "path": "currentCodeLabel",
7158
- "valueType": "string"
7159
- },
7160
- {
7161
- "path": "severity",
7162
- "valueType": "enum",
7163
- "enumValues": [
7164
- "info",
7165
- "warning",
7166
- "error"
7167
- ]
7168
- }
7169
- ],
7170
- "lock-control": [{
7171
- "path": "state",
7172
- "valueType": "enum",
7173
- "enumValues": [
7174
- "locked",
7175
- "unlocked",
7176
- "locking",
7177
- "unlocking",
7178
- "jammed"
7179
- ]
7180
- }],
7181
- "media-player": [
7182
- {
7183
- "path": "state",
7184
- "valueType": "enum",
7185
- "enumValues": [
7186
- "off",
7187
- "on",
7188
- "idle",
7189
- "playing",
7190
- "paused",
7191
- "buffering",
7192
- "standby"
7193
- ]
7194
- },
7195
- {
7196
- "path": "volumeLevel",
7197
- "valueType": "number"
7198
- },
7199
- {
7200
- "path": "isMuted",
7201
- "valueType": "boolean"
7202
- },
7203
- {
7204
- "path": "source",
7205
- "valueType": "string"
7206
- },
7207
- {
7208
- "path": "currentMedia.type",
7209
- "valueType": "string"
7210
- },
7211
- {
7212
- "path": "currentMedia.title",
7213
- "valueType": "string"
7214
- },
7215
- {
7216
- "path": "currentMedia.artist",
7217
- "valueType": "string"
7218
- },
7219
- {
7220
- "path": "currentMedia.album",
7221
- "valueType": "string"
7222
- },
7223
- {
7224
- "path": "currentMedia.imageUrl",
7225
- "valueType": "string"
7226
- },
7227
- {
7228
- "path": "positionMs",
7229
- "valueType": "number"
7230
- },
7231
- {
7232
- "path": "durationMs",
7233
- "valueType": "number"
7234
- },
7235
- {
7236
- "path": "shuffle",
7237
- "valueType": "boolean"
7238
- },
7239
- {
7240
- "path": "repeat",
7241
- "valueType": "enum",
7242
- "enumValues": [
7243
- "off",
7244
- "all",
7245
- "one"
7246
- ]
7247
- }
7248
- ],
7249
- "motion": [
7250
- {
7251
- "path": "detected",
7252
- "valueType": "boolean"
7253
- },
7254
- {
7255
- "path": "lastDetectedAt",
7256
- "valueType": "number"
7257
- },
7258
- {
7259
- "path": "autoClearAfterMs",
7260
- "valueType": "number"
7261
- }
7262
- ],
7263
- "motion-trigger": [{
7264
- "path": "enabled",
7265
- "valueType": "boolean"
7266
- }],
7267
- "motion-zones": [{
7268
- "path": "enabled",
7269
- "valueType": "boolean"
7270
- }, {
7271
- "path": "sensitivity",
7272
- "valueType": "number"
7273
- }],
7274
- "mqtt-broker": [{
7275
- "path": "brokerCount",
7276
- "valueType": "number"
7277
- }, {
7278
- "path": "embeddedRunning",
7279
- "valueType": "boolean"
7280
- }],
7281
- "native-object-detection": [{
7282
- "path": "enabled",
7283
- "valueType": "boolean"
7284
- }],
7285
- "navigation": [
7286
- {
7287
- "path": "mode",
7288
- "valueType": "enum",
7289
- "enumValues": [
7290
- "idle",
7291
- "cleaning",
7292
- "spot",
7293
- "following",
7294
- "goto",
7295
- "returning",
7296
- "paused",
7297
- "unknown"
7298
- ]
7299
- },
7300
- {
7301
- "path": "following",
7302
- "valueType": "boolean"
7303
- },
7304
- {
7305
- "path": "flash",
7306
- "valueType": "boolean"
7307
- },
7308
- {
7309
- "path": "lightMode",
7310
- "valueType": "enum",
7311
- "enumValues": ["auto", "manual"]
7312
- },
7313
- {
7314
- "path": "lightLevel",
7315
- "valueType": "number"
7316
- }
7317
- ],
7318
- "network-link": [
7319
- {
7320
- "path": "type",
7321
- "valueType": "enum",
7322
- "enumValues": [
7323
- "wifi",
7324
- "ethernet",
7325
- "cellular",
7326
- "unknown"
7327
- ]
7328
- },
7329
- {
7330
- "path": "signalPercent",
7331
- "valueType": "number"
7332
- },
7333
- {
7334
- "path": "rssiDbm",
7335
- "valueType": "number"
7336
- },
7337
- {
7338
- "path": "ssid",
7339
- "valueType": "string"
7340
- },
7341
- {
7342
- "path": "lastUpdated",
7343
- "valueType": "number"
7344
- }
7345
- ],
7346
- "notifier": [
7347
- {
7348
- "path": "lastSentAt",
7349
- "valueType": "number"
7350
- },
7351
- {
7352
- "path": "lastError",
7353
- "valueType": "string"
7354
- },
7355
- {
7356
- "path": "queueDepth",
7357
- "valueType": "number"
7358
- },
7359
- {
7360
- "path": "supports.image",
7361
- "valueType": "boolean"
7362
- },
7363
- {
7364
- "path": "supports.priority",
7365
- "valueType": "boolean"
7366
- },
7367
- {
7368
- "path": "supports.data",
7369
- "valueType": "boolean"
7370
- },
7371
- {
7372
- "path": "supports.actions",
7373
- "valueType": "boolean"
7374
- },
7375
- {
7376
- "path": "supports.recipients",
7377
- "valueType": "boolean"
7378
- }
7379
- ],
7380
- "numeric-sensor": [
7381
- {
7382
- "path": "value",
7383
- "valueType": "number"
7384
- },
7385
- {
7386
- "path": "unit",
7387
- "valueType": "string"
7388
- },
7389
- {
7390
- "path": "precision",
7391
- "valueType": "number"
7392
- }
7393
- ],
7394
- "pet-feeder": [
7395
- {
7396
- "path": "foodLevel",
7397
- "valueType": "number"
7398
- },
7399
- {
7400
- "path": "food1",
7401
- "valueType": "number"
7402
- },
7403
- {
7404
- "path": "food2",
7405
- "valueType": "number"
7406
- },
7407
- {
7408
- "path": "lowFood",
7409
- "valueType": "boolean"
7410
- },
7411
- {
7412
- "path": "batteryPower",
7413
- "valueType": "number"
7414
- },
7415
- {
7416
- "path": "desiccantLeftDays",
7417
- "valueType": "number"
7418
- },
7419
- {
7420
- "path": "feeding",
7421
- "valueType": "boolean"
7422
- },
7423
- {
7424
- "path": "status",
7425
- "valueType": "enum",
7426
- "enumValues": [
7427
- "normal",
7428
- "offline",
7429
- "on_batteries"
7430
- ]
7431
- },
7432
- {
7433
- "path": "error",
7434
- "valueType": "string"
7435
- },
7436
- {
7437
- "path": "errorCode",
7438
- "valueType": "number"
7439
- },
7440
- {
7441
- "path": "isDualHopper",
7442
- "valueType": "boolean"
7443
- },
7444
- {
7445
- "path": "childLock",
7446
- "valueType": "boolean"
7447
- },
7448
- {
7449
- "path": "indicatorLight",
7450
- "valueType": "boolean"
7451
- },
7452
- {
7453
- "path": "feedSound",
7454
- "valueType": "boolean"
7455
- },
7456
- {
7457
- "path": "volume",
7458
- "valueType": "number"
7459
- }
7460
- ],
7461
- "power-meter": [
7462
- {
7463
- "path": "watts",
7464
- "valueType": "number"
7465
- },
7466
- {
7467
- "path": "kwhTotal",
7468
- "valueType": "number"
7469
- },
7470
- {
7471
- "path": "volts",
7472
- "valueType": "number"
7473
- },
7474
- {
7475
- "path": "amps",
7476
- "valueType": "number"
7477
- },
7478
- {
7479
- "path": "va",
7480
- "valueType": "number"
7481
- },
7482
- {
7483
- "path": "powerFactor",
7484
- "valueType": "number"
7485
- },
7486
- {
7487
- "path": "unit",
7488
- "valueType": "string"
7489
- },
7490
- {
7491
- "path": "precision",
7492
- "valueType": "number"
7493
- }
7494
- ],
7495
- "presence": [
7496
- {
7497
- "path": "state",
7498
- "valueType": "string"
7499
- },
7500
- {
7501
- "path": "location",
7502
- "valueType": "string"
7503
- },
7504
- {
7505
- "path": "gps.latitude",
7506
- "valueType": "number"
7507
- },
7508
- {
7509
- "path": "gps.longitude",
7510
- "valueType": "number"
7511
- },
7512
- {
7513
- "path": "gps.accuracyMeters",
7514
- "valueType": "number"
7515
- },
7516
- {
7517
- "path": "batteryPercent",
7518
- "valueType": "number"
7519
- }
7520
- ],
7521
- "pressure-sensor": [
7522
- {
7523
- "path": "hpa",
7524
- "valueType": "number"
7525
- },
7526
- {
7527
- "path": "unit",
7528
- "valueType": "string"
7529
- },
7530
- {
7531
- "path": "precision",
7532
- "valueType": "number"
7533
- }
7534
- ],
7535
- "privacy-mask": [{
7536
- "path": "enabled",
7537
- "valueType": "boolean"
7538
- }, {
7539
- "path": "audioEnabled",
7540
- "valueType": "boolean"
7541
- }],
7542
- "ptz": [
7543
- {
7544
- "path": "pan",
7545
- "valueType": "number"
7546
- },
7547
- {
7548
- "path": "tilt",
7549
- "valueType": "number"
7550
- },
7551
- {
7552
- "path": "zoom",
7553
- "valueType": "number"
7554
- },
7555
- {
7556
- "path": "autofocus",
7557
- "valueType": "boolean"
7558
- }
7559
- ],
7560
- "ptz-autotrack": [
7561
- {
7562
- "path": "enabled",
7563
- "valueType": "boolean"
7564
- },
7565
- {
7566
- "path": "currentSettings.targetType",
7567
- "valueType": "string"
7568
- },
7569
- {
7570
- "path": "currentSettings.stopDelaySeconds",
7571
- "valueType": "number"
7572
- },
7573
- {
7574
- "path": "currentSettings.disappearDelaySeconds",
7575
- "valueType": "number"
7576
- }
7577
- ],
7578
- "recording-archive": [
7579
- {
7580
- "path": "deviceId",
7581
- "valueType": "number"
7582
- },
7583
- {
7584
- "path": "enabled",
7585
- "valueType": "boolean"
7586
- },
7587
- {
7588
- "path": "activeMode",
7589
- "valueType": "enum",
7590
- "enumValues": [
7591
- "off",
7592
- "events",
7593
- "continuous",
7594
- "on-device-decision"
7595
- ]
7596
- },
7597
- {
7598
- "path": "nodeId",
7599
- "valueType": "string"
7600
- },
7601
- {
7602
- "path": "storageBytes",
7603
- "valueType": "number"
7604
- }
7605
- ],
7606
- "recording-onboard": [
7607
- {
7608
- "path": "primaryTrackId",
7609
- "valueType": "string"
7610
- },
7611
- {
7612
- "path": "enabled",
7613
- "valueType": "boolean"
7614
- },
7615
- {
7616
- "path": "overwriteWhenFull",
7617
- "valueType": "boolean"
7618
- },
7619
- {
7620
- "path": "preRecordSec",
7621
- "valueType": "number"
7622
- },
7623
- {
7624
- "path": "postRecordSec",
7625
- "valueType": "number"
7626
- },
7627
- {
7628
- "path": "segmentMinutes",
7629
- "valueType": "number"
7630
- },
7631
- {
7632
- "path": "unreadableWindows",
7633
- "valueType": "number"
7634
- },
7635
- {
7636
- "path": "recordingToNowhere",
7637
- "valueType": "boolean"
7638
- }
7639
- ],
7640
- "recording-signal": [{
7641
- "path": "active",
7642
- "valueType": "boolean"
7643
- }, {
7644
- "path": "reason",
7645
- "valueType": "string"
7646
- }],
7647
- "running-state": [
7648
- {
7649
- "path": "running",
7650
- "valueType": "boolean"
7651
- },
7652
- {
7653
- "path": "since",
7654
- "valueType": "number"
7655
- },
7656
- {
7657
- "path": "source",
7658
- "valueType": "enum",
7659
- "enumValues": ["native", "assigned"]
7660
- },
7661
- {
7662
- "path": "phase",
7663
- "valueType": "string"
7664
- }
7665
- ],
7666
- "script-runner": [
7667
- {
7668
- "path": "isRunning",
7669
- "valueType": "boolean"
7670
- },
7671
- {
7672
- "path": "lastRunAt",
7673
- "valueType": "number"
7674
- },
7675
- {
7676
- "path": "lastRunSuccess",
7677
- "valueType": "boolean"
7678
- },
7679
- {
7680
- "path": "lastError",
7681
- "valueType": "string"
7682
- }
7683
- ],
7684
- "smoke": [{
7685
- "path": "detected",
7686
- "valueType": "boolean"
7687
- }],
7688
- "snapshot": [
7689
- {
7690
- "path": "lastCapturedAt",
7691
- "valueType": "number"
7692
- },
7693
- {
7694
- "path": "cacheAgeMs",
7695
- "valueType": "number"
7696
- },
7697
- {
7698
- "path": "lastBytes",
7699
- "valueType": "number"
7700
- },
7701
- {
7702
- "path": "lastStreamId",
7703
- "valueType": "string"
7704
- }
7705
- ],
7706
- "stream-params": [
7707
- {
7708
- "path": "main.width",
7709
- "valueType": "number"
7710
- },
7711
- {
7712
- "path": "main.height",
7713
- "valueType": "number"
7714
- },
7715
- {
7716
- "path": "main.codec",
7717
- "valueType": "enum",
7718
- "enumValues": ["h264", "h265"]
7719
- },
7720
- {
7721
- "path": "main.framerate",
7722
- "valueType": "number"
7723
- },
7724
- {
7725
- "path": "main.bitrate",
7726
- "valueType": "number"
7727
- },
7728
- {
7729
- "path": "main.bitrateMode",
7730
- "valueType": "enum",
7731
- "enumValues": ["vbr", "cbr"]
7732
- },
7733
- {
7734
- "path": "main.encoderProfile",
7735
- "valueType": "enum",
7736
- "enumValues": [
7737
- "high",
7738
- "main",
7739
- "baseline"
7740
- ]
7741
- },
7742
- {
7743
- "path": "main.gop",
7744
- "valueType": "number"
7745
- },
7746
- {
7747
- "path": "main.audio",
7748
- "valueType": "boolean"
7749
- },
7750
- {
7751
- "path": "sub.width",
7752
- "valueType": "number"
7753
- },
7754
- {
7755
- "path": "sub.height",
7756
- "valueType": "number"
7757
- },
7758
- {
7759
- "path": "sub.codec",
7760
- "valueType": "enum",
7761
- "enumValues": ["h264", "h265"]
7762
- },
7763
- {
7764
- "path": "sub.framerate",
7765
- "valueType": "number"
7766
- },
7767
- {
7768
- "path": "sub.bitrate",
7769
- "valueType": "number"
7770
- },
7771
- {
7772
- "path": "sub.bitrateMode",
7773
- "valueType": "enum",
7774
- "enumValues": ["vbr", "cbr"]
7775
- },
7776
- {
7777
- "path": "sub.encoderProfile",
7778
- "valueType": "enum",
7779
- "enumValues": [
7780
- "high",
7781
- "main",
7782
- "baseline"
7783
- ]
7784
- },
7785
- {
7786
- "path": "sub.gop",
7787
- "valueType": "number"
7788
- },
7789
- {
7790
- "path": "sub.audio",
7791
- "valueType": "boolean"
7792
- },
7793
- {
7794
- "path": "ext.width",
7795
- "valueType": "number"
7796
- },
7797
- {
7798
- "path": "ext.height",
7799
- "valueType": "number"
7800
- },
7801
- {
7802
- "path": "ext.codec",
7803
- "valueType": "enum",
7804
- "enumValues": ["h264", "h265"]
7805
- },
7806
- {
7807
- "path": "ext.framerate",
7808
- "valueType": "number"
7809
- },
7810
- {
7811
- "path": "ext.bitrate",
7812
- "valueType": "number"
7813
- },
7814
- {
7815
- "path": "ext.bitrateMode",
7816
- "valueType": "enum",
7817
- "enumValues": ["vbr", "cbr"]
7818
- },
7819
- {
7820
- "path": "ext.encoderProfile",
7821
- "valueType": "enum",
7822
- "enumValues": [
7823
- "high",
7824
- "main",
7825
- "baseline"
7826
- ]
7827
- },
7828
- {
7829
- "path": "ext.gop",
7830
- "valueType": "number"
7831
- },
7832
- {
7833
- "path": "ext.audio",
7834
- "valueType": "boolean"
7835
- }
7836
- ],
7837
- "switch": [{
7838
- "path": "on",
7839
- "valueType": "boolean"
7840
- }],
7841
- "tamper": [{
7842
- "path": "tampered",
7843
- "valueType": "boolean"
7844
- }],
7845
- "temperature-sensor": [
7846
- {
7847
- "path": "celsius",
7848
- "valueType": "number"
7849
- },
7850
- {
7851
- "path": "unit",
7852
- "valueType": "string"
7853
- },
7854
- {
7855
- "path": "precision",
7856
- "valueType": "number"
7857
- }
7858
- ],
7859
- "update": [
7860
- {
7861
- "path": "currentVersion",
7862
- "valueType": "string"
7863
- },
7864
- {
7865
- "path": "availableVersion",
7866
- "valueType": "string"
7867
- },
7868
- {
7869
- "path": "updatable",
7870
- "valueType": "boolean"
7871
- },
7872
- {
7873
- "path": "state",
7874
- "valueType": "string"
7875
- },
7876
- {
7877
- "path": "inProgress",
7878
- "valueType": "boolean"
7879
- }
7880
- ],
7881
- "vacuum-control": [
7882
- {
7883
- "path": "state",
7884
- "valueType": "enum",
7885
- "enumValues": [
7886
- "idle",
7887
- "cleaning",
7888
- "paused",
7889
- "returning",
7890
- "docked",
7891
- "drying",
7892
- "error"
7893
- ]
7894
- },
7895
- {
7896
- "path": "batteryLevel",
7897
- "valueType": "number"
7898
- },
7899
- {
7900
- "path": "fanSpeed",
7901
- "valueType": "string"
7902
- },
7903
- {
7904
- "path": "progressPercent",
7905
- "valueType": "number"
7906
- },
7907
- {
7908
- "path": "errorCode",
7909
- "valueType": "number"
7910
- },
7911
- {
7912
- "path": "errorLabel",
7913
- "valueType": "string"
7914
- }
7915
- ],
7916
- "valve": [{
7917
- "path": "state",
7918
- "valueType": "enum",
7919
- "enumValues": [
7920
- "open",
7921
- "opening",
7922
- "closing",
7923
- "closed",
7924
- "stopped"
7925
- ]
7926
- }, {
7927
- "path": "position",
7928
- "valueType": "number"
7929
- }],
7930
- "vibration": [{
7931
- "path": "detected",
7932
- "valueType": "boolean"
7933
- }],
7934
- "water-heater": [
7935
- {
7936
- "path": "currentTemp",
7937
- "valueType": "number"
7938
- },
7939
- {
7940
- "path": "targetTemp",
7941
- "valueType": "number"
7942
- },
7943
- {
7944
- "path": "operationMode",
7945
- "valueType": "string"
7946
- },
7947
- {
7948
- "path": "away",
7949
- "valueType": "boolean"
7950
- },
7951
- {
7952
- "path": "minTemp",
7953
- "valueType": "number"
7954
- },
7955
- {
7956
- "path": "maxTemp",
7957
- "valueType": "number"
7958
- }
7959
- ],
7960
- "weather": [
7961
- {
7962
- "path": "condition",
7963
- "valueType": "string"
7964
- },
7965
- {
7966
- "path": "temperature",
7967
- "valueType": "number"
7968
- },
7969
- {
7970
- "path": "temperatureUnit",
7971
- "valueType": "string"
7972
- },
7973
- {
7974
- "path": "humidity",
7975
- "valueType": "number"
7976
- },
7977
- {
7978
- "path": "pressure",
7979
- "valueType": "number"
7980
- },
7981
- {
7982
- "path": "pressureUnit",
7983
- "valueType": "string"
7984
- },
7985
- {
7986
- "path": "windSpeed",
7987
- "valueType": "number"
7988
- },
7989
- {
7990
- "path": "windSpeedUnit",
7991
- "valueType": "string"
7992
- },
7993
- {
7994
- "path": "windBearing",
7995
- "valueType": "number"
7996
- }
7997
- ],
7998
- "zone-analytics": [
7999
- {
8000
- "path": "ts",
8001
- "valueType": "number"
8002
- },
8003
- {
8004
- "path": "frameWidth",
8005
- "valueType": "number"
8006
- },
8007
- {
8008
- "path": "frameHeight",
8009
- "valueType": "number"
8010
- },
8011
- {
8012
- "path": "frame.totalObjects",
8013
- "valueType": "number"
8014
- },
8015
- {
8016
- "path": "frame.standingObjects",
8017
- "valueType": "number"
8018
- },
8019
- {
8020
- "path": "frame.transientObjects",
8021
- "valueType": "number"
8022
- },
8023
- {
8024
- "path": "unzoned.totalObjects",
8025
- "valueType": "number"
8026
- },
8027
- {
8028
- "path": "unzoned.standingObjects",
8029
- "valueType": "number"
8030
- },
8031
- {
8032
- "path": "unzoned.transientObjects",
8033
- "valueType": "number"
8034
- }
8035
- ]
8036
- });
8037
6247
  /**
8038
6248
  * Build the recorder's config mirror.
8039
6249
  *
@@ -8254,7 +6464,7 @@ function withStreamTimeDenseRanges(input) {
8254
6464
  * (`buildConcatPassArgs`) remuxes the export's FFCONCAT list to a single
8255
6465
  * mpegts with `-c copy`. Pass 2 (`buildExportArgs` with that file as `-i`)
8256
6466
  * then selects frames. Selecting WHILE walking `#EXT-X-DISCONTINUITY` (one
8257
- * per 10s segment from `-reset_timestamps`) is what parked a 30h salone job
6467
+ * per 10s segment from `-reset_timestamps`) is what parked a 30h hall job
8258
6468
  * at `rendering 0%` / 0% CPU — ffmpeg never left the concat demuxer.
8259
6469
  *
8260
6470
  * Pass 1 reads the ffconcat list, NOT the HLS playlist, because of WHOSE
@@ -8262,7 +6472,7 @@ function withStreamTimeDenseRanges(input) {
8262
6472
  * (`export-dense-map.ts`) sums the segments' DECLARED `durMs`; the HLS
8263
6473
  * demuxer stitches segments by their CONTENT length. On footage whose PTS
8264
6474
  * span disagrees with its declared duration the two clocks drift apart
8265
- * cumulatively — measured ~495 s by the end of camera 615's 10 h night of
6475
+ * cumulatively — measured ~495 s by the end of camera 101's 10 h night of
8266
6476
  * 2026-08-20, which put every short dense range over a stretch that held no
8267
6477
  * detection. The concat demuxer's `duration` directive pins each segment's
8268
6478
  * start to the SAME cumulative sum the map computes, so the disagreement is
@@ -8550,7 +6760,7 @@ var recorderRecordKinds = defineRecordKinds({
8550
6760
  * Worse than the cost was the CLOBBER. Both halves of a read-modify-write are
8551
6761
  * async, so two overlapping cycles read the same snapshot and the second `set`
8552
6762
  * discarded whatever the first added. On 2026-08-14 a `createExport` for camera
8553
- * 615 landed between one progress patch's read and its write, the row was
6763
+ * 101 landed between one progress patch's read and its write, the row was
8554
6764
  * erased, and the poll answered `unknown export "547ea182-…"`; the scheduler
8555
6765
  * read the vanished row as a failed render and re-queued forever. A per-row
8556
6766
  * upsert makes that class of loss unrepresentable — a write names ONE row.
@@ -12964,7 +11174,7 @@ var SegmentHourLedger = class SegmentHourLedger {
12964
11174
  *
12965
11175
  * Every hour the loss spans is refused the seal, whatever else this process
12966
11176
  * believes about them: the ownership grace answers "was I here", and this
12967
- * answers "did I get everything while I was". Camera 615's respawned writer
11177
+ * answers "did I get everything while I was". Camera 101's respawned writer
12968
11178
  * passed the first question for the hour it entered at the top and still held
12969
11179
  * a row short by 175 segments.
12970
11180
  *
@@ -13240,7 +11450,7 @@ var SegmentHourLedger = class SegmentHourLedger {
13240
11450
  *
13241
11451
  * `census` is the right authority for a SCOPE, and it cannot express this
13242
11452
  * scope: {@link SegmentHourLedger.predicate} takes ONE `locationId`, so
13243
- * "camera 615 across the three resolvable volumes" is three aggregates, and
11453
+ * "camera 101 across the three resolvable volumes" is three aggregates, and
13244
11454
  * `census({ deviceId })` alone would silently count footage stranded on a
13245
11455
  * location id that no longer resolves — bytes no volume row on the same page
13246
11456
  * accounts for. Per camera per volume that is `cameras × volumes` SQL
@@ -13883,7 +12093,7 @@ function locationKey(deviceId, locationId) {
13883
12093
  *
13884
12094
  * The resolution is that the ghost row's root does not resolve but its hour
13885
12095
  * DIRECTORY is addressable anywhere: the path convention
13886
- * (`590/high/2026/08/15/04/`) is a function of the row's own fields, so the same
12096
+ * (`104/high/2026/08/15/04/`) is a function of the row's own fields, so the same
13887
12097
  * hour can be listed under every currently-resolvable root. **A listing of the
13888
12098
  * hour directory at every candidate root is exactly the walk D148 sanctions,
13889
12099
  * done one root at a time.** That, and nothing weaker, is what licenses the
@@ -17612,7 +15822,7 @@ function segmentListSize(segmentSeconds) {
17612
15822
  * between spawn and that truncation, reads the PREVIOUS run's playlist body.
17613
15823
  * Those entries were relocated into the bucket tree long ago; their absence is
17614
15824
  * the system working. Over 2026-08-10..13 they were 83% of all retries (median
17615
- * age 1 615 s, max 17.4 h) and produced 68 of the 122 `never landed` warnings —
15825
+ * age 1 101 s, max 17.4 h) and produced 68 of the 122 `never landed` warnings —
17616
15826
  * a warning that reads like data loss for a file that was correctly filed hours
17617
15827
  * earlier.
17618
15828
  *
@@ -18102,8 +16312,8 @@ var RESTART_WINDOW_MS = 60 * 6e4;
18102
16312
  * and escalates to the controller.
18103
16313
  *
18104
16314
  * 15/hour, from the measured distribution. Per writer over the same 12 h:
18105
- * 1441/high 549 (**45.8/h**), 615/high 241 (20.1/h), 618/high 217 (18.1/h),
18106
- * 592/high 211 (17.6/h), 590/high 195 (16.3/h) — every one of them a storm and
16315
+ * 1441/high 549 (**45.8/h**), 101/high 241 (20.1/h), 618/high 217 (18.1/h),
16316
+ * 592/high 211 (17.6/h), 104/high 195 (16.3/h) — every one of them a storm and
18107
16317
  * every one of them silent — against `low` profiles at 4–15 per 12 h (≤1.3/h),
18108
16318
  * which is what a healthy writer looks like. 15 separates them with room for a
18109
16319
  * camera that blips hourly and is otherwise fine.
@@ -18210,7 +16420,7 @@ var SegmentWriter = class {
18210
16420
  * The ONE restart policy, reached from both `exit` and `error`.
18211
16421
  *
18212
16422
  * Every line below carries `tags: { deviceId }` from `deps.deviceId` — "why
18213
- * is 617 worse than 615" is always asked per camera, and a writer that stops
16423
+ * is 102 worse than 101" is always asked per camera, and a writer that stops
18214
16424
  * recording one camera must be greppable by that camera.
18215
16425
  */
18216
16426
  onTermination(termination, stderrTail) {
@@ -18743,7 +16953,7 @@ var TRIGGER_LAG_WARN_MS = 2e3;
18743
16953
  * Floor for "this writer is pinned but producing nothing".
18744
16954
  *
18745
16955
  * The give-up path only fires when ffmpeg EXITS. On 2026-07-29 the opposite
18746
- * happened on 590 + 617: after a deploy the writers pinned the broker and hung
16956
+ * happened on 104 + 102: after a deploy the writers pinned the broker and hung
18747
16957
  * — process alive, no exit, no error, no retry — and ~68 minutes of recording
18748
16958
  * were lost while `evaluateDevice` kept short-circuiting at "already recording
18749
16959
  * — converged". A supervisor that only watches for termination cannot see
@@ -19373,7 +17583,7 @@ var RecordingController = class {
19373
17583
  * up, or the idle watchdog found it silent.
19374
17584
  *
19375
17585
  * Recover THAT profile only when siblings are still producing. Whole-device
19376
- * detach was the 2026-08-22 gap: high stalled 139 s on 615/590/617/586 and
17586
+ * detach was the 2026-08-22 gap: high stalled 139 s on 101/104/102/586 and
19377
17587
  * recovery unpinned low too — the profile the timeline and scrub actually
19378
17588
  * read — punching 38–172 s holes in continuous cameras. The broker re-dial
19379
17589
  * argument still holds when NOTHING on the device is healthy; then we detach
@@ -19740,7 +17950,7 @@ var RecordingController = class {
19740
17950
  * SegmentWriter + watcher per profile, and records the set in `active`.
19741
17951
  *
19742
17952
  * Per-profile: a throw from one slot is logged and skipped. Rolling back the
19743
- * whole device when a single stream was dead (618 `derived` on `low`) left
17953
+ * whole device when a single stream was dead (108 `derived` on `low`) left
19744
17954
  * ZERO footage for hours. If every profile fails, throw so the restore queue
19745
17955
  * retries the device.
19746
17956
  */
@@ -22248,7 +20458,7 @@ function nodeLoopPacer() {
22248
20458
  * playlist "is NOT cleared between runs", which is what its `stale-previous-run`
22249
20459
  * classification and its documented "that is the crash recovery" path are built
22250
20460
  * on. The live filesystem refutes it, and a leftover that describes the right
22251
- * design reads as verification: on 2026-08-14 `/recordings/.rec-tmp/590/high/`
20461
+ * design reads as verification: on 2026-08-14 `/recordings/.rec-tmp/104/high/`
22252
20462
  * held a `live.m3u8` of 50 entries, every one named at or after that writer's
22253
20463
  * 20:28:31 start, beside **5 863 older `.m4s` files referenced by nobody** —
22254
20464
  * the oldest from 2026-07-04. Fleet total: 179 GB, on an array at 90% full.
@@ -22329,7 +20539,7 @@ var KNOWN_PROFILES = new Set([
22329
20539
  "mid",
22330
20540
  "low"
22331
20541
  ]);
22332
- /** Default orphans per chunk. 590/high alone had 5 863 of them. */
20542
+ /** Default orphans per chunk. 104/high alone had 5 863 of them. */
22333
20543
  var DEFAULT_CHUNK_SIZE = 100;
22334
20544
  /**
22335
20545
  * Orphans between progress lines.
@@ -22871,7 +21081,7 @@ var CLIP_SOURCE_ADDON_ID = "recorder";
22871
21081
  * Backstop on the ANNOTATION read — never on the clip list.
22872
21082
  *
22873
21083
  * A visit is annotated by every event inside it, so the clip `limit` must not
22874
- * reach this fetch (one 615 visit legitimately spans 2 345 motion rows). This
21084
+ * reach this fetch (one 101 visit legitimately spans 2 345 motion rows). This
22875
21085
  * bound exists only so a pathological camera-day cannot pull an unbounded page:
22876
21086
  * the store orders `timestamp DESC`, so a truncation drops the OLDEST rows and
22877
21087
  * the EARLIEST visits silently lose their annotations — which is why hitting it
@@ -23221,7 +21431,7 @@ function toEventLike(events) {
23221
21431
  * is not necessarily the node holding this camera's segments.
23222
21432
  * - `ctx.api.recording.*` is device-scoped and routes to the node that IS
23223
21433
  * holding them. A short cut to the local `RecordingProvider` would answer a
23224
- * camera recorded on little-unraid out of the hub's empty index — an empty
21434
+ * camera recorded on agent-a out of the hub's empty index — an empty
23225
21435
  * clip list on a camera with weeks of footage, which is the exact
23226
21436
  * misreading this whole line of work exists to end.
23227
21437
  *
@@ -23519,7 +21729,7 @@ var RecorderV2Addon = class extends BaseAddon {
23519
21729
  /**
23520
21730
  * The children this addon started, claimed at the spawn site and released at
23521
21731
  * their exit. It is what `load-contribution` reports: the recorder knows it
23522
- * ran an ffmpeg for camera 615 profile `high`, so nobody else has to work it
21732
+ * ran an ffmpeg for camera 101 profile `high`, so nobody else has to work it
23523
21733
  * out from a process table.
23524
21734
  *
23525
21735
  * One registry per PROCESS, and it dies with the process — which is correct,