@camstack/addon-post-analysis 1.2.359 → 1.2.361

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 (14) hide show
  1. package/dist/{clip-model-registry-LnBofk4d.mjs → clip-model-registry-B69Mktce.mjs} +4016 -9779
  2. package/dist/{clip-model-registry-DyP97b8e.js → clip-model-registry-D8XeJhT4.js} +4015 -9784
  3. package/dist/embedding-encoder/index.js +1 -1
  4. package/dist/embedding-encoder/index.mjs +1 -1
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-C3Xtsu5Z.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CUQTWug8.mjs} +2 -2
  7. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B3Ko_8Ah.mjs +26 -0
  8. package/dist/pipeline-analytics/{_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-X_26tehC.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DOcfQnib.mjs} +1 -1
  9. package/dist/pipeline-analytics/{hostInit-8DkDqLAZ.mjs → hostInit-Be7_ixng.mjs} +2 -2
  10. package/dist/pipeline-analytics/index.js +2088 -14
  11. package/dist/pipeline-analytics/index.mjs +2089 -15
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +1 -1
  14. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-eO5a6KRc.mjs +0 -26
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_clip_model_registry = require("../clip-model-registry-DyP97b8e.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-D8XeJhT4.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs, 1);
8
8
  let node_path = require("node:path");
@@ -13,16 +13,16 @@ let node_child_process = require("node:child_process");
13
13
  let _camstack_system_addon_utils = require("@camstack/system/addon-utils");
14
14
  let node_stream_promises = require("node:stream/promises");
15
15
  let node_stream = require("node:stream");
16
+ let node_zlib = require("node:zlib");
17
+ let node_os = require("node:os");
18
+ node_os = require_clip_model_registry.__toESM(node_os, 1);
16
19
  let node_fs_promises = require("node:fs/promises");
17
20
  node_fs_promises = require_clip_model_registry.__toESM(node_fs_promises, 1);
18
21
  let sharp = require("sharp");
19
22
  sharp = require_clip_model_registry.__toESM(sharp);
20
- let node_os = require("node:os");
21
- node_os = require_clip_model_registry.__toESM(node_os);
22
23
  let node_timers_promises = require("node:timers/promises");
23
24
  let node_util = require("node:util");
24
25
  let node_buffer = require("node:buffer");
25
- let node_zlib = require("node:zlib");
26
26
  let node_http = require("node:http");
27
27
  let node_https = require("node:https");
28
28
  //#region src/pipeline-analytics/media-occupancy.ts
@@ -4345,6 +4345,7 @@ var node_exports = /* @__PURE__ */ require_clip_model_registry.__exportAll({
4345
4345
  verifyExpiringUrl: () => verifyExpiringUrl,
4346
4346
  writeFileAtomic: () => writeFileAtomic
4347
4347
  });
4348
+ process.platform, process.env["SystemRoot"];
4348
4349
  /**
4349
4350
  * Download portable Python (headless) from bjia56/portable-python.
4350
4351
  *
@@ -4359,7 +4360,9 @@ var node_exports = /* @__PURE__ */ require_clip_model_registry.__exportAll({
4359
4360
  * The zip's top-level dir is platform-specific (e.g.
4360
4361
  * `python-headless-3.12.12-darwin-universal2/`); after extraction
4361
4362
  * we rename it to a stable `python/` so consumers can rely on
4362
- * `<dataDir>/deps/python/bin/python3`.
4363
+ * `<dataDir>/deps/python/bin/python3` (`bin/python.exe` on Windows: that build
4364
+ * keeps its launcher in `bin/` beside the DLLs, with `Lib/` at the root, so
4365
+ * `<root>/bin/<interpreter>` holds on every platform).
4363
4366
  */
4364
4367
  var PYTHON_VERSION = "3.12.12";
4365
4368
  `${PYTHON_VERSION}`;
@@ -79915,6 +79918,67 @@ var DeviceSettingsCacheHub = class {
79915
79918
  }
79916
79919
  };
79917
79920
  //#endregion
79921
+ //#region src/pipeline-analytics/inherited-device-values.ts
79922
+ /**
79923
+ * What a camera's Analytics form SHOWS for a field this camera never saved.
79924
+ *
79925
+ * The runtime resolves every per-device analytics setting from
79926
+ * `{ ...globalRaw, ...deviceRaw }` (`readDeviceSettings`): the cluster value
79927
+ * stands until the camera writes its own. The form used to hydrate from
79928
+ * `deviceRaw` alone, so a never-saved field rendered the SCHEMA default — a
79929
+ * number the runtime was not using whenever the cluster had set its own. An
79930
+ * operator who read "5" there and saved another field changed nothing, but had
79931
+ * every reason to believe the camera ran at 5.
79932
+ *
79933
+ * Two rules, both pinned by `inherited-device-values.spec.ts`:
79934
+ * - the displayed value is the EFFECTIVE one (`{ ...globalRaw, ...deviceRaw }`),
79935
+ * the same merge the resolvers use;
79936
+ * - a field showing the cluster value says so in its description, and the
79937
+ * form still saves only what the operator edits, so showing an inherited
79938
+ * value never freezes it onto the camera.
79939
+ */
79940
+ /** Appended to the description of a field whose value comes from the cluster. */
79941
+ var INHERITED_FROM_GLOBAL_NOTE = "Shown value is the cluster-wide setting. Change it here to override it for this camera only.";
79942
+ function hasOwn(bag, key) {
79943
+ return Object.prototype.hasOwnProperty.call(bag, key);
79944
+ }
79945
+ function markInherited(field, globalRaw, deviceRaw) {
79946
+ if (field.type === "group") return {
79947
+ ...field,
79948
+ fields: field.fields.map((f) => markInherited(f, globalRaw, deviceRaw))
79949
+ };
79950
+ if (field.type === "sub-tabs") return {
79951
+ ...field,
79952
+ tabs: field.tabs.map((tab) => ({
79953
+ ...tab,
79954
+ fields: tab.fields.map((f) => markInherited(f, globalRaw, deviceRaw))
79955
+ }))
79956
+ };
79957
+ if (!("value" in field)) return field;
79958
+ if (!hasOwn(globalRaw, field.key) || hasOwn(deviceRaw, field.key)) return field;
79959
+ const description = field.description === void 0 ? INHERITED_FROM_GLOBAL_NOTE : `${field.description} ${INHERITED_FROM_GLOBAL_NOTE}`;
79960
+ return {
79961
+ ...field,
79962
+ description
79963
+ };
79964
+ }
79965
+ /**
79966
+ * Hydrate per-camera sections with the effective value of each field.
79967
+ *
79968
+ * @param schema the per-device schema (global schema, already re-tabbed)
79969
+ * @param deviceRaw the camera's own blob — only what it saved
79970
+ * @param globalRaw the cluster store
79971
+ */
79972
+ function hydrateWithInheritedGlobals(schema, deviceRaw, globalRaw) {
79973
+ return require_clip_model_registry.hydrateSchema(schema, {
79974
+ ...globalRaw,
79975
+ ...deviceRaw
79976
+ }).sections.map((section) => ({
79977
+ ...section,
79978
+ fields: section.fields.map((f) => markInherited(f, globalRaw, deviceRaw))
79979
+ }));
79980
+ }
79981
+ //#endregion
79918
79982
  //#region src/pipeline-analytics/device-zone-resolver.ts
79919
79983
  /**
79920
79984
  * How long a catalogue read from the capability is trusted. Only consulted when
@@ -104230,6 +104294,1998 @@ async function projectSensorMarkers(deps, data, timestamp) {
104230
104294
  });
104231
104295
  return landed;
104232
104296
  }
104297
+ Object.freeze({
104298
+ "addons": { "getLogs": { "limit": 100 } },
104299
+ "audio-analyzer": {
104300
+ "analyseChunk": { "settings": { "__nested__": {
104301
+ "minConfidence": .3,
104302
+ "allowedClasses": []
104303
+ } } },
104304
+ "attachDevice": { "settings": { "__nested__": {
104305
+ "minConfidence": .3,
104306
+ "allowedClasses": []
104307
+ } } }
104308
+ },
104309
+ "audio-codec": {
104310
+ "pullEncoded": { "maxCount": 8 },
104311
+ "pullPcm": { "maxCount": 8 }
104312
+ },
104313
+ "battery": { "wakeForStream": { "timeoutMs": 8e3 } },
104314
+ "device-adoption": { "listCandidates": {
104315
+ "page": 1,
104316
+ "pageSize": 50
104317
+ } },
104318
+ "device-manager": { "adoptionListCandidates": {
104319
+ "page": 1,
104320
+ "pageSize": 50
104321
+ } },
104322
+ "llm": { "upsertProfile": { "profile": { "__nested__": {
104323
+ "timeoutMs": 6e4,
104324
+ "connectTimeoutMs": 1e4,
104325
+ "firstTokenTimeoutMs": 12e4,
104326
+ "idleTimeoutMs": 6e4,
104327
+ "retry": {
104328
+ "enabled": false,
104329
+ "maxAttempts": 1
104330
+ },
104331
+ "toolsEnabled": false
104332
+ } } } },
104333
+ "llm-runtime": {
104334
+ "complete": { "runtime": { "__nested__": {
104335
+ "contextSize": 4096,
104336
+ "gpuLayers": 0,
104337
+ "parallel": 1,
104338
+ "flashAttention": false,
104339
+ "mlock": false,
104340
+ "noMmap": false,
104341
+ "extraArgs": [],
104342
+ "autoStart": false,
104343
+ "idleStopMinutes": 30
104344
+ } } },
104345
+ "ensureStarted": { "runtime": { "__nested__": {
104346
+ "contextSize": 4096,
104347
+ "gpuLayers": 0,
104348
+ "parallel": 1,
104349
+ "flashAttention": false,
104350
+ "mlock": false,
104351
+ "noMmap": false,
104352
+ "extraArgs": [],
104353
+ "autoStart": false,
104354
+ "idleStopMinutes": 30
104355
+ } } }
104356
+ },
104357
+ "mqtt-broker": { "startEmbeddedBroker": {
104358
+ "port": 1883,
104359
+ "allowAnonymous": false
104360
+ } },
104361
+ "nodes": { "getCapUsageGraph": { "windowSeconds": 60 } },
104362
+ "notification-output": { "send": { "notification": { "__nested__": {
104363
+ "format": "text",
104364
+ "priority": 3
104365
+ } } } },
104366
+ "notification-rules": {
104367
+ "createRule": { "rule": { "__nested__": {
104368
+ "enabled": true,
104369
+ "conditions": {},
104370
+ "media": { "attach": "best" },
104371
+ "throttle": {
104372
+ "cooldownSec": 60,
104373
+ "scope": "rule-device"
104374
+ },
104375
+ "priority": 3
104376
+ } } },
104377
+ "getHistory": { "filter": { "limit": 100 } },
104378
+ "previewStateSummary": { "rule": { "__nested__": {
104379
+ "enabled": true,
104380
+ "conditions": {},
104381
+ "media": { "attach": "best" },
104382
+ "throttle": {
104383
+ "cooldownSec": 60,
104384
+ "scope": "rule-device"
104385
+ },
104386
+ "priority": 3
104387
+ } } },
104388
+ "testRule": {
104389
+ "rule": { "__nested__": {
104390
+ "enabled": true,
104391
+ "conditions": {},
104392
+ "media": { "attach": "best" },
104393
+ "throttle": {
104394
+ "cooldownSec": 60,
104395
+ "scope": "rule-device"
104396
+ },
104397
+ "priority": 3
104398
+ } },
104399
+ "lookbackMinutes": 60
104400
+ }
104401
+ },
104402
+ "osd-manager": {
104403
+ "setSlotBinding": { "binding": { "__nested__": {
104404
+ "enabled": true,
104405
+ "template": "${value}",
104406
+ "maxDecimals": 1
104407
+ } } },
104408
+ "upsertTemplate": { "template": { "__nested__": {
104409
+ "bindings": [],
104410
+ "parser": ""
104411
+ } } }
104412
+ },
104413
+ "pipeline-analytics": {
104414
+ "getAudioEvents": { "limit": 1e3 },
104415
+ "getKeyEvents": { "limit": 50 },
104416
+ "getKeyEventsBatch": { "limit": 50 },
104417
+ "getMotionEvents": { "limit": 1e3 },
104418
+ "getObjectEvents": { "limit": 1e3 },
104419
+ "getSensorEvents": { "limit": 1e3 },
104420
+ "listRecentTracks": { "limit": 200 },
104421
+ "listRetrainCorpusPage": {
104422
+ "page": 1,
104423
+ "pageSize": 50
104424
+ },
104425
+ "reclaimDebugMedia": { "mode": "report" },
104426
+ "resolveRetrainTrainingCorpus": { "workState": "complete" },
104427
+ "searchObjectEvents": { "limit": 50 }
104428
+ },
104429
+ "pipeline-orchestrator": {
104430
+ "applyAutoTune": {
104431
+ "headroom": .4,
104432
+ "minSessionsPerDevice": 2
104433
+ },
104434
+ "getNodeBenchmarkPreflight": {
104435
+ "phases": ["device", "pipeline"],
104436
+ "steps": [],
104437
+ "fpsPerStream": 10,
104438
+ "budgetMinutes": 45,
104439
+ "keepDownloadedModels": false,
104440
+ "acceptInsufficientHeadroom": false
104441
+ },
104442
+ "getPlacementStats": { "windowMs": 36e5 },
104443
+ "planAutoTune": {
104444
+ "headroom": .4,
104445
+ "minSessionsPerDevice": 2
104446
+ },
104447
+ "setLoadBalancingShares": {
104448
+ "nodes": {},
104449
+ "devices": {}
104450
+ },
104451
+ "startNodeBenchmark": {
104452
+ "phases": ["device", "pipeline"],
104453
+ "steps": [],
104454
+ "fpsPerStream": 10,
104455
+ "budgetMinutes": 45,
104456
+ "keepDownloadedModels": false,
104457
+ "acceptInsufficientHeadroom": false
104458
+ },
104459
+ "suggestShares": {
104460
+ "headroom": .4,
104461
+ "source": "hardware"
104462
+ }
104463
+ },
104464
+ "pipeline-runner": {
104465
+ "attachCamera": {
104466
+ "detectionMode": "on-motion",
104467
+ "audioMode": "always-on",
104468
+ "motionCooldownMs": 3e4,
104469
+ "motionFps": 4,
104470
+ "detectionFps": 10,
104471
+ "motionSources": ["analyzer"],
104472
+ "detectionSources": ["pipeline"],
104473
+ "pipelineEnabled": true,
104474
+ "zones": [],
104475
+ "onboardMotionDrivesAnalyzer": true,
104476
+ "preRollInferenceEnabled": true,
104477
+ "preRollInferenceFrames": 12,
104478
+ "occupancyRecheckEnabled": true,
104479
+ "occupancyRecheckSec": 300,
104480
+ "occupancyRecheckFrames": 4,
104481
+ "frameSource": { "kind": "local-broker" }
104482
+ },
104483
+ "reportMotion": { "source": "analyzer" },
104484
+ "startNodeBench": {
104485
+ "steps": [],
104486
+ "settleSec": 5,
104487
+ "measureSec": 20,
104488
+ "keepDownloadedModels": false
104489
+ }
104490
+ },
104491
+ "recording-archive": {
104492
+ "renderClip": {
104493
+ "preRollSec": 3,
104494
+ "postRollSec": 7,
104495
+ "maxWidth": 640
104496
+ },
104497
+ "renderGif": {
104498
+ "preRollSec": 2,
104499
+ "postRollSec": 5,
104500
+ "maxWidth": 480,
104501
+ "fps": 5
104502
+ },
104503
+ "setDeviceConfig": { "config": { "__nested__": { "bands": [] } } }
104504
+ },
104505
+ "storage": { "upsertLocation": { "isSystem": false } },
104506
+ "storage-provider": {
104507
+ "beginDownload": { "location": { "__nested__": { "isSystem": false } } },
104508
+ "beginUpload": { "location": { "__nested__": { "isSystem": false } } },
104509
+ "delete": { "location": { "__nested__": { "isSystem": false } } },
104510
+ "exists": { "location": { "__nested__": { "isSystem": false } } },
104511
+ "getAvailableSpace": { "location": { "__nested__": { "isSystem": false } } },
104512
+ "list": { "location": { "__nested__": { "isSystem": false } } },
104513
+ "read": { "location": { "__nested__": { "isSystem": false } } },
104514
+ "resolve": { "location": { "__nested__": { "isSystem": false } } },
104515
+ "write": { "location": { "__nested__": { "isSystem": false } } }
104516
+ },
104517
+ "stream-broker": {
104518
+ "produceEventMedia": {
104519
+ "preSeconds": 4,
104520
+ "postSeconds": 6,
104521
+ "kinds": ["mp4"],
104522
+ "gifMaxWidth": 640,
104523
+ "gifFps": 12,
104524
+ "gifSpeed": 4,
104525
+ "speed": 4
104526
+ },
104527
+ "pullAudioChunks": { "maxCount": 8 },
104528
+ "renderPreBufferClip": {
104529
+ "preRollSec": 3,
104530
+ "postRollSec": 5,
104531
+ "format": "gif",
104532
+ "maxWidth": 480,
104533
+ "fps": 5,
104534
+ "speed": 2
104535
+ }
104536
+ },
104537
+ "terminal-session": { "pullOutput": { "waitMs": 0 } },
104538
+ "training": {
104539
+ "planJob": { "selection": { "__nested__": { "workState": "complete" } } },
104540
+ "startJob": { "selection": { "__nested__": { "workState": "complete" } } },
104541
+ "startJobBatch": { "selection": { "__nested__": { "workState": "complete" } } }
104542
+ },
104543
+ "user-management": { "createUser": { "isAdmin": false } },
104544
+ "vector-store": {
104545
+ "declareIndex": { "metric": "cosine" },
104546
+ "scan": { "cursor": 0 }
104547
+ },
104548
+ "zones": {
104549
+ "addZone": { "zone": { "__nested__": {
104550
+ "kind": "polygon",
104551
+ "color": "#3b82f6"
104552
+ } } },
104553
+ "updateZone": { "zone": { "__nested__": {
104554
+ "kind": "polygon",
104555
+ "color": "#3b82f6"
104556
+ } } }
104557
+ }
104558
+ });
104559
+ Object.freeze({
104560
+ "addon-pages-source": ["listPages"],
104561
+ "addon-routes": ["getRoutes"],
104562
+ "addon-widgets-source": ["listWidgets"],
104563
+ "broker": ["list", "listProviders"],
104564
+ "calendar-source": ["listCalendars", "listEvents"],
104565
+ "custom-model-registry": ["listModels"],
104566
+ "data-store-provider": ["histogram", "query"],
104567
+ "device-export": ["listExposedDevices", "listSupportedDeviceKinds"],
104568
+ "device-extension": ["listSlots", "listSources"],
104569
+ "device-provider": ["discoverDevices", "getDevices"],
104570
+ "failure-contribution": ["list"],
104571
+ "llm": [
104572
+ "getDefaults",
104573
+ "getUsage",
104574
+ "listModelCatalog",
104575
+ "listModels",
104576
+ "listNodeModels",
104577
+ "listProfileKinds",
104578
+ "listProfiles",
104579
+ "listRuntimeNodes"
104580
+ ],
104581
+ "load-contribution": ["list"],
104582
+ "log-channels": ["list"],
104583
+ "log-destination": ["query"],
104584
+ "login-method": ["getLoginMethods"],
104585
+ "mqtt-broker": ["listBrokers"],
104586
+ "network-access": ["listEndpoints"],
104587
+ "notification-output": [
104588
+ "discoverTargets",
104589
+ "listTargetKinds",
104590
+ "listTargets"
104591
+ ],
104592
+ "recording": ["listSources"],
104593
+ "storage-occupancy": ["getOccupancy"],
104594
+ "storage-provider": ["list"],
104595
+ "training-provider": [
104596
+ "describe",
104597
+ "describeTypes",
104598
+ "listEntries",
104599
+ "listJobs"
104600
+ ],
104601
+ "turn-provider": ["getTurnServers"],
104602
+ "user-passkeys": ["listPasskeys"],
104603
+ "videoclips": ["listClips", "listSources"]
104604
+ });
104605
+ Object.freeze({ "videoclips": [
104606
+ "dialClipStream",
104607
+ "getPlaybackOptions",
104608
+ "offerClipBytes",
104609
+ "readClipBytes"
104610
+ ] });
104611
+ /** cap name -> the numeric state field whose strict advance IS the cap's one-shot event. */
104612
+ var CAP_ADVANCE_FIELDS = Object.freeze({ "doorbell": "lastPressedAt" });
104613
+ Object.freeze({
104614
+ "air-quality-sensor": [
104615
+ {
104616
+ "path": "co2Ppm",
104617
+ "valueType": "number"
104618
+ },
104619
+ {
104620
+ "path": "vocPpb",
104621
+ "valueType": "number"
104622
+ },
104623
+ {
104624
+ "path": "pm25",
104625
+ "valueType": "number"
104626
+ },
104627
+ {
104628
+ "path": "pm10",
104629
+ "valueType": "number"
104630
+ },
104631
+ {
104632
+ "path": "aqi",
104633
+ "valueType": "number"
104634
+ },
104635
+ {
104636
+ "path": "unit",
104637
+ "valueType": "string"
104638
+ },
104639
+ {
104640
+ "path": "precision",
104641
+ "valueType": "number"
104642
+ }
104643
+ ],
104644
+ "alarm-panel": [
104645
+ {
104646
+ "path": "state",
104647
+ "valueType": "enum",
104648
+ "enumValues": [
104649
+ "disarmed",
104650
+ "armed_home",
104651
+ "armed_away",
104652
+ "armed_night",
104653
+ "armed_vacation",
104654
+ "armed_custom_bypass",
104655
+ "arming",
104656
+ "disarming",
104657
+ "pending",
104658
+ "triggered"
104659
+ ]
104660
+ },
104661
+ {
104662
+ "path": "targetMode",
104663
+ "valueType": "enum",
104664
+ "enumValues": [
104665
+ "home",
104666
+ "away",
104667
+ "night",
104668
+ "vacation",
104669
+ "custom_bypass"
104670
+ ]
104671
+ },
104672
+ {
104673
+ "path": "requiresCode",
104674
+ "valueType": "boolean"
104675
+ }
104676
+ ],
104677
+ "ambient-light-sensor": [
104678
+ {
104679
+ "path": "lux",
104680
+ "valueType": "number"
104681
+ },
104682
+ {
104683
+ "path": "unit",
104684
+ "valueType": "string"
104685
+ },
104686
+ {
104687
+ "path": "precision",
104688
+ "valueType": "number"
104689
+ }
104690
+ ],
104691
+ "audio-metrics": [
104692
+ {
104693
+ "path": "ts",
104694
+ "valueType": "number"
104695
+ },
104696
+ {
104697
+ "path": "windowSec",
104698
+ "valueType": "number"
104699
+ },
104700
+ {
104701
+ "path": "level.rms",
104702
+ "valueType": "number"
104703
+ },
104704
+ {
104705
+ "path": "level.dbfs",
104706
+ "valueType": "number"
104707
+ },
104708
+ {
104709
+ "path": "peakDbfs",
104710
+ "valueType": "number"
104711
+ },
104712
+ {
104713
+ "path": "avgDbfs",
104714
+ "valueType": "number"
104715
+ },
104716
+ {
104717
+ "path": "current.className",
104718
+ "valueType": "string"
104719
+ },
104720
+ {
104721
+ "path": "current.score",
104722
+ "valueType": "number"
104723
+ },
104724
+ {
104725
+ "path": "current.timestamp",
104726
+ "valueType": "number"
104727
+ }
104728
+ ],
104729
+ "automation-control": [
104730
+ {
104731
+ "path": "enabled",
104732
+ "valueType": "boolean"
104733
+ },
104734
+ {
104735
+ "path": "isRunning",
104736
+ "valueType": "boolean"
104737
+ },
104738
+ {
104739
+ "path": "lastTriggeredAt",
104740
+ "valueType": "number"
104741
+ },
104742
+ {
104743
+ "path": "lastError",
104744
+ "valueType": "string"
104745
+ }
104746
+ ],
104747
+ "battery": [
104748
+ {
104749
+ "path": "percentage",
104750
+ "valueType": "number"
104751
+ },
104752
+ {
104753
+ "path": "charging",
104754
+ "valueType": "enum",
104755
+ "enumValues": [
104756
+ "dc",
104757
+ "solar",
104758
+ "none",
104759
+ "unknown"
104760
+ ]
104761
+ },
104762
+ {
104763
+ "path": "sleeping",
104764
+ "valueType": "boolean"
104765
+ },
104766
+ {
104767
+ "path": "lastUpdated",
104768
+ "valueType": "number"
104769
+ },
104770
+ {
104771
+ "path": "lastContactAt",
104772
+ "valueType": "number"
104773
+ },
104774
+ {
104775
+ "path": "lastFullRefreshAt",
104776
+ "valueType": "number"
104777
+ },
104778
+ {
104779
+ "path": "binary",
104780
+ "valueType": "boolean"
104781
+ }
104782
+ ],
104783
+ "binary": [{
104784
+ "path": "on",
104785
+ "valueType": "boolean"
104786
+ }],
104787
+ "brightness": [{
104788
+ "path": "percentage",
104789
+ "valueType": "number"
104790
+ }],
104791
+ "broker": [{
104792
+ "path": "brokerCount",
104793
+ "valueType": "number"
104794
+ }, {
104795
+ "path": "connectedCount",
104796
+ "valueType": "number"
104797
+ }],
104798
+ "camera-credentials": [
104799
+ {
104800
+ "path": "host",
104801
+ "valueType": "string"
104802
+ },
104803
+ {
104804
+ "path": "port",
104805
+ "valueType": "number"
104806
+ },
104807
+ {
104808
+ "path": "onvifPort",
104809
+ "valueType": "number"
104810
+ },
104811
+ {
104812
+ "path": "rtspPort",
104813
+ "valueType": "number"
104814
+ },
104815
+ {
104816
+ "path": "https",
104817
+ "valueType": "boolean"
104818
+ },
104819
+ {
104820
+ "path": "hasUsername",
104821
+ "valueType": "boolean"
104822
+ },
104823
+ {
104824
+ "path": "hasPassword",
104825
+ "valueType": "boolean"
104826
+ },
104827
+ {
104828
+ "path": "onvifProfile",
104829
+ "valueType": "string"
104830
+ }
104831
+ ],
104832
+ "camera-streams": [
104833
+ {
104834
+ "path": "online",
104835
+ "valueType": "boolean"
104836
+ },
104837
+ {
104838
+ "path": "slotStatuses.high",
104839
+ "valueType": "enum",
104840
+ "enumValues": [
104841
+ "unassigned",
104842
+ "idle",
104843
+ "connecting",
104844
+ "streaming",
104845
+ "error"
104846
+ ]
104847
+ },
104848
+ {
104849
+ "path": "slotStatuses.mid",
104850
+ "valueType": "enum",
104851
+ "enumValues": [
104852
+ "unassigned",
104853
+ "idle",
104854
+ "connecting",
104855
+ "streaming",
104856
+ "error"
104857
+ ]
104858
+ },
104859
+ {
104860
+ "path": "slotStatuses.low",
104861
+ "valueType": "enum",
104862
+ "enumValues": [
104863
+ "unassigned",
104864
+ "idle",
104865
+ "connecting",
104866
+ "streaming",
104867
+ "error"
104868
+ ]
104869
+ },
104870
+ {
104871
+ "path": "slotErrors.high",
104872
+ "valueType": "string"
104873
+ },
104874
+ {
104875
+ "path": "slotErrors.mid",
104876
+ "valueType": "string"
104877
+ },
104878
+ {
104879
+ "path": "slotErrors.low",
104880
+ "valueType": "string"
104881
+ }
104882
+ ],
104883
+ "carbon-monoxide": [{
104884
+ "path": "detected",
104885
+ "valueType": "boolean"
104886
+ }],
104887
+ "climate-control": [
104888
+ {
104889
+ "path": "mode",
104890
+ "valueType": "enum",
104891
+ "enumValues": [
104892
+ "off",
104893
+ "heat",
104894
+ "cool",
104895
+ "auto",
104896
+ "heat_cool",
104897
+ "fan_only",
104898
+ "dry"
104899
+ ]
104900
+ },
104901
+ {
104902
+ "path": "fanMode",
104903
+ "valueType": "string"
104904
+ },
104905
+ {
104906
+ "path": "preset",
104907
+ "valueType": "string"
104908
+ },
104909
+ {
104910
+ "path": "target",
104911
+ "valueType": "number"
104912
+ },
104913
+ {
104914
+ "path": "targetHigh",
104915
+ "valueType": "number"
104916
+ },
104917
+ {
104918
+ "path": "targetLow",
104919
+ "valueType": "number"
104920
+ },
104921
+ {
104922
+ "path": "targetHumidity",
104923
+ "valueType": "number"
104924
+ },
104925
+ {
104926
+ "path": "currentTemp",
104927
+ "valueType": "number"
104928
+ },
104929
+ {
104930
+ "path": "currentHumidity",
104931
+ "valueType": "number"
104932
+ },
104933
+ {
104934
+ "path": "swingVertical",
104935
+ "valueType": "boolean"
104936
+ },
104937
+ {
104938
+ "path": "swingHorizontal",
104939
+ "valueType": "boolean"
104940
+ }
104941
+ ],
104942
+ "color": [
104943
+ {
104944
+ "path": "mode",
104945
+ "valueType": "enum",
104946
+ "enumValues": [
104947
+ "rgb",
104948
+ "hsv",
104949
+ "mired"
104950
+ ]
104951
+ },
104952
+ {
104953
+ "path": "rgb.r",
104954
+ "valueType": "number"
104955
+ },
104956
+ {
104957
+ "path": "rgb.g",
104958
+ "valueType": "number"
104959
+ },
104960
+ {
104961
+ "path": "rgb.b",
104962
+ "valueType": "number"
104963
+ },
104964
+ {
104965
+ "path": "hsv.h",
104966
+ "valueType": "number"
104967
+ },
104968
+ {
104969
+ "path": "hsv.s",
104970
+ "valueType": "number"
104971
+ },
104972
+ {
104973
+ "path": "hsv.v",
104974
+ "valueType": "number"
104975
+ },
104976
+ {
104977
+ "path": "mireds",
104978
+ "valueType": "number"
104979
+ }
104980
+ ],
104981
+ "connectivity": [{
104982
+ "path": "connected",
104983
+ "valueType": "boolean"
104984
+ }],
104985
+ "contact": [{
104986
+ "path": "entryOpen",
104987
+ "valueType": "boolean"
104988
+ }],
104989
+ "control": [
104990
+ {
104991
+ "path": "kind",
104992
+ "valueType": "enum",
104993
+ "enumValues": [
104994
+ "numeric",
104995
+ "select",
104996
+ "text",
104997
+ "datetime"
104998
+ ]
104999
+ },
105000
+ {
105001
+ "path": "unit",
105002
+ "valueType": "string"
105003
+ },
105004
+ {
105005
+ "path": "min",
105006
+ "valueType": "number"
105007
+ },
105008
+ {
105009
+ "path": "max",
105010
+ "valueType": "number"
105011
+ },
105012
+ {
105013
+ "path": "step",
105014
+ "valueType": "number"
105015
+ },
105016
+ {
105017
+ "path": "precision",
105018
+ "valueType": "number"
105019
+ },
105020
+ {
105021
+ "path": "format",
105022
+ "valueType": "enum",
105023
+ "enumValues": [
105024
+ "date",
105025
+ "time",
105026
+ "datetime"
105027
+ ]
105028
+ }
105029
+ ],
105030
+ "cover": [
105031
+ {
105032
+ "path": "state",
105033
+ "valueType": "enum",
105034
+ "enumValues": [
105035
+ "open",
105036
+ "opening",
105037
+ "closing",
105038
+ "closed",
105039
+ "stopped"
105040
+ ]
105041
+ },
105042
+ {
105043
+ "path": "position",
105044
+ "valueType": "number"
105045
+ },
105046
+ {
105047
+ "path": "tiltPosition",
105048
+ "valueType": "number"
105049
+ }
105050
+ ],
105051
+ "day-night": [
105052
+ {
105053
+ "path": "mode",
105054
+ "valueType": "enum",
105055
+ "enumValues": [
105056
+ "auto",
105057
+ "day",
105058
+ "night",
105059
+ "schedule"
105060
+ ]
105061
+ },
105062
+ {
105063
+ "path": "sensitivity",
105064
+ "valueType": "number"
105065
+ },
105066
+ {
105067
+ "path": "switchDelaySec",
105068
+ "valueType": "number"
105069
+ }
105070
+ ],
105071
+ "device-adoption": [
105072
+ {
105073
+ "path": "lastDiscoveryAt",
105074
+ "valueType": "number"
105075
+ },
105076
+ {
105077
+ "path": "candidateCount",
105078
+ "valueType": "number"
105079
+ },
105080
+ {
105081
+ "path": "adoptedCount",
105082
+ "valueType": "number"
105083
+ },
105084
+ {
105085
+ "path": "lastError",
105086
+ "valueType": "string"
105087
+ }
105088
+ ],
105089
+ "device-discovery": [{
105090
+ "path": "lastDiscoveryAt",
105091
+ "valueType": "number"
105092
+ }, {
105093
+ "path": "lastError",
105094
+ "valueType": "string"
105095
+ }],
105096
+ "device-export": [
105097
+ {
105098
+ "path": "linkState",
105099
+ "valueType": "enum",
105100
+ "enumValues": [
105101
+ "unlinked",
105102
+ "linked",
105103
+ "error"
105104
+ ]
105105
+ },
105106
+ {
105107
+ "path": "exposedDeviceCount",
105108
+ "valueType": "number"
105109
+ },
105110
+ {
105111
+ "path": "error",
105112
+ "valueType": "string"
105113
+ },
105114
+ {
105115
+ "path": "setup.qr",
105116
+ "valueType": "string"
105117
+ },
105118
+ {
105119
+ "path": "setup.note",
105120
+ "valueType": "string"
105121
+ }
105122
+ ],
105123
+ "device-status": [{
105124
+ "path": "online",
105125
+ "valueType": "boolean"
105126
+ }],
105127
+ "doorbell": [{
105128
+ "path": "lastPressedAt",
105129
+ "valueType": "number"
105130
+ }, {
105131
+ "path": "pressCountSinceStart",
105132
+ "valueType": "number"
105133
+ }],
105134
+ "enum-sensor": [{
105135
+ "path": "value",
105136
+ "valueType": "string"
105137
+ }, {
105138
+ "path": "format",
105139
+ "valueType": "enum",
105140
+ "enumValues": [
105141
+ "date",
105142
+ "time",
105143
+ "datetime"
105144
+ ]
105145
+ }],
105146
+ "event-emitter": [
105147
+ {
105148
+ "path": "lastEvent.deviceId",
105149
+ "valueType": "number"
105150
+ },
105151
+ {
105152
+ "path": "lastEvent.eventType",
105153
+ "valueType": "string"
105154
+ },
105155
+ {
105156
+ "path": "lastEvent.timestamp",
105157
+ "valueType": "number"
105158
+ },
105159
+ {
105160
+ "path": "lastEvent.seq",
105161
+ "valueType": "number"
105162
+ },
105163
+ {
105164
+ "path": "eventCountSinceStart",
105165
+ "valueType": "number"
105166
+ }
105167
+ ],
105168
+ "fan-control": [
105169
+ {
105170
+ "path": "percentage",
105171
+ "valueType": "number"
105172
+ },
105173
+ {
105174
+ "path": "percentageStep",
105175
+ "valueType": "number"
105176
+ },
105177
+ {
105178
+ "path": "preset",
105179
+ "valueType": "string"
105180
+ },
105181
+ {
105182
+ "path": "direction",
105183
+ "valueType": "enum",
105184
+ "enumValues": ["forward", "reverse"]
105185
+ },
105186
+ {
105187
+ "path": "oscillating",
105188
+ "valueType": "boolean"
105189
+ }
105190
+ ],
105191
+ "feature-probe": [
105192
+ {
105193
+ "path": "deviceType",
105194
+ "valueType": "string"
105195
+ },
105196
+ {
105197
+ "path": "model",
105198
+ "valueType": "string"
105199
+ },
105200
+ {
105201
+ "path": "channelCount",
105202
+ "valueType": "number"
105203
+ },
105204
+ {
105205
+ "path": "lastProbedAt",
105206
+ "valueType": "number"
105207
+ }
105208
+ ],
105209
+ "flood": [{
105210
+ "path": "flooded",
105211
+ "valueType": "boolean"
105212
+ }],
105213
+ "gas": [{
105214
+ "path": "detected",
105215
+ "valueType": "boolean"
105216
+ }],
105217
+ "humidifier": [
105218
+ {
105219
+ "path": "on",
105220
+ "valueType": "boolean"
105221
+ },
105222
+ {
105223
+ "path": "currentHumidity",
105224
+ "valueType": "number"
105225
+ },
105226
+ {
105227
+ "path": "targetHumidity",
105228
+ "valueType": "number"
105229
+ },
105230
+ {
105231
+ "path": "mode",
105232
+ "valueType": "string"
105233
+ },
105234
+ {
105235
+ "path": "action",
105236
+ "valueType": "string"
105237
+ },
105238
+ {
105239
+ "path": "minHumidity",
105240
+ "valueType": "number"
105241
+ },
105242
+ {
105243
+ "path": "maxHumidity",
105244
+ "valueType": "number"
105245
+ }
105246
+ ],
105247
+ "humidity-sensor": [
105248
+ {
105249
+ "path": "percent",
105250
+ "valueType": "number"
105251
+ },
105252
+ {
105253
+ "path": "unit",
105254
+ "valueType": "string"
105255
+ },
105256
+ {
105257
+ "path": "precision",
105258
+ "valueType": "number"
105259
+ }
105260
+ ],
105261
+ "image": [{
105262
+ "path": "url",
105263
+ "valueType": "string"
105264
+ }, {
105265
+ "path": "lastUpdated",
105266
+ "valueType": "number"
105267
+ }],
105268
+ "image-settings": [
105269
+ {
105270
+ "path": "brightness",
105271
+ "valueType": "number"
105272
+ },
105273
+ {
105274
+ "path": "contrast",
105275
+ "valueType": "number"
105276
+ },
105277
+ {
105278
+ "path": "saturation",
105279
+ "valueType": "number"
105280
+ },
105281
+ {
105282
+ "path": "sharpness",
105283
+ "valueType": "number"
105284
+ },
105285
+ {
105286
+ "path": "mirror",
105287
+ "valueType": "boolean"
105288
+ },
105289
+ {
105290
+ "path": "flip",
105291
+ "valueType": "boolean"
105292
+ },
105293
+ {
105294
+ "path": "rotate",
105295
+ "valueType": "enum",
105296
+ "enumValues": [
105297
+ "0",
105298
+ "90",
105299
+ "180",
105300
+ "270"
105301
+ ]
105302
+ },
105303
+ {
105304
+ "path": "whiteBalance",
105305
+ "valueType": "enum",
105306
+ "enumValues": ["auto", "manual"]
105307
+ },
105308
+ {
105309
+ "path": "warmth",
105310
+ "valueType": "number"
105311
+ },
105312
+ {
105313
+ "path": "exposureMode",
105314
+ "valueType": "enum",
105315
+ "enumValues": ["auto", "manual"]
105316
+ },
105317
+ {
105318
+ "path": "backlightMode",
105319
+ "valueType": "enum",
105320
+ "enumValues": [
105321
+ "off",
105322
+ "blc",
105323
+ "wdr",
105324
+ "hlc"
105325
+ ]
105326
+ }
105327
+ ],
105328
+ "intercom": [
105329
+ {
105330
+ "path": "talking",
105331
+ "valueType": "boolean"
105332
+ },
105333
+ {
105334
+ "path": "lastSessionAt",
105335
+ "valueType": "number"
105336
+ },
105337
+ {
105338
+ "path": "ability.sampleRate",
105339
+ "valueType": "number"
105340
+ },
105341
+ {
105342
+ "path": "ability.duplex",
105343
+ "valueType": "enum",
105344
+ "enumValues": ["half", "full"]
105345
+ },
105346
+ {
105347
+ "path": "ability.maxBacklogMs",
105348
+ "valueType": "number"
105349
+ }
105350
+ ],
105351
+ "lawn-mower-control": [
105352
+ {
105353
+ "path": "activity",
105354
+ "valueType": "enum",
105355
+ "enumValues": [
105356
+ "idle",
105357
+ "mowing",
105358
+ "paused",
105359
+ "docked",
105360
+ "error"
105361
+ ]
105362
+ },
105363
+ {
105364
+ "path": "batteryLevel",
105365
+ "valueType": "number"
105366
+ },
105367
+ {
105368
+ "path": "progressPercent",
105369
+ "valueType": "number"
105370
+ },
105371
+ {
105372
+ "path": "currentCode",
105373
+ "valueType": "number"
105374
+ },
105375
+ {
105376
+ "path": "currentCodeLabel",
105377
+ "valueType": "string"
105378
+ },
105379
+ {
105380
+ "path": "severity",
105381
+ "valueType": "enum",
105382
+ "enumValues": [
105383
+ "info",
105384
+ "warning",
105385
+ "error"
105386
+ ]
105387
+ }
105388
+ ],
105389
+ "lock-control": [{
105390
+ "path": "state",
105391
+ "valueType": "enum",
105392
+ "enumValues": [
105393
+ "locked",
105394
+ "unlocked",
105395
+ "locking",
105396
+ "unlocking",
105397
+ "jammed"
105398
+ ]
105399
+ }],
105400
+ "media-player": [
105401
+ {
105402
+ "path": "state",
105403
+ "valueType": "enum",
105404
+ "enumValues": [
105405
+ "off",
105406
+ "on",
105407
+ "idle",
105408
+ "playing",
105409
+ "paused",
105410
+ "buffering",
105411
+ "standby"
105412
+ ]
105413
+ },
105414
+ {
105415
+ "path": "volumeLevel",
105416
+ "valueType": "number"
105417
+ },
105418
+ {
105419
+ "path": "isMuted",
105420
+ "valueType": "boolean"
105421
+ },
105422
+ {
105423
+ "path": "source",
105424
+ "valueType": "string"
105425
+ },
105426
+ {
105427
+ "path": "currentMedia.type",
105428
+ "valueType": "string"
105429
+ },
105430
+ {
105431
+ "path": "currentMedia.title",
105432
+ "valueType": "string"
105433
+ },
105434
+ {
105435
+ "path": "currentMedia.artist",
105436
+ "valueType": "string"
105437
+ },
105438
+ {
105439
+ "path": "currentMedia.album",
105440
+ "valueType": "string"
105441
+ },
105442
+ {
105443
+ "path": "currentMedia.imageUrl",
105444
+ "valueType": "string"
105445
+ },
105446
+ {
105447
+ "path": "positionMs",
105448
+ "valueType": "number"
105449
+ },
105450
+ {
105451
+ "path": "durationMs",
105452
+ "valueType": "number"
105453
+ },
105454
+ {
105455
+ "path": "shuffle",
105456
+ "valueType": "boolean"
105457
+ },
105458
+ {
105459
+ "path": "repeat",
105460
+ "valueType": "enum",
105461
+ "enumValues": [
105462
+ "off",
105463
+ "all",
105464
+ "one"
105465
+ ]
105466
+ }
105467
+ ],
105468
+ "motion": [
105469
+ {
105470
+ "path": "detected",
105471
+ "valueType": "boolean"
105472
+ },
105473
+ {
105474
+ "path": "lastDetectedAt",
105475
+ "valueType": "number"
105476
+ },
105477
+ {
105478
+ "path": "autoClearAfterMs",
105479
+ "valueType": "number"
105480
+ }
105481
+ ],
105482
+ "motion-trigger": [{
105483
+ "path": "enabled",
105484
+ "valueType": "boolean"
105485
+ }],
105486
+ "motion-zones": [{
105487
+ "path": "enabled",
105488
+ "valueType": "boolean"
105489
+ }, {
105490
+ "path": "sensitivity",
105491
+ "valueType": "number"
105492
+ }],
105493
+ "mqtt-broker": [{
105494
+ "path": "brokerCount",
105495
+ "valueType": "number"
105496
+ }, {
105497
+ "path": "embeddedRunning",
105498
+ "valueType": "boolean"
105499
+ }],
105500
+ "native-object-detection": [{
105501
+ "path": "enabled",
105502
+ "valueType": "boolean"
105503
+ }],
105504
+ "navigation": [
105505
+ {
105506
+ "path": "mode",
105507
+ "valueType": "enum",
105508
+ "enumValues": [
105509
+ "idle",
105510
+ "cleaning",
105511
+ "spot",
105512
+ "following",
105513
+ "goto",
105514
+ "returning",
105515
+ "paused",
105516
+ "unknown"
105517
+ ]
105518
+ },
105519
+ {
105520
+ "path": "following",
105521
+ "valueType": "boolean"
105522
+ },
105523
+ {
105524
+ "path": "flash",
105525
+ "valueType": "boolean"
105526
+ },
105527
+ {
105528
+ "path": "lightMode",
105529
+ "valueType": "enum",
105530
+ "enumValues": ["auto", "manual"]
105531
+ },
105532
+ {
105533
+ "path": "lightLevel",
105534
+ "valueType": "number"
105535
+ }
105536
+ ],
105537
+ "network-link": [
105538
+ {
105539
+ "path": "type",
105540
+ "valueType": "enum",
105541
+ "enumValues": [
105542
+ "wifi",
105543
+ "ethernet",
105544
+ "cellular",
105545
+ "unknown"
105546
+ ]
105547
+ },
105548
+ {
105549
+ "path": "signalPercent",
105550
+ "valueType": "number"
105551
+ },
105552
+ {
105553
+ "path": "rssiDbm",
105554
+ "valueType": "number"
105555
+ },
105556
+ {
105557
+ "path": "ssid",
105558
+ "valueType": "string"
105559
+ },
105560
+ {
105561
+ "path": "lastUpdated",
105562
+ "valueType": "number"
105563
+ }
105564
+ ],
105565
+ "notifier": [
105566
+ {
105567
+ "path": "lastSentAt",
105568
+ "valueType": "number"
105569
+ },
105570
+ {
105571
+ "path": "lastError",
105572
+ "valueType": "string"
105573
+ },
105574
+ {
105575
+ "path": "queueDepth",
105576
+ "valueType": "number"
105577
+ },
105578
+ {
105579
+ "path": "supports.image",
105580
+ "valueType": "boolean"
105581
+ },
105582
+ {
105583
+ "path": "supports.priority",
105584
+ "valueType": "boolean"
105585
+ },
105586
+ {
105587
+ "path": "supports.data",
105588
+ "valueType": "boolean"
105589
+ },
105590
+ {
105591
+ "path": "supports.actions",
105592
+ "valueType": "boolean"
105593
+ },
105594
+ {
105595
+ "path": "supports.recipients",
105596
+ "valueType": "boolean"
105597
+ }
105598
+ ],
105599
+ "numeric-sensor": [
105600
+ {
105601
+ "path": "value",
105602
+ "valueType": "number"
105603
+ },
105604
+ {
105605
+ "path": "unit",
105606
+ "valueType": "string"
105607
+ },
105608
+ {
105609
+ "path": "precision",
105610
+ "valueType": "number"
105611
+ }
105612
+ ],
105613
+ "pet-feeder": [
105614
+ {
105615
+ "path": "foodLevel",
105616
+ "valueType": "number"
105617
+ },
105618
+ {
105619
+ "path": "food1",
105620
+ "valueType": "number"
105621
+ },
105622
+ {
105623
+ "path": "food2",
105624
+ "valueType": "number"
105625
+ },
105626
+ {
105627
+ "path": "lowFood",
105628
+ "valueType": "boolean"
105629
+ },
105630
+ {
105631
+ "path": "batteryPower",
105632
+ "valueType": "number"
105633
+ },
105634
+ {
105635
+ "path": "desiccantLeftDays",
105636
+ "valueType": "number"
105637
+ },
105638
+ {
105639
+ "path": "feeding",
105640
+ "valueType": "boolean"
105641
+ },
105642
+ {
105643
+ "path": "status",
105644
+ "valueType": "enum",
105645
+ "enumValues": [
105646
+ "normal",
105647
+ "offline",
105648
+ "on_batteries"
105649
+ ]
105650
+ },
105651
+ {
105652
+ "path": "error",
105653
+ "valueType": "string"
105654
+ },
105655
+ {
105656
+ "path": "errorCode",
105657
+ "valueType": "number"
105658
+ },
105659
+ {
105660
+ "path": "isDualHopper",
105661
+ "valueType": "boolean"
105662
+ },
105663
+ {
105664
+ "path": "childLock",
105665
+ "valueType": "boolean"
105666
+ },
105667
+ {
105668
+ "path": "indicatorLight",
105669
+ "valueType": "boolean"
105670
+ },
105671
+ {
105672
+ "path": "feedSound",
105673
+ "valueType": "boolean"
105674
+ },
105675
+ {
105676
+ "path": "volume",
105677
+ "valueType": "number"
105678
+ }
105679
+ ],
105680
+ "power-meter": [
105681
+ {
105682
+ "path": "watts",
105683
+ "valueType": "number"
105684
+ },
105685
+ {
105686
+ "path": "kwhTotal",
105687
+ "valueType": "number"
105688
+ },
105689
+ {
105690
+ "path": "volts",
105691
+ "valueType": "number"
105692
+ },
105693
+ {
105694
+ "path": "amps",
105695
+ "valueType": "number"
105696
+ },
105697
+ {
105698
+ "path": "va",
105699
+ "valueType": "number"
105700
+ },
105701
+ {
105702
+ "path": "powerFactor",
105703
+ "valueType": "number"
105704
+ },
105705
+ {
105706
+ "path": "unit",
105707
+ "valueType": "string"
105708
+ },
105709
+ {
105710
+ "path": "precision",
105711
+ "valueType": "number"
105712
+ }
105713
+ ],
105714
+ "presence": [
105715
+ {
105716
+ "path": "state",
105717
+ "valueType": "string"
105718
+ },
105719
+ {
105720
+ "path": "location",
105721
+ "valueType": "string"
105722
+ },
105723
+ {
105724
+ "path": "gps.latitude",
105725
+ "valueType": "number"
105726
+ },
105727
+ {
105728
+ "path": "gps.longitude",
105729
+ "valueType": "number"
105730
+ },
105731
+ {
105732
+ "path": "gps.accuracyMeters",
105733
+ "valueType": "number"
105734
+ },
105735
+ {
105736
+ "path": "batteryPercent",
105737
+ "valueType": "number"
105738
+ }
105739
+ ],
105740
+ "pressure-sensor": [
105741
+ {
105742
+ "path": "hpa",
105743
+ "valueType": "number"
105744
+ },
105745
+ {
105746
+ "path": "unit",
105747
+ "valueType": "string"
105748
+ },
105749
+ {
105750
+ "path": "precision",
105751
+ "valueType": "number"
105752
+ }
105753
+ ],
105754
+ "privacy-mask": [{
105755
+ "path": "enabled",
105756
+ "valueType": "boolean"
105757
+ }, {
105758
+ "path": "audioEnabled",
105759
+ "valueType": "boolean"
105760
+ }],
105761
+ "ptz": [
105762
+ {
105763
+ "path": "pan",
105764
+ "valueType": "number"
105765
+ },
105766
+ {
105767
+ "path": "tilt",
105768
+ "valueType": "number"
105769
+ },
105770
+ {
105771
+ "path": "zoom",
105772
+ "valueType": "number"
105773
+ },
105774
+ {
105775
+ "path": "autofocus",
105776
+ "valueType": "boolean"
105777
+ }
105778
+ ],
105779
+ "ptz-autotrack": [
105780
+ {
105781
+ "path": "enabled",
105782
+ "valueType": "boolean"
105783
+ },
105784
+ {
105785
+ "path": "currentSettings.targetType",
105786
+ "valueType": "string"
105787
+ },
105788
+ {
105789
+ "path": "currentSettings.stopDelaySeconds",
105790
+ "valueType": "number"
105791
+ },
105792
+ {
105793
+ "path": "currentSettings.disappearDelaySeconds",
105794
+ "valueType": "number"
105795
+ }
105796
+ ],
105797
+ "recording-archive": [
105798
+ {
105799
+ "path": "deviceId",
105800
+ "valueType": "number"
105801
+ },
105802
+ {
105803
+ "path": "enabled",
105804
+ "valueType": "boolean"
105805
+ },
105806
+ {
105807
+ "path": "activeMode",
105808
+ "valueType": "enum",
105809
+ "enumValues": [
105810
+ "off",
105811
+ "events",
105812
+ "continuous",
105813
+ "on-device-decision"
105814
+ ]
105815
+ },
105816
+ {
105817
+ "path": "nodeId",
105818
+ "valueType": "string"
105819
+ },
105820
+ {
105821
+ "path": "storageBytes",
105822
+ "valueType": "number"
105823
+ }
105824
+ ],
105825
+ "recording-onboard": [
105826
+ {
105827
+ "path": "primaryTrackId",
105828
+ "valueType": "string"
105829
+ },
105830
+ {
105831
+ "path": "enabled",
105832
+ "valueType": "boolean"
105833
+ },
105834
+ {
105835
+ "path": "overwriteWhenFull",
105836
+ "valueType": "boolean"
105837
+ },
105838
+ {
105839
+ "path": "preRecordSec",
105840
+ "valueType": "number"
105841
+ },
105842
+ {
105843
+ "path": "postRecordSec",
105844
+ "valueType": "number"
105845
+ },
105846
+ {
105847
+ "path": "segmentMinutes",
105848
+ "valueType": "number"
105849
+ },
105850
+ {
105851
+ "path": "unreadableWindows",
105852
+ "valueType": "number"
105853
+ },
105854
+ {
105855
+ "path": "recordingToNowhere",
105856
+ "valueType": "boolean"
105857
+ }
105858
+ ],
105859
+ "recording-signal": [{
105860
+ "path": "active",
105861
+ "valueType": "boolean"
105862
+ }, {
105863
+ "path": "reason",
105864
+ "valueType": "string"
105865
+ }],
105866
+ "script-runner": [
105867
+ {
105868
+ "path": "isRunning",
105869
+ "valueType": "boolean"
105870
+ },
105871
+ {
105872
+ "path": "lastRunAt",
105873
+ "valueType": "number"
105874
+ },
105875
+ {
105876
+ "path": "lastRunSuccess",
105877
+ "valueType": "boolean"
105878
+ },
105879
+ {
105880
+ "path": "lastError",
105881
+ "valueType": "string"
105882
+ }
105883
+ ],
105884
+ "smoke": [{
105885
+ "path": "detected",
105886
+ "valueType": "boolean"
105887
+ }],
105888
+ "snapshot": [
105889
+ {
105890
+ "path": "lastCapturedAt",
105891
+ "valueType": "number"
105892
+ },
105893
+ {
105894
+ "path": "cacheAgeMs",
105895
+ "valueType": "number"
105896
+ },
105897
+ {
105898
+ "path": "lastBytes",
105899
+ "valueType": "number"
105900
+ },
105901
+ {
105902
+ "path": "lastStreamId",
105903
+ "valueType": "string"
105904
+ }
105905
+ ],
105906
+ "stream-params": [
105907
+ {
105908
+ "path": "main.width",
105909
+ "valueType": "number"
105910
+ },
105911
+ {
105912
+ "path": "main.height",
105913
+ "valueType": "number"
105914
+ },
105915
+ {
105916
+ "path": "main.codec",
105917
+ "valueType": "enum",
105918
+ "enumValues": ["h264", "h265"]
105919
+ },
105920
+ {
105921
+ "path": "main.framerate",
105922
+ "valueType": "number"
105923
+ },
105924
+ {
105925
+ "path": "main.bitrate",
105926
+ "valueType": "number"
105927
+ },
105928
+ {
105929
+ "path": "main.bitrateMode",
105930
+ "valueType": "enum",
105931
+ "enumValues": ["vbr", "cbr"]
105932
+ },
105933
+ {
105934
+ "path": "main.encoderProfile",
105935
+ "valueType": "enum",
105936
+ "enumValues": [
105937
+ "high",
105938
+ "main",
105939
+ "baseline"
105940
+ ]
105941
+ },
105942
+ {
105943
+ "path": "main.gop",
105944
+ "valueType": "number"
105945
+ },
105946
+ {
105947
+ "path": "main.audio",
105948
+ "valueType": "boolean"
105949
+ },
105950
+ {
105951
+ "path": "sub.width",
105952
+ "valueType": "number"
105953
+ },
105954
+ {
105955
+ "path": "sub.height",
105956
+ "valueType": "number"
105957
+ },
105958
+ {
105959
+ "path": "sub.codec",
105960
+ "valueType": "enum",
105961
+ "enumValues": ["h264", "h265"]
105962
+ },
105963
+ {
105964
+ "path": "sub.framerate",
105965
+ "valueType": "number"
105966
+ },
105967
+ {
105968
+ "path": "sub.bitrate",
105969
+ "valueType": "number"
105970
+ },
105971
+ {
105972
+ "path": "sub.bitrateMode",
105973
+ "valueType": "enum",
105974
+ "enumValues": ["vbr", "cbr"]
105975
+ },
105976
+ {
105977
+ "path": "sub.encoderProfile",
105978
+ "valueType": "enum",
105979
+ "enumValues": [
105980
+ "high",
105981
+ "main",
105982
+ "baseline"
105983
+ ]
105984
+ },
105985
+ {
105986
+ "path": "sub.gop",
105987
+ "valueType": "number"
105988
+ },
105989
+ {
105990
+ "path": "sub.audio",
105991
+ "valueType": "boolean"
105992
+ },
105993
+ {
105994
+ "path": "ext.width",
105995
+ "valueType": "number"
105996
+ },
105997
+ {
105998
+ "path": "ext.height",
105999
+ "valueType": "number"
106000
+ },
106001
+ {
106002
+ "path": "ext.codec",
106003
+ "valueType": "enum",
106004
+ "enumValues": ["h264", "h265"]
106005
+ },
106006
+ {
106007
+ "path": "ext.framerate",
106008
+ "valueType": "number"
106009
+ },
106010
+ {
106011
+ "path": "ext.bitrate",
106012
+ "valueType": "number"
106013
+ },
106014
+ {
106015
+ "path": "ext.bitrateMode",
106016
+ "valueType": "enum",
106017
+ "enumValues": ["vbr", "cbr"]
106018
+ },
106019
+ {
106020
+ "path": "ext.encoderProfile",
106021
+ "valueType": "enum",
106022
+ "enumValues": [
106023
+ "high",
106024
+ "main",
106025
+ "baseline"
106026
+ ]
106027
+ },
106028
+ {
106029
+ "path": "ext.gop",
106030
+ "valueType": "number"
106031
+ },
106032
+ {
106033
+ "path": "ext.audio",
106034
+ "valueType": "boolean"
106035
+ }
106036
+ ],
106037
+ "switch": [{
106038
+ "path": "on",
106039
+ "valueType": "boolean"
106040
+ }],
106041
+ "tamper": [{
106042
+ "path": "tampered",
106043
+ "valueType": "boolean"
106044
+ }],
106045
+ "temperature-sensor": [
106046
+ {
106047
+ "path": "celsius",
106048
+ "valueType": "number"
106049
+ },
106050
+ {
106051
+ "path": "unit",
106052
+ "valueType": "string"
106053
+ },
106054
+ {
106055
+ "path": "precision",
106056
+ "valueType": "number"
106057
+ }
106058
+ ],
106059
+ "update": [
106060
+ {
106061
+ "path": "currentVersion",
106062
+ "valueType": "string"
106063
+ },
106064
+ {
106065
+ "path": "availableVersion",
106066
+ "valueType": "string"
106067
+ },
106068
+ {
106069
+ "path": "updatable",
106070
+ "valueType": "boolean"
106071
+ },
106072
+ {
106073
+ "path": "state",
106074
+ "valueType": "string"
106075
+ },
106076
+ {
106077
+ "path": "inProgress",
106078
+ "valueType": "boolean"
106079
+ }
106080
+ ],
106081
+ "vacuum-control": [
106082
+ {
106083
+ "path": "state",
106084
+ "valueType": "enum",
106085
+ "enumValues": [
106086
+ "idle",
106087
+ "cleaning",
106088
+ "paused",
106089
+ "returning",
106090
+ "docked",
106091
+ "drying",
106092
+ "error"
106093
+ ]
106094
+ },
106095
+ {
106096
+ "path": "batteryLevel",
106097
+ "valueType": "number"
106098
+ },
106099
+ {
106100
+ "path": "fanSpeed",
106101
+ "valueType": "string"
106102
+ },
106103
+ {
106104
+ "path": "cleanWater.level",
106105
+ "valueType": "number"
106106
+ },
106107
+ {
106108
+ "path": "cleanWater.status",
106109
+ "valueType": "enum",
106110
+ "enumValues": [
106111
+ "ok",
106112
+ "low",
106113
+ "full"
106114
+ ]
106115
+ },
106116
+ {
106117
+ "path": "dirtyWater.level",
106118
+ "valueType": "number"
106119
+ },
106120
+ {
106121
+ "path": "dirtyWater.status",
106122
+ "valueType": "enum",
106123
+ "enumValues": [
106124
+ "ok",
106125
+ "low",
106126
+ "full"
106127
+ ]
106128
+ },
106129
+ {
106130
+ "path": "detergent.level",
106131
+ "valueType": "number"
106132
+ },
106133
+ {
106134
+ "path": "detergent.status",
106135
+ "valueType": "enum",
106136
+ "enumValues": [
106137
+ "ok",
106138
+ "low",
106139
+ "full"
106140
+ ]
106141
+ },
106142
+ {
106143
+ "path": "dustBin.level",
106144
+ "valueType": "number"
106145
+ },
106146
+ {
106147
+ "path": "dustBin.status",
106148
+ "valueType": "enum",
106149
+ "enumValues": [
106150
+ "ok",
106151
+ "low",
106152
+ "full"
106153
+ ]
106154
+ },
106155
+ {
106156
+ "path": "progressPercent",
106157
+ "valueType": "number"
106158
+ },
106159
+ {
106160
+ "path": "errorCode",
106161
+ "valueType": "number"
106162
+ },
106163
+ {
106164
+ "path": "errorLabel",
106165
+ "valueType": "string"
106166
+ }
106167
+ ],
106168
+ "valve": [{
106169
+ "path": "state",
106170
+ "valueType": "enum",
106171
+ "enumValues": [
106172
+ "open",
106173
+ "opening",
106174
+ "closing",
106175
+ "closed",
106176
+ "stopped"
106177
+ ]
106178
+ }, {
106179
+ "path": "position",
106180
+ "valueType": "number"
106181
+ }],
106182
+ "vibration": [{
106183
+ "path": "detected",
106184
+ "valueType": "boolean"
106185
+ }],
106186
+ "water-heater": [
106187
+ {
106188
+ "path": "currentTemp",
106189
+ "valueType": "number"
106190
+ },
106191
+ {
106192
+ "path": "targetTemp",
106193
+ "valueType": "number"
106194
+ },
106195
+ {
106196
+ "path": "operationMode",
106197
+ "valueType": "string"
106198
+ },
106199
+ {
106200
+ "path": "away",
106201
+ "valueType": "boolean"
106202
+ },
106203
+ {
106204
+ "path": "minTemp",
106205
+ "valueType": "number"
106206
+ },
106207
+ {
106208
+ "path": "maxTemp",
106209
+ "valueType": "number"
106210
+ }
106211
+ ],
106212
+ "weather": [
106213
+ {
106214
+ "path": "condition",
106215
+ "valueType": "string"
106216
+ },
106217
+ {
106218
+ "path": "temperature",
106219
+ "valueType": "number"
106220
+ },
106221
+ {
106222
+ "path": "temperatureUnit",
106223
+ "valueType": "string"
106224
+ },
106225
+ {
106226
+ "path": "humidity",
106227
+ "valueType": "number"
106228
+ },
106229
+ {
106230
+ "path": "pressure",
106231
+ "valueType": "number"
106232
+ },
106233
+ {
106234
+ "path": "pressureUnit",
106235
+ "valueType": "string"
106236
+ },
106237
+ {
106238
+ "path": "windSpeed",
106239
+ "valueType": "number"
106240
+ },
106241
+ {
106242
+ "path": "windSpeedUnit",
106243
+ "valueType": "string"
106244
+ },
106245
+ {
106246
+ "path": "windBearing",
106247
+ "valueType": "number"
106248
+ }
106249
+ ],
106250
+ "zone-analytics": [
106251
+ {
106252
+ "path": "ts",
106253
+ "valueType": "number"
106254
+ },
106255
+ {
106256
+ "path": "frameWidth",
106257
+ "valueType": "number"
106258
+ },
106259
+ {
106260
+ "path": "frameHeight",
106261
+ "valueType": "number"
106262
+ },
106263
+ {
106264
+ "path": "frame.totalObjects",
106265
+ "valueType": "number"
106266
+ },
106267
+ {
106268
+ "path": "frame.standingObjects",
106269
+ "valueType": "number"
106270
+ },
106271
+ {
106272
+ "path": "frame.transientObjects",
106273
+ "valueType": "number"
106274
+ },
106275
+ {
106276
+ "path": "unzoned.totalObjects",
106277
+ "valueType": "number"
106278
+ },
106279
+ {
106280
+ "path": "unzoned.standingObjects",
106281
+ "valueType": "number"
106282
+ },
106283
+ {
106284
+ "path": "unzoned.transientObjects",
106285
+ "valueType": "number"
106286
+ }
106287
+ ]
106288
+ });
104233
106289
  //#endregion
104234
106290
  //#region src/pipeline-analytics/services/sensor-transition-gate.ts
104235
106291
  /**
@@ -104414,11 +106470,13 @@ var WORD_LEVEL_INACTIVE = {
104414
106470
  * `events[*].fromState: { field, on: 'advance' }` — the declaration the
104415
106471
  * composer already emits from — never listed by hand here. See "A press is a
104416
106472
  * stamp that ADVANCES" above.
106473
+ *
106474
+ * The table is codegen'd (`CAP_ADVANCE_FIELDS`, `npm run codegen`) and
106475
+ * schema-free: this file used to derive it from `ALL_CAPABILITY_DEFINITIONS`,
106476
+ * which inlined every cap's Zod schema into the addon (~+100 MB heap per
106477
+ * post-analysis runner, D28).
104417
106478
  */
104418
- var ADVANCE_FIELD = Object.fromEntries(require_clip_model_registry.ALL_CAPABILITY_DEFINITIONS.flatMap((def) => {
104419
- const fromState = Object.values(def.events ?? {}).find((event) => event.fromState?.on === "advance")?.fromState;
104420
- return fromState === void 0 ? [] : [[def.name, fromState.field]];
104421
- }));
106479
+ var ADVANCE_FIELD = CAP_ADVANCE_FIELDS;
104422
106480
  /** Default drop-summary window: one line per device per ten minutes, at most. */
104423
106481
  var DEFAULT_DROP_SUMMARY_WINDOW_MS = 6e5;
104424
106482
  var SensorTransitionGate = class {
@@ -105487,9 +107545,24 @@ function formatSuggestionThresholdReadout(similarityThreshold) {
105487
107545
  * misleading. Keyed by section id → set of field keys to drop.
105488
107546
  */
105489
107547
  var GLOBAL_ONLY_FIELDS = { "face-recognition": new Set(["enabled", SUGGESTION_THRESHOLD_READOUT_KEY]) };
105490
- /** Whole sections that are cluster-wide (global page only) and must NOT appear
105491
- * in a per-device contribution. */
105492
- var GLOBAL_ONLY_SECTIONS = new Set(["cluster-post-processing"]);
107548
+ /**
107549
+ * Whole sections that are cluster-wide (global page only) and must NOT appear
107550
+ * in a per-device contribution (D62: a per-camera field whose reader only ever
107551
+ * consults the global addon store is a knob that writes a store nobody reads).
107552
+ *
107553
+ * - `cluster-post-processing` — which node runs post-analysis.
107554
+ * - `embedding-index` — rebuild / wipe buttons that act on the whole index.
107555
+ * - `device-alerts` — battery / offline thresholds; read from the global
107556
+ * store into `deviceAlertSettingsMirror`, one value for the installation.
107557
+ * - `prune-windows` — outbox / timelapse / artefact shelf / digest mosaic
107558
+ * windows; `pruneWindows()` resolves them from the global store only.
107559
+ */
107560
+ var GLOBAL_ONLY_SECTIONS = new Set([
107561
+ "cluster-post-processing",
107562
+ "embedding-index",
107563
+ "device-alerts",
107564
+ "prune-windows"
107565
+ ]);
105493
107566
  /** Drop global-only sections + global-only fields from per-device sections. */
105494
107567
  function stripGlobalOnlyFields(sections) {
105495
107568
  return sections.filter((s) => !(s.id && GLOBAL_ONLY_SECTIONS.has(s.id))).map((s) => {
@@ -121813,10 +123886,11 @@ var PipelineAnalyticsAddon = class PipelineAnalyticsAddon extends require_clip_m
121813
123886
  if (!await this.isCameraDevice(input.deviceId)) return null;
121814
123887
  const schema = this.globalSettingsSchema();
121815
123888
  const raw = await this.readDeviceBlob(input.deviceId);
121816
- const baseSections = schema ? require_clip_model_registry.hydrateSchema({
123889
+ const globalRaw = await this.rawGlobalStoreMirror.resolve();
123890
+ const baseSections = schema ? hydrateWithInheritedGlobals({
121817
123891
  ...schema,
121818
123892
  sections: retagRetentionSection(retagDetectionSections(stripGlobalOnlyFields(toAnalyticsDeviceSections(schema.sections))))
121819
- }, raw).sections : [];
123893
+ }, raw, globalRaw) : [];
121820
123894
  const liveStatsSection = {
121821
123895
  id: "live-stats",
121822
123896
  title: "Live Stats",