@camstack/system 1.2.481 → 1.2.483

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 (109) hide show
  1. package/dist/addon-runner.js +2 -2
  2. package/dist/addon-runner.mjs +2 -2
  3. package/dist/{agent-https-o3X-jkS7.js → agent-https-CHZpVx3I.js} +1 -1
  4. package/dist/{agent-https-doVPSeiy.mjs → agent-https-NP141VCW.mjs} +1 -1
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +3 -3
  10. package/dist/builtins/alerts/alerts.addon.mjs +3 -3
  11. package/dist/builtins/alerts/device-label.d.ts +2 -2
  12. package/dist/builtins/autotrack/index.js +1 -1
  13. package/dist/builtins/autotrack/index.mjs +1 -1
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  15. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  16. package/dist/builtins/calendars/calendars.addon.js +1 -1
  17. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  18. package/dist/builtins/camera-grid/acquire-retry.d.ts +1 -1
  19. package/dist/builtins/camera-grid/addon.d.ts +2 -2
  20. package/dist/builtins/camera-grid/grid-profiles.d.ts +1 -1
  21. package/dist/builtins/camera-grid/grid-sentry-sources.d.ts +1 -1
  22. package/dist/builtins/camera-grid/index.js +3 -3
  23. package/dist/builtins/camera-grid/index.mjs +3 -3
  24. package/dist/builtins/composer/composer.addon.js +4 -4
  25. package/dist/builtins/composer/composer.addon.mjs +4 -4
  26. package/dist/builtins/composer/existing-target.d.ts +1 -1
  27. package/dist/builtins/composer/own-field-reads.d.ts +1 -1
  28. package/dist/builtins/console-logging/index.js +2 -2
  29. package/dist/builtins/console-logging/index.mjs +2 -2
  30. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  31. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  32. package/dist/builtins/device-history/device-history.addon.js +2 -2
  33. package/dist/builtins/device-history/device-history.addon.mjs +2 -2
  34. package/dist/builtins/device-manager/device-aggregation.d.ts +1 -1
  35. package/dist/builtins/device-manager/device-bindings-store.d.ts +3 -3
  36. package/dist/builtins/device-manager/device-manager.addon.js +9 -9
  37. package/dist/builtins/device-manager/device-manager.addon.mjs +9 -9
  38. package/dist/builtins/device-manager/device-meta-types.d.ts +2 -2
  39. package/dist/builtins/device-manager/device-online-fallback.d.ts +1 -1
  40. package/dist/builtins/hub-forwarder/index.js +2 -2
  41. package/dist/builtins/hub-forwarder/index.mjs +2 -2
  42. package/dist/builtins/keychain/index.js +3 -3
  43. package/dist/builtins/keychain/index.mjs +3 -3
  44. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  45. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  46. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  47. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  48. package/dist/builtins/local-network/local-network.addon.js +2 -2
  49. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  50. package/dist/builtins/loki-logging/index.js +1 -1
  51. package/dist/builtins/loki-logging/index.mjs +1 -1
  52. package/dist/builtins/native-metrics/native-metrics.addon.d.ts +1 -1
  53. package/dist/builtins/native-metrics/native-metrics.addon.js +3 -3
  54. package/dist/builtins/native-metrics/native-metrics.addon.mjs +3 -3
  55. package/dist/builtins/native-metrics/thread-cpu-sampler.d.ts +1 -1
  56. package/dist/builtins/platform-probe/index.js +1 -1
  57. package/dist/builtins/platform-probe/index.mjs +1 -1
  58. package/dist/builtins/record-entries/index.js +1 -1
  59. package/dist/builtins/record-entries/index.mjs +1 -1
  60. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  61. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  62. package/dist/builtins/snapshot/index.js +1 -1
  63. package/dist/builtins/snapshot/index.mjs +1 -1
  64. package/dist/builtins/snapshot/snapshot-fatigue.d.ts +1 -1
  65. package/dist/builtins/snapshot/snapshot-link-url.d.ts +1 -1
  66. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  67. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  68. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +1 -1
  69. package/dist/builtins/sqlite-storage/index.js +1 -1
  70. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  71. package/dist/builtins/sqlite-storage/prefix-range.d.ts +2 -2
  72. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +2 -2
  73. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
  74. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  75. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  76. package/dist/builtins/system-config/system-config.addon.js +3 -3
  77. package/dist/builtins/system-config/system-config.addon.mjs +280 -280
  78. package/dist/builtins/winston-logging/index.js +2 -2
  79. package/dist/builtins/winston-logging/index.mjs +2 -2
  80. package/dist/{composition-sources-BrDtOpfE.mjs → composition-sources-CC13wGKL.mjs} +1 -1
  81. package/dist/{composition-sources-BmhhDWIc.js → composition-sources-CQxrCexr.js} +1 -1
  82. package/dist/{constants-BVJrLycr.js → constants-Bt0NFXDm.js} +1 -1
  83. package/dist/{constants-xuLNi4a2.mjs → constants-DMB-ex5z.mjs} +1 -1
  84. package/dist/{device-ca-DgLZPn5R.js → device-ca-CSLMfr4Q.js} +1 -1
  85. package/dist/{device-ca-DKOZSFED.mjs → device-ca-HQKcvofS.mjs} +1 -1
  86. package/dist/{dist--v3KMKa1.js → dist-2gZWO597.js} +2215 -241
  87. package/dist/{dist-BIJXQo_j.mjs → dist-DvKEKSap.mjs} +2215 -241
  88. package/dist/file-host-worker.js +1 -1
  89. package/dist/file-host-worker.mjs +1 -1
  90. package/dist/{formatter-B7qW8bPJ.mjs → formatter-DkYZ4LXp.mjs} +1 -1
  91. package/dist/{formatter-DqAKDlvN.js → formatter-xbxeV4GD.js} +1 -1
  92. package/dist/{hub-mdns-ciao-C3NJsOvK.js → hub-mdns-ciao-Bs3cn9C1.js} +2 -2
  93. package/dist/{hub-mdns-ciao-DMFXIlMY.mjs → hub-mdns-ciao-CVf6mxIZ.mjs} +2 -2
  94. package/dist/index.js +131 -17
  95. package/dist/index.mjs +129 -18
  96. package/dist/kernel/addon-installer.d.ts +25 -5
  97. package/dist/kernel/addon-version-policy.d.ts +26 -0
  98. package/dist/kernel/heap-watch.d.ts +1 -1
  99. package/dist/kernel/index.d.ts +2 -0
  100. package/dist/kernel/moleculer/trpc-links.d.ts +1 -1
  101. package/dist/kernel/transport/socket-channel.d.ts +1 -1
  102. package/dist/logging/formatter.d.ts +1 -1
  103. package/dist/{restore-archive-DAEsvFY6.mjs → restore-archive-EFYeCdrG.mjs} +78 -78
  104. package/dist/{restore-archive-DpkdAuFf.js → restore-archive-_mgadWlk.js} +1 -1
  105. package/dist/{retention-DbunrLR4.mjs → retention-FFJW3-3P.mjs} +1 -1
  106. package/dist/{retention-C71dNCIh.js → retention-qugQGYuY.js} +1 -1
  107. package/dist/{wal-maintenance-CsGk4kYn.js → wal-maintenance-DbUC_wdC.js} +0 -0
  108. package/dist/{wal-maintenance-DYAJwPWu.mjs → wal-maintenance-TCW_esAc.mjs} +0 -0
  109. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import "node:crypto";
3
- //#region ../types/dist/event-category-Ceif8n-v.mjs
3
+ //#region ../types/dist/event-category-DHXxB8t9.mjs
4
4
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
5
5
  EventCategory["SystemBoot"] = "system.boot";
6
6
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -296,7 +296,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
296
296
  * TRANSITION into that state (never per dispatch), and the node is dropped
297
297
  * from the placement candidate set for as long as it holds.
298
298
  *
299
- * This exists because the state was previously invisible: little-unraid
299
+ * This exists because the state was previously invisible: agent-a
300
300
  * absorbed 283k inference errors in a day while still being handed cameras,
301
301
  * and nothing in the system said so.
302
302
  *
@@ -765,7 +765,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
765
765
  return EventCategory;
766
766
  }({});
767
767
  //#endregion
768
- //#region ../types/dist/sleep-CYfIZzGv.mjs
768
+ //#region ../types/dist/sleep-BErAxhul.mjs
769
769
  /**
770
770
  * The audio chunk plane's byte format, and the ONE expansion from a coded
771
771
  * window to float samples (D455).
@@ -4866,7 +4866,7 @@ var viewerUiCapability = {
4866
4866
  * `getStaticDir` leaks a hub filesystem path.
4867
4867
  *
4868
4868
  * ⚠ Checked before gating: the VIEWER app IS used by a non-admin user
4869
- * (`roberta`), but it never calls `viewerUi.*` over tRPC. The static SPA
4869
+ * (`bob`), but it never calls `viewerUi.*` over tRPC. The static SPA
4870
4870
  * it loads is served by the plain `GET /viewer/*` Fastify route in
4871
4871
  * `main.ts`, which reads `staticDir`/`indexPath` from a module-level
4872
4872
  * cache populated ONCE at boot via `capRegistry.getSingletonForNode`
@@ -5000,6 +5000,1980 @@ var deviceOpsCapability = {
5000
5000
  getRawState: method(z.object({ deviceId: z.number() }), RawStateResultSchema.nullable(), { auth: "protected" })
5001
5001
  }
5002
5002
  };
5003
+ Object.freeze({ "doorbell": "lastPressedAt" });
5004
+ /** Every capability name, so addon code can check a name without the schema graph. */
5005
+ var CAP_NAMES = Object.freeze([
5006
+ "accessories",
5007
+ "addon-pages",
5008
+ "addon-pages-source",
5009
+ "addon-routes",
5010
+ "addon-settings",
5011
+ "addon-widgets",
5012
+ "addon-widgets-source",
5013
+ "addons",
5014
+ "admin-ui",
5015
+ "air-quality-sensor",
5016
+ "alarm-panel",
5017
+ "alerts",
5018
+ "ambient-light-sensor",
5019
+ "audio-analysis",
5020
+ "audio-analyzer",
5021
+ "audio-codec",
5022
+ "audio-metrics",
5023
+ "auth-provider",
5024
+ "automation-control",
5025
+ "backup",
5026
+ "battery",
5027
+ "binary",
5028
+ "brightness",
5029
+ "broker",
5030
+ "button",
5031
+ "calendar-source",
5032
+ "calendars",
5033
+ "camera-credentials",
5034
+ "camera-grid-layout",
5035
+ "camera-pipeline-config",
5036
+ "camera-streams",
5037
+ "carbon-monoxide",
5038
+ "climate-control",
5039
+ "color",
5040
+ "composer",
5041
+ "connection-test",
5042
+ "connectivity",
5043
+ "consumables",
5044
+ "contact",
5045
+ "control",
5046
+ "core-blocks",
5047
+ "cover",
5048
+ "custom-model-registry",
5049
+ "data-store-provider",
5050
+ "database-snapshot",
5051
+ "day-night",
5052
+ "decoder",
5053
+ "detection-pipeline",
5054
+ "device-admin-link",
5055
+ "device-adoption",
5056
+ "device-credentials",
5057
+ "device-discovery",
5058
+ "device-export",
5059
+ "device-extension",
5060
+ "device-history",
5061
+ "device-manager",
5062
+ "device-ops",
5063
+ "device-provider",
5064
+ "device-removal-hook",
5065
+ "device-state",
5066
+ "device-status",
5067
+ "dishwasher",
5068
+ "display-palette",
5069
+ "doorbell",
5070
+ "embedding-encoder",
5071
+ "enum-sensor",
5072
+ "event-emitter",
5073
+ "face-gallery",
5074
+ "failure-contribution",
5075
+ "fan-control",
5076
+ "feature-probe",
5077
+ "filesystem-browse",
5078
+ "flood",
5079
+ "gas",
5080
+ "heating-valve",
5081
+ "humidifier",
5082
+ "humidity-sensor",
5083
+ "image",
5084
+ "image-settings",
5085
+ "integrations",
5086
+ "intercom",
5087
+ "keychain",
5088
+ "keychain-admin",
5089
+ "lawn-mower-control",
5090
+ "llm",
5091
+ "llm-runtime",
5092
+ "load-contribution",
5093
+ "local-network",
5094
+ "lock-control",
5095
+ "log-channels",
5096
+ "log-destination",
5097
+ "login-method",
5098
+ "media-player",
5099
+ "mesh-network",
5100
+ "metrics-provider",
5101
+ "model-convert",
5102
+ "model-distributor",
5103
+ "motion",
5104
+ "motion-detection",
5105
+ "motion-trigger",
5106
+ "motion-zones",
5107
+ "mqtt-broker",
5108
+ "native-object-detection",
5109
+ "navigation",
5110
+ "network-access",
5111
+ "network-link",
5112
+ "network-quality",
5113
+ "node-certificates",
5114
+ "nodes",
5115
+ "notification-output",
5116
+ "notification-rules",
5117
+ "notifier",
5118
+ "numeric-sensor",
5119
+ "oauth-integration",
5120
+ "oidc-connections",
5121
+ "osd",
5122
+ "osd-manager",
5123
+ "pet-feeder",
5124
+ "pipeline-analytics",
5125
+ "pipeline-executor",
5126
+ "pipeline-orchestrator",
5127
+ "pipeline-runner",
5128
+ "plate-gallery",
5129
+ "platform-probe",
5130
+ "power-meter",
5131
+ "presence",
5132
+ "pressure-sensor",
5133
+ "privacy-mask",
5134
+ "ptz",
5135
+ "ptz-autotrack",
5136
+ "reboot",
5137
+ "record-entries",
5138
+ "recording",
5139
+ "recording-archive",
5140
+ "recording-export",
5141
+ "recording-onboard",
5142
+ "recording-signal",
5143
+ "records",
5144
+ "running-state",
5145
+ "scene-monitor",
5146
+ "script-runner",
5147
+ "server-management",
5148
+ "settings-store",
5149
+ "smoke",
5150
+ "smtp-provider",
5151
+ "snapshot",
5152
+ "sso-bridge",
5153
+ "storage",
5154
+ "storage-admin",
5155
+ "storage-evictable",
5156
+ "storage-migration",
5157
+ "storage-occupancy",
5158
+ "storage-provider",
5159
+ "stream-broker",
5160
+ "stream-catalog",
5161
+ "stream-params",
5162
+ "stream-signals",
5163
+ "switch",
5164
+ "system",
5165
+ "tamper",
5166
+ "temperature-sensor",
5167
+ "terminal-session",
5168
+ "toast",
5169
+ "training",
5170
+ "training-provider",
5171
+ "turn-provider",
5172
+ "update",
5173
+ "user-management",
5174
+ "user-passkeys",
5175
+ "vacuum-control",
5176
+ "valve",
5177
+ "vector-store",
5178
+ "vibration",
5179
+ "videoclips",
5180
+ "viewer-ui",
5181
+ "water-heater",
5182
+ "weather",
5183
+ "webrtc-session",
5184
+ "zone-analytics",
5185
+ "zone-rules",
5186
+ "zones"
5187
+ ]);
5188
+ Object.freeze({
5189
+ "air-quality-sensor": [
5190
+ {
5191
+ "path": "co2Ppm",
5192
+ "valueType": "number"
5193
+ },
5194
+ {
5195
+ "path": "vocPpb",
5196
+ "valueType": "number"
5197
+ },
5198
+ {
5199
+ "path": "pm25",
5200
+ "valueType": "number"
5201
+ },
5202
+ {
5203
+ "path": "pm10",
5204
+ "valueType": "number"
5205
+ },
5206
+ {
5207
+ "path": "aqi",
5208
+ "valueType": "number"
5209
+ },
5210
+ {
5211
+ "path": "unit",
5212
+ "valueType": "string"
5213
+ },
5214
+ {
5215
+ "path": "precision",
5216
+ "valueType": "number"
5217
+ }
5218
+ ],
5219
+ "alarm-panel": [
5220
+ {
5221
+ "path": "state",
5222
+ "valueType": "enum",
5223
+ "enumValues": [
5224
+ "disarmed",
5225
+ "armed_home",
5226
+ "armed_away",
5227
+ "armed_night",
5228
+ "armed_vacation",
5229
+ "armed_custom_bypass",
5230
+ "arming",
5231
+ "disarming",
5232
+ "pending",
5233
+ "triggered"
5234
+ ]
5235
+ },
5236
+ {
5237
+ "path": "targetMode",
5238
+ "valueType": "enum",
5239
+ "enumValues": [
5240
+ "home",
5241
+ "away",
5242
+ "night",
5243
+ "vacation",
5244
+ "custom_bypass"
5245
+ ]
5246
+ },
5247
+ {
5248
+ "path": "requiresCode",
5249
+ "valueType": "boolean"
5250
+ }
5251
+ ],
5252
+ "ambient-light-sensor": [
5253
+ {
5254
+ "path": "lux",
5255
+ "valueType": "number"
5256
+ },
5257
+ {
5258
+ "path": "unit",
5259
+ "valueType": "string"
5260
+ },
5261
+ {
5262
+ "path": "precision",
5263
+ "valueType": "number"
5264
+ }
5265
+ ],
5266
+ "audio-metrics": [
5267
+ {
5268
+ "path": "ts",
5269
+ "valueType": "number"
5270
+ },
5271
+ {
5272
+ "path": "windowSec",
5273
+ "valueType": "number"
5274
+ },
5275
+ {
5276
+ "path": "level.rms",
5277
+ "valueType": "number"
5278
+ },
5279
+ {
5280
+ "path": "level.dbfs",
5281
+ "valueType": "number"
5282
+ },
5283
+ {
5284
+ "path": "peakDbfs",
5285
+ "valueType": "number"
5286
+ },
5287
+ {
5288
+ "path": "avgDbfs",
5289
+ "valueType": "number"
5290
+ },
5291
+ {
5292
+ "path": "current.className",
5293
+ "valueType": "string"
5294
+ },
5295
+ {
5296
+ "path": "current.score",
5297
+ "valueType": "number"
5298
+ },
5299
+ {
5300
+ "path": "current.timestamp",
5301
+ "valueType": "number"
5302
+ }
5303
+ ],
5304
+ "automation-control": [
5305
+ {
5306
+ "path": "enabled",
5307
+ "valueType": "boolean"
5308
+ },
5309
+ {
5310
+ "path": "isRunning",
5311
+ "valueType": "boolean"
5312
+ },
5313
+ {
5314
+ "path": "lastTriggeredAt",
5315
+ "valueType": "number"
5316
+ },
5317
+ {
5318
+ "path": "lastError",
5319
+ "valueType": "string"
5320
+ }
5321
+ ],
5322
+ "battery": [
5323
+ {
5324
+ "path": "percentage",
5325
+ "valueType": "number"
5326
+ },
5327
+ {
5328
+ "path": "charging",
5329
+ "valueType": "enum",
5330
+ "enumValues": [
5331
+ "dc",
5332
+ "solar",
5333
+ "none",
5334
+ "unknown"
5335
+ ]
5336
+ },
5337
+ {
5338
+ "path": "sleeping",
5339
+ "valueType": "boolean"
5340
+ },
5341
+ {
5342
+ "path": "lastUpdated",
5343
+ "valueType": "number"
5344
+ },
5345
+ {
5346
+ "path": "lastContactAt",
5347
+ "valueType": "number"
5348
+ },
5349
+ {
5350
+ "path": "lastFullRefreshAt",
5351
+ "valueType": "number"
5352
+ },
5353
+ {
5354
+ "path": "binary",
5355
+ "valueType": "boolean"
5356
+ }
5357
+ ],
5358
+ "binary": [{
5359
+ "path": "on",
5360
+ "valueType": "boolean"
5361
+ }],
5362
+ "brightness": [{
5363
+ "path": "percentage",
5364
+ "valueType": "number"
5365
+ }],
5366
+ "broker": [{
5367
+ "path": "brokerCount",
5368
+ "valueType": "number"
5369
+ }, {
5370
+ "path": "connectedCount",
5371
+ "valueType": "number"
5372
+ }],
5373
+ "camera-credentials": [
5374
+ {
5375
+ "path": "host",
5376
+ "valueType": "string"
5377
+ },
5378
+ {
5379
+ "path": "port",
5380
+ "valueType": "number"
5381
+ },
5382
+ {
5383
+ "path": "onvifPort",
5384
+ "valueType": "number"
5385
+ },
5386
+ {
5387
+ "path": "rtspPort",
5388
+ "valueType": "number"
5389
+ },
5390
+ {
5391
+ "path": "https",
5392
+ "valueType": "boolean"
5393
+ },
5394
+ {
5395
+ "path": "hasUsername",
5396
+ "valueType": "boolean"
5397
+ },
5398
+ {
5399
+ "path": "hasPassword",
5400
+ "valueType": "boolean"
5401
+ },
5402
+ {
5403
+ "path": "onvifProfile",
5404
+ "valueType": "string"
5405
+ }
5406
+ ],
5407
+ "camera-streams": [
5408
+ {
5409
+ "path": "online",
5410
+ "valueType": "boolean"
5411
+ },
5412
+ {
5413
+ "path": "slotStatuses.high",
5414
+ "valueType": "enum",
5415
+ "enumValues": [
5416
+ "unassigned",
5417
+ "idle",
5418
+ "connecting",
5419
+ "streaming",
5420
+ "error"
5421
+ ]
5422
+ },
5423
+ {
5424
+ "path": "slotStatuses.mid",
5425
+ "valueType": "enum",
5426
+ "enumValues": [
5427
+ "unassigned",
5428
+ "idle",
5429
+ "connecting",
5430
+ "streaming",
5431
+ "error"
5432
+ ]
5433
+ },
5434
+ {
5435
+ "path": "slotStatuses.low",
5436
+ "valueType": "enum",
5437
+ "enumValues": [
5438
+ "unassigned",
5439
+ "idle",
5440
+ "connecting",
5441
+ "streaming",
5442
+ "error"
5443
+ ]
5444
+ },
5445
+ {
5446
+ "path": "slotErrors.high",
5447
+ "valueType": "string"
5448
+ },
5449
+ {
5450
+ "path": "slotErrors.mid",
5451
+ "valueType": "string"
5452
+ },
5453
+ {
5454
+ "path": "slotErrors.low",
5455
+ "valueType": "string"
5456
+ }
5457
+ ],
5458
+ "carbon-monoxide": [{
5459
+ "path": "detected",
5460
+ "valueType": "boolean"
5461
+ }],
5462
+ "climate-control": [
5463
+ {
5464
+ "path": "mode",
5465
+ "valueType": "enum",
5466
+ "enumValues": [
5467
+ "off",
5468
+ "heat",
5469
+ "cool",
5470
+ "auto",
5471
+ "heat_cool",
5472
+ "fan_only",
5473
+ "dry"
5474
+ ]
5475
+ },
5476
+ {
5477
+ "path": "fanMode",
5478
+ "valueType": "string"
5479
+ },
5480
+ {
5481
+ "path": "preset",
5482
+ "valueType": "string"
5483
+ },
5484
+ {
5485
+ "path": "target",
5486
+ "valueType": "number"
5487
+ },
5488
+ {
5489
+ "path": "targetHigh",
5490
+ "valueType": "number"
5491
+ },
5492
+ {
5493
+ "path": "targetLow",
5494
+ "valueType": "number"
5495
+ },
5496
+ {
5497
+ "path": "targetHumidity",
5498
+ "valueType": "number"
5499
+ },
5500
+ {
5501
+ "path": "currentTemp",
5502
+ "valueType": "number"
5503
+ },
5504
+ {
5505
+ "path": "currentHumidity",
5506
+ "valueType": "number"
5507
+ },
5508
+ {
5509
+ "path": "swingVertical",
5510
+ "valueType": "boolean"
5511
+ },
5512
+ {
5513
+ "path": "swingHorizontal",
5514
+ "valueType": "boolean"
5515
+ },
5516
+ {
5517
+ "path": "minTemp",
5518
+ "valueType": "number"
5519
+ },
5520
+ {
5521
+ "path": "maxTemp",
5522
+ "valueType": "number"
5523
+ },
5524
+ {
5525
+ "path": "tempStep",
5526
+ "valueType": "number"
5527
+ }
5528
+ ],
5529
+ "color": [
5530
+ {
5531
+ "path": "mode",
5532
+ "valueType": "enum",
5533
+ "enumValues": [
5534
+ "rgb",
5535
+ "hsv",
5536
+ "mired"
5537
+ ]
5538
+ },
5539
+ {
5540
+ "path": "rgb.r",
5541
+ "valueType": "number"
5542
+ },
5543
+ {
5544
+ "path": "rgb.g",
5545
+ "valueType": "number"
5546
+ },
5547
+ {
5548
+ "path": "rgb.b",
5549
+ "valueType": "number"
5550
+ },
5551
+ {
5552
+ "path": "hsv.h",
5553
+ "valueType": "number"
5554
+ },
5555
+ {
5556
+ "path": "hsv.s",
5557
+ "valueType": "number"
5558
+ },
5559
+ {
5560
+ "path": "hsv.v",
5561
+ "valueType": "number"
5562
+ },
5563
+ {
5564
+ "path": "mireds",
5565
+ "valueType": "number"
5566
+ }
5567
+ ],
5568
+ "connectivity": [{
5569
+ "path": "connected",
5570
+ "valueType": "boolean"
5571
+ }],
5572
+ "contact": [{
5573
+ "path": "entryOpen",
5574
+ "valueType": "boolean"
5575
+ }],
5576
+ "control": [
5577
+ {
5578
+ "path": "kind",
5579
+ "valueType": "enum",
5580
+ "enumValues": [
5581
+ "numeric",
5582
+ "select",
5583
+ "text",
5584
+ "datetime"
5585
+ ]
5586
+ },
5587
+ {
5588
+ "path": "unit",
5589
+ "valueType": "string"
5590
+ },
5591
+ {
5592
+ "path": "min",
5593
+ "valueType": "number"
5594
+ },
5595
+ {
5596
+ "path": "max",
5597
+ "valueType": "number"
5598
+ },
5599
+ {
5600
+ "path": "step",
5601
+ "valueType": "number"
5602
+ },
5603
+ {
5604
+ "path": "precision",
5605
+ "valueType": "number"
5606
+ },
5607
+ {
5608
+ "path": "format",
5609
+ "valueType": "enum",
5610
+ "enumValues": [
5611
+ "date",
5612
+ "time",
5613
+ "datetime"
5614
+ ]
5615
+ }
5616
+ ],
5617
+ "cover": [
5618
+ {
5619
+ "path": "state",
5620
+ "valueType": "enum",
5621
+ "enumValues": [
5622
+ "open",
5623
+ "opening",
5624
+ "closing",
5625
+ "closed",
5626
+ "stopped"
5627
+ ]
5628
+ },
5629
+ {
5630
+ "path": "position",
5631
+ "valueType": "number"
5632
+ },
5633
+ {
5634
+ "path": "tiltPosition",
5635
+ "valueType": "number"
5636
+ }
5637
+ ],
5638
+ "day-night": [
5639
+ {
5640
+ "path": "mode",
5641
+ "valueType": "enum",
5642
+ "enumValues": [
5643
+ "auto",
5644
+ "day",
5645
+ "night",
5646
+ "schedule"
5647
+ ]
5648
+ },
5649
+ {
5650
+ "path": "sensitivity",
5651
+ "valueType": "number"
5652
+ },
5653
+ {
5654
+ "path": "switchDelaySec",
5655
+ "valueType": "number"
5656
+ }
5657
+ ],
5658
+ "device-adoption": [
5659
+ {
5660
+ "path": "lastDiscoveryAt",
5661
+ "valueType": "number"
5662
+ },
5663
+ {
5664
+ "path": "candidateCount",
5665
+ "valueType": "number"
5666
+ },
5667
+ {
5668
+ "path": "adoptedCount",
5669
+ "valueType": "number"
5670
+ },
5671
+ {
5672
+ "path": "lastError",
5673
+ "valueType": "string"
5674
+ }
5675
+ ],
5676
+ "device-discovery": [{
5677
+ "path": "lastDiscoveryAt",
5678
+ "valueType": "number"
5679
+ }, {
5680
+ "path": "lastError",
5681
+ "valueType": "string"
5682
+ }],
5683
+ "device-export": [
5684
+ {
5685
+ "path": "linkState",
5686
+ "valueType": "enum",
5687
+ "enumValues": [
5688
+ "unlinked",
5689
+ "linked",
5690
+ "error"
5691
+ ]
5692
+ },
5693
+ {
5694
+ "path": "exposedDeviceCount",
5695
+ "valueType": "number"
5696
+ },
5697
+ {
5698
+ "path": "error",
5699
+ "valueType": "string"
5700
+ },
5701
+ {
5702
+ "path": "setup.qr",
5703
+ "valueType": "string"
5704
+ },
5705
+ {
5706
+ "path": "setup.note",
5707
+ "valueType": "string"
5708
+ }
5709
+ ],
5710
+ "device-status": [{
5711
+ "path": "online",
5712
+ "valueType": "boolean"
5713
+ }],
5714
+ "dishwasher": [
5715
+ {
5716
+ "path": "availability",
5717
+ "valueType": "enum",
5718
+ "enumValues": [
5719
+ "available",
5720
+ "offline",
5721
+ "description-missing"
5722
+ ]
5723
+ },
5724
+ {
5725
+ "path": "state",
5726
+ "valueType": "enum",
5727
+ "enumValues": [
5728
+ "idle",
5729
+ "running",
5730
+ "paused",
5731
+ "finished",
5732
+ "error",
5733
+ "unavailable"
5734
+ ]
5735
+ },
5736
+ {
5737
+ "path": "operationState",
5738
+ "valueType": "enum",
5739
+ "enumValues": [
5740
+ "Inactive",
5741
+ "Ready",
5742
+ "DelayedStart",
5743
+ "Run",
5744
+ "Pause",
5745
+ "ActionRequired",
5746
+ "Finished",
5747
+ "Error",
5748
+ "Aborting"
5749
+ ]
5750
+ },
5751
+ {
5752
+ "path": "program",
5753
+ "valueType": "string"
5754
+ },
5755
+ {
5756
+ "path": "selectedProgram",
5757
+ "valueType": "string"
5758
+ },
5759
+ {
5760
+ "path": "remainingSeconds",
5761
+ "valueType": "number"
5762
+ },
5763
+ {
5764
+ "path": "delayedStartSeconds",
5765
+ "valueType": "number"
5766
+ },
5767
+ {
5768
+ "path": "progressPercent",
5769
+ "valueType": "number"
5770
+ },
5771
+ {
5772
+ "path": "doorOpen",
5773
+ "valueType": "boolean"
5774
+ },
5775
+ {
5776
+ "path": "doorLocked",
5777
+ "valueType": "boolean"
5778
+ },
5779
+ {
5780
+ "path": "remoteStartAllowed",
5781
+ "valueType": "boolean"
5782
+ },
5783
+ {
5784
+ "path": "remoteControlActive",
5785
+ "valueType": "boolean"
5786
+ },
5787
+ {
5788
+ "path": "localControlActive",
5789
+ "valueType": "boolean"
5790
+ },
5791
+ {
5792
+ "path": "powerOn",
5793
+ "valueType": "boolean"
5794
+ },
5795
+ {
5796
+ "path": "powerState",
5797
+ "valueType": "string"
5798
+ },
5799
+ {
5800
+ "path": "filterCleaningDue",
5801
+ "valueType": "boolean"
5802
+ },
5803
+ {
5804
+ "path": "machineCareDue",
5805
+ "valueType": "boolean"
5806
+ },
5807
+ {
5808
+ "path": "machineCareRemainingRuns",
5809
+ "valueType": "number"
5810
+ },
5811
+ {
5812
+ "path": "halfLoad",
5813
+ "valueType": "boolean"
5814
+ },
5815
+ {
5816
+ "path": "hygienePlus",
5817
+ "valueType": "boolean"
5818
+ },
5819
+ {
5820
+ "path": "extraDry",
5821
+ "valueType": "boolean"
5822
+ },
5823
+ {
5824
+ "path": "intensiveZone",
5825
+ "valueType": "boolean"
5826
+ },
5827
+ {
5828
+ "path": "varioSpeedPlus",
5829
+ "valueType": "boolean"
5830
+ },
5831
+ {
5832
+ "path": "childLock",
5833
+ "valueType": "boolean"
5834
+ },
5835
+ {
5836
+ "path": "errorCode",
5837
+ "valueType": "number"
5838
+ },
5839
+ {
5840
+ "path": "errorLabel",
5841
+ "valueType": "string"
5842
+ }
5843
+ ],
5844
+ "doorbell": [{
5845
+ "path": "lastPressedAt",
5846
+ "valueType": "number"
5847
+ }, {
5848
+ "path": "pressCountSinceStart",
5849
+ "valueType": "number"
5850
+ }],
5851
+ "enum-sensor": [{
5852
+ "path": "value",
5853
+ "valueType": "string"
5854
+ }, {
5855
+ "path": "format",
5856
+ "valueType": "enum",
5857
+ "enumValues": [
5858
+ "date",
5859
+ "time",
5860
+ "datetime"
5861
+ ]
5862
+ }],
5863
+ "event-emitter": [
5864
+ {
5865
+ "path": "lastEvent.deviceId",
5866
+ "valueType": "number"
5867
+ },
5868
+ {
5869
+ "path": "lastEvent.eventType",
5870
+ "valueType": "string"
5871
+ },
5872
+ {
5873
+ "path": "lastEvent.timestamp",
5874
+ "valueType": "number"
5875
+ },
5876
+ {
5877
+ "path": "lastEvent.seq",
5878
+ "valueType": "number"
5879
+ },
5880
+ {
5881
+ "path": "eventCountSinceStart",
5882
+ "valueType": "number"
5883
+ }
5884
+ ],
5885
+ "fan-control": [
5886
+ {
5887
+ "path": "percentage",
5888
+ "valueType": "number"
5889
+ },
5890
+ {
5891
+ "path": "percentageStep",
5892
+ "valueType": "number"
5893
+ },
5894
+ {
5895
+ "path": "preset",
5896
+ "valueType": "string"
5897
+ },
5898
+ {
5899
+ "path": "direction",
5900
+ "valueType": "enum",
5901
+ "enumValues": ["forward", "reverse"]
5902
+ },
5903
+ {
5904
+ "path": "oscillating",
5905
+ "valueType": "boolean"
5906
+ }
5907
+ ],
5908
+ "feature-probe": [
5909
+ {
5910
+ "path": "deviceType",
5911
+ "valueType": "string"
5912
+ },
5913
+ {
5914
+ "path": "model",
5915
+ "valueType": "string"
5916
+ },
5917
+ {
5918
+ "path": "channelCount",
5919
+ "valueType": "number"
5920
+ },
5921
+ {
5922
+ "path": "lastProbedAt",
5923
+ "valueType": "number"
5924
+ }
5925
+ ],
5926
+ "flood": [{
5927
+ "path": "flooded",
5928
+ "valueType": "boolean"
5929
+ }],
5930
+ "gas": [{
5931
+ "path": "detected",
5932
+ "valueType": "boolean"
5933
+ }],
5934
+ "heating-valve": [{
5935
+ "path": "position",
5936
+ "valueType": "number"
5937
+ }],
5938
+ "humidifier": [
5939
+ {
5940
+ "path": "on",
5941
+ "valueType": "boolean"
5942
+ },
5943
+ {
5944
+ "path": "currentHumidity",
5945
+ "valueType": "number"
5946
+ },
5947
+ {
5948
+ "path": "targetHumidity",
5949
+ "valueType": "number"
5950
+ },
5951
+ {
5952
+ "path": "mode",
5953
+ "valueType": "string"
5954
+ },
5955
+ {
5956
+ "path": "action",
5957
+ "valueType": "string"
5958
+ },
5959
+ {
5960
+ "path": "minHumidity",
5961
+ "valueType": "number"
5962
+ },
5963
+ {
5964
+ "path": "maxHumidity",
5965
+ "valueType": "number"
5966
+ }
5967
+ ],
5968
+ "humidity-sensor": [
5969
+ {
5970
+ "path": "percent",
5971
+ "valueType": "number"
5972
+ },
5973
+ {
5974
+ "path": "unit",
5975
+ "valueType": "string"
5976
+ },
5977
+ {
5978
+ "path": "precision",
5979
+ "valueType": "number"
5980
+ }
5981
+ ],
5982
+ "image": [{
5983
+ "path": "url",
5984
+ "valueType": "string"
5985
+ }, {
5986
+ "path": "lastUpdated",
5987
+ "valueType": "number"
5988
+ }],
5989
+ "image-settings": [
5990
+ {
5991
+ "path": "brightness",
5992
+ "valueType": "number"
5993
+ },
5994
+ {
5995
+ "path": "contrast",
5996
+ "valueType": "number"
5997
+ },
5998
+ {
5999
+ "path": "saturation",
6000
+ "valueType": "number"
6001
+ },
6002
+ {
6003
+ "path": "sharpness",
6004
+ "valueType": "number"
6005
+ },
6006
+ {
6007
+ "path": "mirror",
6008
+ "valueType": "boolean"
6009
+ },
6010
+ {
6011
+ "path": "flip",
6012
+ "valueType": "boolean"
6013
+ },
6014
+ {
6015
+ "path": "rotate",
6016
+ "valueType": "enum",
6017
+ "enumValues": [
6018
+ "0",
6019
+ "90",
6020
+ "180",
6021
+ "270"
6022
+ ]
6023
+ },
6024
+ {
6025
+ "path": "whiteBalance",
6026
+ "valueType": "enum",
6027
+ "enumValues": ["auto", "manual"]
6028
+ },
6029
+ {
6030
+ "path": "warmth",
6031
+ "valueType": "number"
6032
+ },
6033
+ {
6034
+ "path": "exposureMode",
6035
+ "valueType": "enum",
6036
+ "enumValues": ["auto", "manual"]
6037
+ },
6038
+ {
6039
+ "path": "backlightMode",
6040
+ "valueType": "enum",
6041
+ "enumValues": [
6042
+ "off",
6043
+ "blc",
6044
+ "wdr",
6045
+ "hlc"
6046
+ ]
6047
+ }
6048
+ ],
6049
+ "intercom": [
6050
+ {
6051
+ "path": "talking",
6052
+ "valueType": "boolean"
6053
+ },
6054
+ {
6055
+ "path": "lastSessionAt",
6056
+ "valueType": "number"
6057
+ },
6058
+ {
6059
+ "path": "ability.sampleRate",
6060
+ "valueType": "number"
6061
+ },
6062
+ {
6063
+ "path": "ability.duplex",
6064
+ "valueType": "enum",
6065
+ "enumValues": ["half", "full"]
6066
+ },
6067
+ {
6068
+ "path": "ability.maxBacklogMs",
6069
+ "valueType": "number"
6070
+ }
6071
+ ],
6072
+ "lawn-mower-control": [
6073
+ {
6074
+ "path": "activity",
6075
+ "valueType": "enum",
6076
+ "enumValues": [
6077
+ "idle",
6078
+ "mowing",
6079
+ "paused",
6080
+ "docked",
6081
+ "error"
6082
+ ]
6083
+ },
6084
+ {
6085
+ "path": "batteryLevel",
6086
+ "valueType": "number"
6087
+ },
6088
+ {
6089
+ "path": "progressPercent",
6090
+ "valueType": "number"
6091
+ },
6092
+ {
6093
+ "path": "currentCode",
6094
+ "valueType": "number"
6095
+ },
6096
+ {
6097
+ "path": "currentCodeLabel",
6098
+ "valueType": "string"
6099
+ },
6100
+ {
6101
+ "path": "severity",
6102
+ "valueType": "enum",
6103
+ "enumValues": [
6104
+ "info",
6105
+ "warning",
6106
+ "error"
6107
+ ]
6108
+ }
6109
+ ],
6110
+ "lock-control": [{
6111
+ "path": "state",
6112
+ "valueType": "enum",
6113
+ "enumValues": [
6114
+ "locked",
6115
+ "unlocked",
6116
+ "locking",
6117
+ "unlocking",
6118
+ "jammed"
6119
+ ]
6120
+ }],
6121
+ "media-player": [
6122
+ {
6123
+ "path": "state",
6124
+ "valueType": "enum",
6125
+ "enumValues": [
6126
+ "off",
6127
+ "on",
6128
+ "idle",
6129
+ "playing",
6130
+ "paused",
6131
+ "buffering",
6132
+ "standby"
6133
+ ]
6134
+ },
6135
+ {
6136
+ "path": "volumeLevel",
6137
+ "valueType": "number"
6138
+ },
6139
+ {
6140
+ "path": "isMuted",
6141
+ "valueType": "boolean"
6142
+ },
6143
+ {
6144
+ "path": "source",
6145
+ "valueType": "string"
6146
+ },
6147
+ {
6148
+ "path": "currentMedia.type",
6149
+ "valueType": "string"
6150
+ },
6151
+ {
6152
+ "path": "currentMedia.title",
6153
+ "valueType": "string"
6154
+ },
6155
+ {
6156
+ "path": "currentMedia.artist",
6157
+ "valueType": "string"
6158
+ },
6159
+ {
6160
+ "path": "currentMedia.album",
6161
+ "valueType": "string"
6162
+ },
6163
+ {
6164
+ "path": "currentMedia.imageUrl",
6165
+ "valueType": "string"
6166
+ },
6167
+ {
6168
+ "path": "positionMs",
6169
+ "valueType": "number"
6170
+ },
6171
+ {
6172
+ "path": "durationMs",
6173
+ "valueType": "number"
6174
+ },
6175
+ {
6176
+ "path": "shuffle",
6177
+ "valueType": "boolean"
6178
+ },
6179
+ {
6180
+ "path": "repeat",
6181
+ "valueType": "enum",
6182
+ "enumValues": [
6183
+ "off",
6184
+ "all",
6185
+ "one"
6186
+ ]
6187
+ }
6188
+ ],
6189
+ "motion": [
6190
+ {
6191
+ "path": "detected",
6192
+ "valueType": "boolean"
6193
+ },
6194
+ {
6195
+ "path": "lastDetectedAt",
6196
+ "valueType": "number"
6197
+ },
6198
+ {
6199
+ "path": "autoClearAfterMs",
6200
+ "valueType": "number"
6201
+ }
6202
+ ],
6203
+ "motion-trigger": [{
6204
+ "path": "enabled",
6205
+ "valueType": "boolean"
6206
+ }],
6207
+ "motion-zones": [{
6208
+ "path": "enabled",
6209
+ "valueType": "boolean"
6210
+ }, {
6211
+ "path": "sensitivity",
6212
+ "valueType": "number"
6213
+ }],
6214
+ "mqtt-broker": [{
6215
+ "path": "brokerCount",
6216
+ "valueType": "number"
6217
+ }, {
6218
+ "path": "embeddedRunning",
6219
+ "valueType": "boolean"
6220
+ }],
6221
+ "native-object-detection": [{
6222
+ "path": "enabled",
6223
+ "valueType": "boolean"
6224
+ }],
6225
+ "navigation": [
6226
+ {
6227
+ "path": "mode",
6228
+ "valueType": "enum",
6229
+ "enumValues": [
6230
+ "idle",
6231
+ "cleaning",
6232
+ "spot",
6233
+ "following",
6234
+ "goto",
6235
+ "returning",
6236
+ "paused",
6237
+ "unknown"
6238
+ ]
6239
+ },
6240
+ {
6241
+ "path": "following",
6242
+ "valueType": "boolean"
6243
+ },
6244
+ {
6245
+ "path": "flash",
6246
+ "valueType": "boolean"
6247
+ },
6248
+ {
6249
+ "path": "lightMode",
6250
+ "valueType": "enum",
6251
+ "enumValues": ["auto", "manual"]
6252
+ },
6253
+ {
6254
+ "path": "lightLevel",
6255
+ "valueType": "number"
6256
+ }
6257
+ ],
6258
+ "network-link": [
6259
+ {
6260
+ "path": "type",
6261
+ "valueType": "enum",
6262
+ "enumValues": [
6263
+ "wifi",
6264
+ "ethernet",
6265
+ "cellular",
6266
+ "unknown"
6267
+ ]
6268
+ },
6269
+ {
6270
+ "path": "signalPercent",
6271
+ "valueType": "number"
6272
+ },
6273
+ {
6274
+ "path": "rssiDbm",
6275
+ "valueType": "number"
6276
+ },
6277
+ {
6278
+ "path": "ssid",
6279
+ "valueType": "string"
6280
+ },
6281
+ {
6282
+ "path": "lastUpdated",
6283
+ "valueType": "number"
6284
+ }
6285
+ ],
6286
+ "notifier": [
6287
+ {
6288
+ "path": "lastSentAt",
6289
+ "valueType": "number"
6290
+ },
6291
+ {
6292
+ "path": "lastError",
6293
+ "valueType": "string"
6294
+ },
6295
+ {
6296
+ "path": "queueDepth",
6297
+ "valueType": "number"
6298
+ },
6299
+ {
6300
+ "path": "supports.image",
6301
+ "valueType": "boolean"
6302
+ },
6303
+ {
6304
+ "path": "supports.priority",
6305
+ "valueType": "boolean"
6306
+ },
6307
+ {
6308
+ "path": "supports.data",
6309
+ "valueType": "boolean"
6310
+ },
6311
+ {
6312
+ "path": "supports.actions",
6313
+ "valueType": "boolean"
6314
+ },
6315
+ {
6316
+ "path": "supports.recipients",
6317
+ "valueType": "boolean"
6318
+ }
6319
+ ],
6320
+ "numeric-sensor": [
6321
+ {
6322
+ "path": "value",
6323
+ "valueType": "number"
6324
+ },
6325
+ {
6326
+ "path": "unit",
6327
+ "valueType": "string"
6328
+ },
6329
+ {
6330
+ "path": "precision",
6331
+ "valueType": "number"
6332
+ }
6333
+ ],
6334
+ "pet-feeder": [
6335
+ {
6336
+ "path": "foodLevel",
6337
+ "valueType": "number"
6338
+ },
6339
+ {
6340
+ "path": "food1",
6341
+ "valueType": "number"
6342
+ },
6343
+ {
6344
+ "path": "food2",
6345
+ "valueType": "number"
6346
+ },
6347
+ {
6348
+ "path": "lowFood",
6349
+ "valueType": "boolean"
6350
+ },
6351
+ {
6352
+ "path": "batteryPower",
6353
+ "valueType": "number"
6354
+ },
6355
+ {
6356
+ "path": "desiccantLeftDays",
6357
+ "valueType": "number"
6358
+ },
6359
+ {
6360
+ "path": "feeding",
6361
+ "valueType": "boolean"
6362
+ },
6363
+ {
6364
+ "path": "status",
6365
+ "valueType": "enum",
6366
+ "enumValues": [
6367
+ "normal",
6368
+ "offline",
6369
+ "on_batteries"
6370
+ ]
6371
+ },
6372
+ {
6373
+ "path": "error",
6374
+ "valueType": "string"
6375
+ },
6376
+ {
6377
+ "path": "errorCode",
6378
+ "valueType": "number"
6379
+ },
6380
+ {
6381
+ "path": "isDualHopper",
6382
+ "valueType": "boolean"
6383
+ },
6384
+ {
6385
+ "path": "childLock",
6386
+ "valueType": "boolean"
6387
+ },
6388
+ {
6389
+ "path": "indicatorLight",
6390
+ "valueType": "boolean"
6391
+ },
6392
+ {
6393
+ "path": "feedSound",
6394
+ "valueType": "boolean"
6395
+ },
6396
+ {
6397
+ "path": "volume",
6398
+ "valueType": "number"
6399
+ }
6400
+ ],
6401
+ "power-meter": [
6402
+ {
6403
+ "path": "watts",
6404
+ "valueType": "number"
6405
+ },
6406
+ {
6407
+ "path": "kwhTotal",
6408
+ "valueType": "number"
6409
+ },
6410
+ {
6411
+ "path": "volts",
6412
+ "valueType": "number"
6413
+ },
6414
+ {
6415
+ "path": "amps",
6416
+ "valueType": "number"
6417
+ },
6418
+ {
6419
+ "path": "va",
6420
+ "valueType": "number"
6421
+ },
6422
+ {
6423
+ "path": "powerFactor",
6424
+ "valueType": "number"
6425
+ },
6426
+ {
6427
+ "path": "unit",
6428
+ "valueType": "string"
6429
+ },
6430
+ {
6431
+ "path": "precision",
6432
+ "valueType": "number"
6433
+ }
6434
+ ],
6435
+ "presence": [
6436
+ {
6437
+ "path": "state",
6438
+ "valueType": "string"
6439
+ },
6440
+ {
6441
+ "path": "location",
6442
+ "valueType": "string"
6443
+ },
6444
+ {
6445
+ "path": "gps.latitude",
6446
+ "valueType": "number"
6447
+ },
6448
+ {
6449
+ "path": "gps.longitude",
6450
+ "valueType": "number"
6451
+ },
6452
+ {
6453
+ "path": "gps.accuracyMeters",
6454
+ "valueType": "number"
6455
+ },
6456
+ {
6457
+ "path": "batteryPercent",
6458
+ "valueType": "number"
6459
+ }
6460
+ ],
6461
+ "pressure-sensor": [
6462
+ {
6463
+ "path": "hpa",
6464
+ "valueType": "number"
6465
+ },
6466
+ {
6467
+ "path": "unit",
6468
+ "valueType": "string"
6469
+ },
6470
+ {
6471
+ "path": "precision",
6472
+ "valueType": "number"
6473
+ }
6474
+ ],
6475
+ "privacy-mask": [{
6476
+ "path": "enabled",
6477
+ "valueType": "boolean"
6478
+ }, {
6479
+ "path": "audioEnabled",
6480
+ "valueType": "boolean"
6481
+ }],
6482
+ "ptz": [
6483
+ {
6484
+ "path": "pan",
6485
+ "valueType": "number"
6486
+ },
6487
+ {
6488
+ "path": "tilt",
6489
+ "valueType": "number"
6490
+ },
6491
+ {
6492
+ "path": "zoom",
6493
+ "valueType": "number"
6494
+ },
6495
+ {
6496
+ "path": "autofocus",
6497
+ "valueType": "boolean"
6498
+ }
6499
+ ],
6500
+ "ptz-autotrack": [
6501
+ {
6502
+ "path": "enabled",
6503
+ "valueType": "boolean"
6504
+ },
6505
+ {
6506
+ "path": "currentSettings.targetType",
6507
+ "valueType": "string"
6508
+ },
6509
+ {
6510
+ "path": "currentSettings.stopDelaySeconds",
6511
+ "valueType": "number"
6512
+ },
6513
+ {
6514
+ "path": "currentSettings.disappearDelaySeconds",
6515
+ "valueType": "number"
6516
+ }
6517
+ ],
6518
+ "recording-archive": [
6519
+ {
6520
+ "path": "deviceId",
6521
+ "valueType": "number"
6522
+ },
6523
+ {
6524
+ "path": "enabled",
6525
+ "valueType": "boolean"
6526
+ },
6527
+ {
6528
+ "path": "activeMode",
6529
+ "valueType": "enum",
6530
+ "enumValues": [
6531
+ "off",
6532
+ "events",
6533
+ "continuous",
6534
+ "on-device-decision"
6535
+ ]
6536
+ },
6537
+ {
6538
+ "path": "nodeId",
6539
+ "valueType": "string"
6540
+ },
6541
+ {
6542
+ "path": "storageBytes",
6543
+ "valueType": "number"
6544
+ }
6545
+ ],
6546
+ "recording-onboard": [
6547
+ {
6548
+ "path": "primaryTrackId",
6549
+ "valueType": "string"
6550
+ },
6551
+ {
6552
+ "path": "enabled",
6553
+ "valueType": "boolean"
6554
+ },
6555
+ {
6556
+ "path": "overwriteWhenFull",
6557
+ "valueType": "boolean"
6558
+ },
6559
+ {
6560
+ "path": "preRecordSec",
6561
+ "valueType": "number"
6562
+ },
6563
+ {
6564
+ "path": "postRecordSec",
6565
+ "valueType": "number"
6566
+ },
6567
+ {
6568
+ "path": "segmentMinutes",
6569
+ "valueType": "number"
6570
+ },
6571
+ {
6572
+ "path": "unreadableWindows",
6573
+ "valueType": "number"
6574
+ },
6575
+ {
6576
+ "path": "recordingToNowhere",
6577
+ "valueType": "boolean"
6578
+ }
6579
+ ],
6580
+ "recording-signal": [{
6581
+ "path": "active",
6582
+ "valueType": "boolean"
6583
+ }, {
6584
+ "path": "reason",
6585
+ "valueType": "string"
6586
+ }],
6587
+ "running-state": [
6588
+ {
6589
+ "path": "running",
6590
+ "valueType": "boolean"
6591
+ },
6592
+ {
6593
+ "path": "since",
6594
+ "valueType": "number"
6595
+ },
6596
+ {
6597
+ "path": "source",
6598
+ "valueType": "enum",
6599
+ "enumValues": ["native", "assigned"]
6600
+ },
6601
+ {
6602
+ "path": "phase",
6603
+ "valueType": "string"
6604
+ }
6605
+ ],
6606
+ "script-runner": [
6607
+ {
6608
+ "path": "isRunning",
6609
+ "valueType": "boolean"
6610
+ },
6611
+ {
6612
+ "path": "lastRunAt",
6613
+ "valueType": "number"
6614
+ },
6615
+ {
6616
+ "path": "lastRunSuccess",
6617
+ "valueType": "boolean"
6618
+ },
6619
+ {
6620
+ "path": "lastError",
6621
+ "valueType": "string"
6622
+ }
6623
+ ],
6624
+ "smoke": [{
6625
+ "path": "detected",
6626
+ "valueType": "boolean"
6627
+ }],
6628
+ "snapshot": [
6629
+ {
6630
+ "path": "lastCapturedAt",
6631
+ "valueType": "number"
6632
+ },
6633
+ {
6634
+ "path": "cacheAgeMs",
6635
+ "valueType": "number"
6636
+ },
6637
+ {
6638
+ "path": "lastBytes",
6639
+ "valueType": "number"
6640
+ },
6641
+ {
6642
+ "path": "lastStreamId",
6643
+ "valueType": "string"
6644
+ }
6645
+ ],
6646
+ "stream-params": [
6647
+ {
6648
+ "path": "main.width",
6649
+ "valueType": "number"
6650
+ },
6651
+ {
6652
+ "path": "main.height",
6653
+ "valueType": "number"
6654
+ },
6655
+ {
6656
+ "path": "main.codec",
6657
+ "valueType": "enum",
6658
+ "enumValues": ["h264", "h265"]
6659
+ },
6660
+ {
6661
+ "path": "main.framerate",
6662
+ "valueType": "number"
6663
+ },
6664
+ {
6665
+ "path": "main.bitrate",
6666
+ "valueType": "number"
6667
+ },
6668
+ {
6669
+ "path": "main.bitrateMode",
6670
+ "valueType": "enum",
6671
+ "enumValues": ["vbr", "cbr"]
6672
+ },
6673
+ {
6674
+ "path": "main.encoderProfile",
6675
+ "valueType": "enum",
6676
+ "enumValues": [
6677
+ "high",
6678
+ "main",
6679
+ "baseline"
6680
+ ]
6681
+ },
6682
+ {
6683
+ "path": "main.gop",
6684
+ "valueType": "number"
6685
+ },
6686
+ {
6687
+ "path": "main.audio",
6688
+ "valueType": "boolean"
6689
+ },
6690
+ {
6691
+ "path": "sub.width",
6692
+ "valueType": "number"
6693
+ },
6694
+ {
6695
+ "path": "sub.height",
6696
+ "valueType": "number"
6697
+ },
6698
+ {
6699
+ "path": "sub.codec",
6700
+ "valueType": "enum",
6701
+ "enumValues": ["h264", "h265"]
6702
+ },
6703
+ {
6704
+ "path": "sub.framerate",
6705
+ "valueType": "number"
6706
+ },
6707
+ {
6708
+ "path": "sub.bitrate",
6709
+ "valueType": "number"
6710
+ },
6711
+ {
6712
+ "path": "sub.bitrateMode",
6713
+ "valueType": "enum",
6714
+ "enumValues": ["vbr", "cbr"]
6715
+ },
6716
+ {
6717
+ "path": "sub.encoderProfile",
6718
+ "valueType": "enum",
6719
+ "enumValues": [
6720
+ "high",
6721
+ "main",
6722
+ "baseline"
6723
+ ]
6724
+ },
6725
+ {
6726
+ "path": "sub.gop",
6727
+ "valueType": "number"
6728
+ },
6729
+ {
6730
+ "path": "sub.audio",
6731
+ "valueType": "boolean"
6732
+ },
6733
+ {
6734
+ "path": "ext.width",
6735
+ "valueType": "number"
6736
+ },
6737
+ {
6738
+ "path": "ext.height",
6739
+ "valueType": "number"
6740
+ },
6741
+ {
6742
+ "path": "ext.codec",
6743
+ "valueType": "enum",
6744
+ "enumValues": ["h264", "h265"]
6745
+ },
6746
+ {
6747
+ "path": "ext.framerate",
6748
+ "valueType": "number"
6749
+ },
6750
+ {
6751
+ "path": "ext.bitrate",
6752
+ "valueType": "number"
6753
+ },
6754
+ {
6755
+ "path": "ext.bitrateMode",
6756
+ "valueType": "enum",
6757
+ "enumValues": ["vbr", "cbr"]
6758
+ },
6759
+ {
6760
+ "path": "ext.encoderProfile",
6761
+ "valueType": "enum",
6762
+ "enumValues": [
6763
+ "high",
6764
+ "main",
6765
+ "baseline"
6766
+ ]
6767
+ },
6768
+ {
6769
+ "path": "ext.gop",
6770
+ "valueType": "number"
6771
+ },
6772
+ {
6773
+ "path": "ext.audio",
6774
+ "valueType": "boolean"
6775
+ }
6776
+ ],
6777
+ "switch": [{
6778
+ "path": "on",
6779
+ "valueType": "boolean"
6780
+ }],
6781
+ "tamper": [{
6782
+ "path": "tampered",
6783
+ "valueType": "boolean"
6784
+ }],
6785
+ "temperature-sensor": [
6786
+ {
6787
+ "path": "celsius",
6788
+ "valueType": "number"
6789
+ },
6790
+ {
6791
+ "path": "unit",
6792
+ "valueType": "string"
6793
+ },
6794
+ {
6795
+ "path": "precision",
6796
+ "valueType": "number"
6797
+ }
6798
+ ],
6799
+ "update": [
6800
+ {
6801
+ "path": "currentVersion",
6802
+ "valueType": "string"
6803
+ },
6804
+ {
6805
+ "path": "availableVersion",
6806
+ "valueType": "string"
6807
+ },
6808
+ {
6809
+ "path": "updatable",
6810
+ "valueType": "boolean"
6811
+ },
6812
+ {
6813
+ "path": "state",
6814
+ "valueType": "string"
6815
+ },
6816
+ {
6817
+ "path": "inProgress",
6818
+ "valueType": "boolean"
6819
+ }
6820
+ ],
6821
+ "vacuum-control": [
6822
+ {
6823
+ "path": "state",
6824
+ "valueType": "enum",
6825
+ "enumValues": [
6826
+ "idle",
6827
+ "cleaning",
6828
+ "paused",
6829
+ "returning",
6830
+ "docked",
6831
+ "drying",
6832
+ "error"
6833
+ ]
6834
+ },
6835
+ {
6836
+ "path": "batteryLevel",
6837
+ "valueType": "number"
6838
+ },
6839
+ {
6840
+ "path": "fanSpeed",
6841
+ "valueType": "string"
6842
+ },
6843
+ {
6844
+ "path": "progressPercent",
6845
+ "valueType": "number"
6846
+ },
6847
+ {
6848
+ "path": "errorCode",
6849
+ "valueType": "number"
6850
+ },
6851
+ {
6852
+ "path": "errorLabel",
6853
+ "valueType": "string"
6854
+ }
6855
+ ],
6856
+ "valve": [{
6857
+ "path": "state",
6858
+ "valueType": "enum",
6859
+ "enumValues": [
6860
+ "open",
6861
+ "opening",
6862
+ "closing",
6863
+ "closed",
6864
+ "stopped"
6865
+ ]
6866
+ }, {
6867
+ "path": "position",
6868
+ "valueType": "number"
6869
+ }],
6870
+ "vibration": [{
6871
+ "path": "detected",
6872
+ "valueType": "boolean"
6873
+ }],
6874
+ "water-heater": [
6875
+ {
6876
+ "path": "currentTemp",
6877
+ "valueType": "number"
6878
+ },
6879
+ {
6880
+ "path": "targetTemp",
6881
+ "valueType": "number"
6882
+ },
6883
+ {
6884
+ "path": "operationMode",
6885
+ "valueType": "string"
6886
+ },
6887
+ {
6888
+ "path": "away",
6889
+ "valueType": "boolean"
6890
+ },
6891
+ {
6892
+ "path": "minTemp",
6893
+ "valueType": "number"
6894
+ },
6895
+ {
6896
+ "path": "maxTemp",
6897
+ "valueType": "number"
6898
+ }
6899
+ ],
6900
+ "weather": [
6901
+ {
6902
+ "path": "condition",
6903
+ "valueType": "string"
6904
+ },
6905
+ {
6906
+ "path": "temperature",
6907
+ "valueType": "number"
6908
+ },
6909
+ {
6910
+ "path": "temperatureUnit",
6911
+ "valueType": "string"
6912
+ },
6913
+ {
6914
+ "path": "humidity",
6915
+ "valueType": "number"
6916
+ },
6917
+ {
6918
+ "path": "pressure",
6919
+ "valueType": "number"
6920
+ },
6921
+ {
6922
+ "path": "pressureUnit",
6923
+ "valueType": "string"
6924
+ },
6925
+ {
6926
+ "path": "windSpeed",
6927
+ "valueType": "number"
6928
+ },
6929
+ {
6930
+ "path": "windSpeedUnit",
6931
+ "valueType": "string"
6932
+ },
6933
+ {
6934
+ "path": "windBearing",
6935
+ "valueType": "number"
6936
+ }
6937
+ ],
6938
+ "zone-analytics": [
6939
+ {
6940
+ "path": "ts",
6941
+ "valueType": "number"
6942
+ },
6943
+ {
6944
+ "path": "frameWidth",
6945
+ "valueType": "number"
6946
+ },
6947
+ {
6948
+ "path": "frameHeight",
6949
+ "valueType": "number"
6950
+ },
6951
+ {
6952
+ "path": "frame.totalObjects",
6953
+ "valueType": "number"
6954
+ },
6955
+ {
6956
+ "path": "frame.standingObjects",
6957
+ "valueType": "number"
6958
+ },
6959
+ {
6960
+ "path": "frame.transientObjects",
6961
+ "valueType": "number"
6962
+ },
6963
+ {
6964
+ "path": "unzoned.totalObjects",
6965
+ "valueType": "number"
6966
+ },
6967
+ {
6968
+ "path": "unzoned.standingObjects",
6969
+ "valueType": "number"
6970
+ },
6971
+ {
6972
+ "path": "unzoned.transientObjects",
6973
+ "valueType": "number"
6974
+ }
6975
+ ]
6976
+ });
5003
6977
  /**
5004
6978
  * Runtime defaults -- used by ConfigManager.get() for backward compatibility
5005
6979
  * until Plan B wires all runtime settings to the system_settings SQL table.
@@ -5484,7 +7458,7 @@ function errMsg(err) {
5484
7458
  return String(err);
5485
7459
  }
5486
7460
  //#endregion
5487
- //#region ../types/dist/composition-BJ8iAZb3.mjs
7461
+ //#region ../types/dist/composition-kEl9mevu.mjs
5488
7462
  var AUDIO_ENCODER_BY_CODEC = {
5489
7463
  opus: "libopus",
5490
7464
  aac: "aac",
@@ -5745,7 +7719,7 @@ function buildStdoutOrRtspSinkArgs(sink) {
5745
7719
  * frame, loses the race, and skips to the following one: **every fragment comes
5746
7720
  * out at twice the requested length.**
5747
7721
  *
5748
- * Measured on the live fleet 2026-08-07, camera 615, `-c:v copy` (D84):
7722
+ * Measured on the live fleet 2026-08-07, camera 101, `-c:v copy` (D84):
5749
7723
  *
5750
7724
  * | slot | GOP | `-min_frag_duration` | median gap |
5751
7725
  * | --- | --- | --- | --- |
@@ -9888,7 +11862,7 @@ var LogChannelDescriptorSchema = z.object({
9888
11862
  * `true` is a PROMISE with two halves, and both must hold: the gate is
9889
11863
  * consulted with the numeric device id, AND every line the channel admits
9890
11864
  * carries `tags: { deviceId }` with that same numeric id. The second half is
9891
- * what makes `| json | deviceId="617"` work in Loki — `loki-payload.ts`
11865
+ * what makes `| json | deviceId="102"` work in Loki — `loki-payload.ts`
9892
11866
  * keeps `deviceId` out of the stream labels for cardinality, so the tag in
9893
11867
  * the body is the only way to filter.
9894
11868
  *
@@ -10213,7 +12187,7 @@ var ModelVariantGroupSchema = z.object({
10213
12187
  precision: z.enum(["fp32", "int8"]).optional(),
10214
12188
  /**
10215
12189
  * Training / latency-variant axis. Omit ⇒ the standard build. `test` marks
10216
- * an alternate training of the same family (Scrypted `relu_test`); chip
12190
+ * an alternate training of the same family (plugin catalog `relu_test`); chip
10217
12191
  * label is "Test".
10218
12192
  */
10219
12193
  optimization: z.enum(["standard", "test"]).optional(),
@@ -10466,8 +12440,8 @@ var ModelCatalogEntrySchema = z.object({
10466
12440
  provider: ModelProviderIdSchema.optional(),
10467
12441
  /**
10468
12442
  * Per-MODEL class map override. Absent ⇒ the step's `StepDefinition.classMap`
10469
- * applies (Frigate / COCO public catalog). Set on a custom model whose raw
10470
- * labels already ARE the CamStack macros (Scrypted identity map).
12443
+ * applies (plus catalog / COCO public catalog). Set on a custom model whose raw
12444
+ * labels already ARE the CamStack macros (plugin catalog identity map).
10471
12445
  */
10472
12446
  classMap: DetectionCatalogClassMapSchema.optional(),
10473
12447
  /**
@@ -14413,7 +16387,7 @@ var streamBrokerCapability = {
14413
16387
  * `1` is real time and is the ONLY value that allows the copy branch —
14414
16388
  * anything else forces `libx264` over the window. That was priced
14415
16389
  * before it was chosen: a per-event burst measured at 0.23 s and 254 KB
14416
- * on a real 615 720p cut, against 922 KB for the copy it replaces. A
16390
+ * on a real 101 720p cut, against 922 KB for the copy it replaces. A
14417
16391
  * re-encode is capped at 720p (`EVENT_CLIP_ENCODE_MAX_WIDTH`), because
14418
16392
  * once the decode is forced the width stops being free.
14419
16393
  */
@@ -18143,7 +20117,7 @@ var deviceHistoryCapability = {
18143
20117
  listSeries: method(z.object({ deviceId: z.number().int() }), z.array(SeriesInfoSchema).readonly()),
18144
20118
  /**
18145
20119
  * A NODE's series. The subject is `forNodeId`, never `nodeId`: a top-level
18146
- * `nodeId` is the cap ROUTING key, and `nodeId: 'little-unraid'` sent the
20120
+ * `nodeId` is the cap ROUTING key, and `nodeId: 'agent-a'` sent the
18147
20121
  * read to that agent, which hosts no device-history.
18148
20122
  */
18149
20123
  listNodeSeries: method(z.object({ forNodeId: z.string().min(1) }), z.array(SeriesInfoSchema).readonly(), { auth: "admin" }),
@@ -39409,7 +41383,7 @@ var PRIMARY_CATEGORIES = new Set(ENTRIES.map((e) => e.primaryCategory));
39409
41383
  * `locationKey` is ALWAYS {@link locationIconKey} of the label — never the
39410
41384
  * operator's casing. The registry matches labels trimmed + case-insensitively
39411
41385
  * everywhere (`addLocation`, `removeLocation`, `renameLocation`), and a
39412
- * case-only rename (`cucina` → `Cucina`) is a real edit this repo supports; a
41386
+ * case-only rename (`kitchen` → `Kitchen`) is a real edit this repo supports; a
39413
41387
  * map keyed on the displayed casing would orphan its entry on exactly that
39414
41388
  * edit. Consumers join by keying their own label through `locationIconKey`.
39415
41389
  */
@@ -39442,7 +41416,7 @@ var LocationDescriptionAssignmentSchema = z.object({
39442
41416
  /**
39443
41417
  * A SITE ZONE — a named part of the property that several locations belong to.
39444
41418
  *
39445
- * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
41419
+ * "Night zone" holds every bedroom; "Zona giorno" the living room and the
39446
41420
  * kitchen. A camera belongs to exactly one location, and a location to at most
39447
41421
  * one zone, so a camera's zone is derived and never stored on the device: the
39448
41422
  * whole point of this entity is that grouping rooms touches no device row.
@@ -39471,7 +41445,7 @@ var LocationDescriptionAssignmentSchema = z.object({
39471
41445
  * the locations inside it.
39472
41446
  *
39473
41447
  * The LABEL is carried alongside the key because the key is lossy on purpose —
39474
- * a surface must show "Zona notte", not "zona notte". Locations are carried
41448
+ * a surface must show "Night zone", not "night zone". Locations are carried
39475
41449
  * here, rather than left to a second call, because every consumer wants both
39476
41450
  * at once and a viewer that asked twice could render a zone whose membership
39477
41451
  * it has not fetched yet.
@@ -40387,7 +42361,7 @@ var deviceManagerCapability = {
40387
42361
  * The room's ICON travels with the rename, including when `from` was
40388
42362
  * never registered — otherwise it orphans on a key no location carries
40389
42363
  * any more. A merge keeps the TARGET's icon when it has one: renaming
40390
- * "Sala" into "Salone" moves devices into Salone, it does not restyle
42364
+ * "Sala" into "Hall" moves devices into Hall, it does not restyle
40391
42365
  * it. */
40392
42366
  renameLocation: method(z.object({
40393
42367
  from: z.string(),
@@ -40459,7 +42433,7 @@ var deviceManagerCapability = {
40459
42433
  auth: "admin"
40460
42434
  }),
40461
42435
  /** Every SITE ZONE — a named part of the property that groups locations
40462
- * ("Zona notte" holds the bedrooms). One call answers the whole picture:
42436
+ * ("Night zone" holds the bedrooms). One call answers the whole picture:
40463
42437
  * key, the label as typed, the icon, and the locations inside.
40464
42438
  *
40465
42439
  * Together, because a surface that asked for membership separately could
@@ -41966,7 +43940,7 @@ function validateCustomAddress(raw) {
41966
43940
  const trimmed = raw.trim();
41967
43941
  if (trimmed === "") return {
41968
43942
  ok: false,
41969
- reason: "Enter an address, e.g. https://192.168.1.50:4443."
43943
+ reason: "Enter an address, e.g. https://192.0.2.20:4443."
41970
43944
  };
41971
43945
  let parsed;
41972
43946
  try {
@@ -42985,8 +44959,8 @@ var LoadContributionSchema = z.object({
42985
44959
  "unattributable"
42986
44960
  ]),
42987
44961
  /**
42988
- * What ONE entry is, in the contributor's own words — `615/high`,
42989
- * `617/native`, `cuda:0 shared pool`. Free text because the unit differs per
44962
+ * What ONE entry is, in the contributor's own words — `101/high`,
44963
+ * `102/native`, `cuda:0 shared pool`. Free text because the unit differs per
42990
44964
  * family and inventing a common one would lose the only information that
42991
44965
  * makes two entries for the same camera distinguishable.
42992
44966
  */
@@ -46244,7 +48218,7 @@ var NcConditionsSchema = z.object({
46244
48218
  * with the list under it is worse than no switch (D62).
46245
48219
  *
46246
48220
  * MEMBERS ARE FACE-GALLERY `Identity.id`s (uuid), not display names. A name is
46247
- * renameable, and a rule authored on "Gianluca" went silently dark the moment
48221
+ * renameable, and a rule authored on "Alice" went silently dark the moment
46248
48222
  * the operator fixed the spelling. The id reaches the record on
46249
48223
  * `LabelAttribution.identityId`; the name is what the editor shows and what
46250
48224
  * `{{label}}` renders.
@@ -46795,7 +48769,7 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
46795
48769
  * A rule scoped to one camera and one zone silently became a rule that
46796
48770
  * matches EVERY event on EVERY camera, and lost its `media` policy
46797
48771
  * (zoneCrop / gif / clip / frame) and its `priority` at the same time. Seen
46798
- * live on 2026-08-12: a rule scoped to device 617 fired on 590 and 615
48772
+ * live on 2026-08-12: a rule scoped to device 102 fired on 104 and 101
46799
48773
  * within a minute of a two-field patch.
46800
48774
  *
46801
48775
  * So every defaulted field is re-declared here WITHOUT its default. The
@@ -48862,7 +50836,7 @@ var LabelAttributionSchema = z.object({
48862
50836
  * `Identity.id` or a plate-gallery `Vehicle.id` (both `randomUUID`).
48863
50837
  *
48864
50838
  * The text alone is a DISPLAY NAME, and a display name is renameable: a
48865
- * notification rule authored on "Gianluca" stopped matching the moment the
50839
+ * notification rule authored on "Alice" stopped matching the moment the
48866
50840
  * operator fixed the spelling in the gallery, and nothing said so. The id is
48867
50841
  * the thing that does not move, so it is what a rule matches on
48868
50842
  * (`NcConditions.identities`) and the text is what a human is shown.
@@ -51634,7 +53608,7 @@ var pipelineAnalyticsCapability = {
51634
53608
  * audio, stopping at the first hit — so on the live hub, where object
51635
53609
  * events own no media of their own and 299 883 of 300 559 media rows are
51636
53610
  * motion-owned, EVERY object event resolved to its motion namesake. A
51637
- * track from 17:34 on camera 615 was served a snapshot from 22:35 eleven
53611
+ * track from 17:34 on camera 101 was served a snapshot from 22:35 eleven
51638
53612
  * days earlier, silently.
51639
53613
  *
51640
53614
  * D476 had already disambiguated the KEY (`motion:` vs `object:`); this is
@@ -52298,7 +54272,7 @@ var pipelineExecutorCapability = {
52298
54272
  /**
52299
54273
  * Root-supplied detections for the tree's ROOT step (D730). Set by
52300
54274
  * `runDetailSubtree` when the camera's root model supplies a crop-kind
52301
- * step (a Frigate+ `license_plate` for `plate-detection`): the step is
54275
+ * step (a plus catalog `license_plate` for `plate-detection`): the step is
52302
54276
  * NOT inferred, these boxes are its output, and its children (the plate
52303
54277
  * reader) run on them through their own crop policy. Boxes are in the
52304
54278
  * PIXELS of the image this call carries. Absent ⇒ the root step runs.
@@ -54041,7 +56015,7 @@ var RunnerCameraConfigSchema = z.object({
54041
56015
  * detection session that asks for history. What shipped was a last-moment
54042
56016
  * discard — `FrameSlot`'s throttle compares wall clocks, and ~4 s of media
54043
56017
  * arriving inside a few hundred ms of wall clock looks to it like one frame's
54044
- * worth. Device 617, 2026-09-08: a re-run of the SAME model over the stored
56018
+ * worth. Device 102, 2026-09-08: a re-run of the SAME model over the stored
54045
56019
  * recording scored the subject `vehicle 0.5669` — above the 0.50 floor —
54046
56020
  * 1.68 s BEFORE the live track was born, on a frame that was in the pre-roll,
54047
56021
  * was decoded, and was freed.
@@ -54247,7 +56221,7 @@ var pipelineRunnerCapability = {
54247
56221
  *
54248
56222
  * The periodic recheck (`occupancyRecheckSec`, 300 s) exists to watch a
54249
56223
  * still scene. It is the wrong instrument for a QUESTION that has just been
54250
- * asked: on device 617 a parked car's departure was observed, a departure
56224
+ * asked: on device 102 a parked car's departure was observed, a departure
54251
56225
  * strike was armed — and then the motion session ended, the strike decayed
54252
56226
  * after its 30 s TTL, and the next periodic look arrived up to five minutes
54253
56227
  * later with nothing left to confirm. Every one of those departures was
@@ -57212,7 +59186,7 @@ var storageProviderCapability = {
57212
59186
  * The signals a device can emit to WAKE its own stream.
57213
59187
  *
57214
59188
  * A camera whose stream is built on demand sleeps until something asks for it,
57215
- * and "something" cannot be a consumer that is merely attached — a Frigate-style
59189
+ * and "something" cannot be a consumer that is merely attached — a external-catalog
57216
59190
  * puller holds a session open for ever, and treating that as demand would keep
57217
59191
  * a battery camera awake for ever, which is the whole thing the battery is for
57218
59192
  * (D173). So the wake has to come from the CAMERA: an event it noticed by
@@ -58076,7 +60050,7 @@ var ClipSchema = z.object({
58076
60050
  * {@link MAX_CLIP_EVENT_IDS}. Empty on footage-only clips.
58077
60051
  *
58078
60052
  * Bounded because it is not a payload the surface pages through: one visit on
58079
- * device 615 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
60053
+ * device 101 carried 2 345 ids, and `eventIds` was 99% of a 153 KB
58080
60054
  * camera-day. Read {@link eventCount} for the true total.
58081
60055
  */
58082
60056
  eventIds: z.array(z.string()).optional(),
@@ -58221,7 +60195,7 @@ var ClipPlaybackSchema = z.object({
58221
60195
  * camera has no recordings", which is the defect this whole line of work is
58222
60196
  * about: a battery camera nobody woke (`sleeping`), a camera that could not be
58223
60197
  * reached at all (`unreachable`, also what a provider that THREW reports), a
58224
- * camera whose SD card is not mounted (`no-storage`, measured on 640 —
60198
+ * camera whose SD card is not mounted (`no-storage`, measured on 106 —
58225
60199
  * `HddInfo mount 0`, honestly nothing to list rather than "no clips"), and a
58226
60200
  * camera whose OWN index disagrees with its OWN calendar (`index-empty`,
58227
60201
  * measured on 618: the calendar marks 3–20 September, days 6–20 list zero
@@ -58531,7 +60505,7 @@ var videoclipsCapability = {
58531
60505
  *
58532
60506
  * It was optional, documented as "absent means the device's BOUND
58533
60507
  * provider, which is CamStack on every camera". No code implemented
58534
- * that. Measured on the live hub 2026-09-20 — device 592, bound to
60508
+ * that. Measured on the live hub 2026-09-20 — device 107, bound to
58535
60509
  * `recorder` AND `provider-reolink` — a bare call with `limit: 3`
58536
60510
  * answered SIX rows, three from each source, merged newest-first:
58537
60511
  * `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
@@ -61104,7 +63078,7 @@ var GridLayoutCellSchema = z.object({
61104
63078
  *
61105
63079
  * A grid's `high` composes its sources' `high` and its `low` their `low`, so a
61106
63080
  * profile is on offer only when EVERY source can serve it. The refusal NAMES
61107
- * the sources, because "this grid has no low" is not a finding — "615 has no
63081
+ * the sources, because "this grid has no low" is not a finding — "101 has no
61108
63082
  * low" is, and it is the one an operator can act on.
61109
63083
  */
61110
63084
  var GridProfileOfferSchema = z.object({
@@ -68498,9 +70472,9 @@ var PtzOptionsSchema = z.object({
68498
70472
  * Reolink preset 0, Hikvision preset '1', Dahua preset 1 -- and on this fleet
68499
70473
  * not one of the three cameras honours its own:
68500
70474
  *
68501
- * 592 Videocamera camera Daniel (reolink) preset 0 holds "stanza"
68502
- * 1438 Videocamera dispensa (hikvision) preset 1 holds "Credenza"
68503
- * 3836 Videocamera studio (amcrest) preset 1 holds "Preset1"
70475
+ * 107 Camera camera Carol (reolink) preset 0 holds "stanza"
70476
+ * 1438 Camera dispensa (hikvision) preset 1 holds "Credenza"
70477
+ * 3836 Camera studio (amcrest) preset 1 holds "Preset1"
68504
70478
  *
68505
70479
  * So `goHome` meant "go wherever the operator happened to save in slot 0 or 1",
68506
70480
  * and two of the three swallowed the failure in a bare `catch`. For autotrack
@@ -69049,7 +71023,7 @@ var RecordingAvailabilitySchema = z.object({
69049
71023
  * would look identical. But the answer used to say nothing about that, so a
69050
71024
  * caller asking "what can I export?" read the single preferred profile as
69051
71025
  * the only one that exists — on this deployment every camera records `high`
69052
- * AND `low`, the low tree holding 14 GB for camera 615 alone, and the export
71026
+ * AND `low`, the low tree holding 14 GB for camera 101 alone, and the export
69053
71027
  * UI could not see it.
69054
71028
  *
69055
71029
  * Cheap: it is the same shallow directory read the profile CHOICE already
@@ -69148,7 +71122,7 @@ var RecordingSourceOptionsSchema = z.object({
69148
71122
  * `sparse` = gaps are the absence of one, and must be drawn as such.
69149
71123
  *
69150
71124
  * Not an onboard-only concession: measured 2026-09-24, OUR bar covers 98.8 %
69151
- * of 592's day and 1.2 % of 1436's. It is a fact about a (source, camera)
71125
+ * of 107's day and 1.2 % of 1436's. It is a fact about a (source, camera)
69152
71126
  * pair, and ours answers it per camera from `deriveRecordingMode`. */
69153
71127
  coverage: z.enum(["continuous", "sparse"]),
69154
71128
  /** Where the playhead may be put.
@@ -69259,7 +71233,7 @@ var recordingCapability = {
69259
71233
  * merely discouraged (D554 amended).
69260
71234
  *
69261
71235
  * It was learned the expensive way on `videoclips.listClips`: measured
69262
- * on the live hub 2026-09-20, device 592 bound to `recorder` AND
71236
+ * on the live hub 2026-09-20, device 107 bound to `recorder` AND
69263
71237
  * `provider-reolink`, a bare call with `limit: 3` answered SIX rows,
69264
71238
  * three from each source, merged — `device-collection-dispatch.ts`
69265
71239
  * leaves an unpinned fan-out un-narrowed, so absence buys the union the
@@ -70083,7 +72057,7 @@ var ExportSpeedSchema = z.number().min(.25).max(32);
70083
72057
  * on a 10 h window holding 29,393 s of footage every range landed late by the
70084
72058
  * gap accumulated before it — up to 6,607 s, well past EOF. Nothing matched,
70085
72059
  * the video was a uniform timelapse, and the log line reported the five ranges
70086
- * that had been ASKED for (2026-08-13, export `57d14363`, camera 615).
72060
+ * that had been ASKED for (2026-08-13, export `57d14363`, camera 101).
70087
72061
  *
70088
72062
  * Relative and not absolute epoch, because an absolute epoch would make every
70089
72063
  * call site responsible for the same subtraction.
@@ -70927,7 +72901,7 @@ getStatus: method(z.object({ deviceId: z.number() }), RecordingSignalStatusSchem
70927
72901
  * which put a "Scenes" tab on one camera's detail page. That is the wrong shape
70928
72902
  * for the thing: a scene is a standing question about the property ("is the bin
70929
72903
  * still out"), and the operator's question is "which of my scenes have tripped",
70930
- * across every camera at once — not "what does camera 617 think". Buried one
72904
+ * across every camera at once — not "what does camera 102 think". Buried one
70931
72905
  * camera deep it also could not be found. The surface is now a top-level admin
70932
72906
  * page (`/scenes`, `pages/Scenes.tsx`) that lists every scene on every camera and
70933
72907
  * picks the camera inside the create flow, the same shape Events and Faces have.
@@ -75092,200 +77066,8 @@ function evaluateCompositionField(input) {
75092
77066
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
75093
77067
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
75094
77068
  String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
75095
- /**
75096
- * Every CapabilityDefinition shipped by `@camstack/types`. The hub
75097
- * iterates this array at boot to declare each cap on the registry
75098
- * before addons (in-process or via the Moleculer bridge) attempt
75099
- * `registerProvider`. Adding a new cap means dropping a `*.cap.ts`
75100
- * file in `packages/types/src/capabilities/` and re-running
75101
- * `npx tsx scripts/generate-capability-router-types.ts` — no manual
75102
- * edit to `main.ts` required.
75103
- */
75104
- var ALL_CAPABILITY_DEFINITIONS = [
75105
- accessoriesCapability,
75106
- addonPagesCapability,
75107
- addonPagesSourceCapability,
75108
- addonRoutesCapability,
75109
- addonSettingsCapability,
75110
- addonWidgetsCapability,
75111
- addonWidgetsSourceCapability,
75112
- addonsCapability,
75113
- adminUiCapability,
75114
- airQualitySensorCapability,
75115
- alarmPanelCapability,
75116
- alertsCapability,
75117
- ambientLightSensorCapability,
75118
- audioAnalysisCapability,
75119
- audioAnalyzerCapability,
75120
- audioCodecCapability,
75121
- audioMetricsCapability,
75122
- authProviderCapability,
75123
- automationControlCapability,
75124
- backupCapability,
75125
- batteryCapability,
75126
- binaryCapability,
75127
- brightnessCapability,
75128
- brokerCapability,
75129
- buttonCapability,
75130
- calendarSourceCapability,
75131
- calendarsCapability,
75132
- cameraCredentialsCapability,
75133
- cameraGridLayoutCapability,
75134
- cameraPipelineConfigCapability,
75135
- cameraStreamsCapability,
75136
- carbonMonoxideCapability,
75137
- climateControlCapability,
75138
- colorCapability,
75139
- composerCapability,
75140
- connectionTestCapability,
75141
- connectivityCapability,
75142
- consumablesCapability,
75143
- contactCapability,
75144
- controlCapability,
75145
- coreBlocksCapability,
75146
- coverCapability,
75147
- customModelRegistryCapability,
75148
- dataStoreProviderCapability,
75149
- databaseSnapshotCapability,
75150
- dayNightCapability,
75151
- decoderCapability,
75152
- detectionPipelineCapability,
75153
- deviceAdminLinkCapability,
75154
- deviceAdoptionCapability,
75155
- deviceCredentialsCapability,
75156
- deviceDiscoveryCapability,
75157
- deviceExportCapability,
75158
- deviceExtensionCapability,
75159
- deviceHistoryCapability,
75160
- deviceManagerCapability,
75161
- deviceOpsCapability,
75162
- deviceProviderCapability,
75163
- deviceRemovalHookCapability,
75164
- deviceStateCapability,
75165
- deviceStatusCapability,
75166
- dishwasherCapability,
75167
- displayPaletteCapability,
75168
- doorbellCapability,
75169
- embeddingEncoderCapability,
75170
- enumSensorCapability,
75171
- eventEmitterCapability,
75172
- faceGalleryCapability,
75173
- failureContributionCapability,
75174
- fanControlCapability,
75175
- featureProbeCapability,
75176
- filesystemBrowseCapability,
75177
- floodCapability,
75178
- gasCapability,
75179
- heatingValveCapability,
75180
- humidifierCapability,
75181
- humiditySensorCapability,
75182
- imageCapability,
75183
- imageSettingsCapability,
75184
- integrationsCapability,
75185
- intercomCapability,
75186
- keychainCapability,
75187
- keychainAdminCapability,
75188
- lawnMowerControlCapability,
75189
- llmCapability,
75190
- llmRuntimeCapability,
75191
- loadContributionCapability,
75192
- localNetworkCapability,
75193
- lockControlCapability,
75194
- logChannelsCapability,
75195
- logDestinationCapability,
75196
- loginMethodCapability,
75197
- mediaPlayerCapability,
75198
- meshNetworkCapability,
75199
- metricsProviderCapability,
75200
- modelConvertCapability,
75201
- modelDistributorCapability,
75202
- motionCapability,
75203
- motionDetectionCapability,
75204
- motionTriggerCapability,
75205
- motionZonesCapability,
75206
- mqttBrokerCapability,
75207
- nativeObjectDetectionCapability,
75208
- navigationCapability,
75209
- networkAccessCapability,
75210
- networkLinkCapability,
75211
- networkQualityCapability,
75212
- nodeCertificatesCapability,
75213
- nodesCapability,
75214
- notificationOutputCapability,
75215
- notificationRulesCapability,
75216
- notifierCapability,
75217
- numericSensorCapability,
75218
- oauthIntegrationCapability,
75219
- oidcConnectionsCapability,
75220
- osdCapability,
75221
- osdManagerCapability,
75222
- petFeederCapability,
75223
- pipelineAnalyticsCapability,
75224
- pipelineExecutorCapability,
75225
- pipelineOrchestratorCapability,
75226
- pipelineRunnerCapability,
75227
- plateGalleryCapability,
75228
- platformProbeCapability,
75229
- powerMeterCapability,
75230
- presenceCapability,
75231
- pressureSensorCapability,
75232
- privacyMaskCapability,
75233
- ptzCapability,
75234
- ptzAutotrackCapability,
75235
- rebootCapability,
75236
- recordEntriesCapability,
75237
- recordingCapability,
75238
- recordingArchiveCapability,
75239
- recordingExportCapability,
75240
- recordingOnboardCapability,
75241
- recordingSignalCapability,
75242
- recordsCapability,
75243
- runningStateCapability,
75244
- sceneMonitorCapability,
75245
- scriptRunnerCapability,
75246
- serverManagementCapability,
75247
- settingsStoreCapability,
75248
- smokeCapability,
75249
- smtpProviderCapability,
75250
- snapshotCapability,
75251
- ssoBridgeCapability,
75252
- storageCapability,
75253
- storageAdminCapability,
75254
- storageEvictableCapability,
75255
- storageMigrationCapability,
75256
- storageOccupancyCapability,
75257
- storageProviderCapability,
75258
- streamBrokerCapability,
75259
- streamCatalogCapability,
75260
- streamParamsCapability,
75261
- streamSignalsCapability,
75262
- switchCapability,
75263
- systemCapability,
75264
- tamperCapability,
75265
- temperatureSensorCapability,
75266
- terminalSessionCapability,
75267
- toastCapability,
75268
- trainingCapability,
75269
- trainingProviderCapability,
75270
- turnProviderCapability,
75271
- updateCapability,
75272
- userManagementCapability,
75273
- userPasskeysCapability,
75274
- vacuumControlCapability,
75275
- valveCapability,
75276
- vectorStoreCapability,
75277
- vibrationCapability,
75278
- videoclipsCapability,
75279
- viewerUiCapability,
75280
- waterHeaterCapability,
75281
- weatherCapability,
75282
- webrtcSessionCapability,
75283
- zoneAnalyticsCapability,
75284
- zoneRulesCapability,
75285
- zonesCapability
75286
- ];
75287
77069
  DeviceRole.BinarySensor, DeviceRole.MotionSensor;
75288
- new Set(ALL_CAPABILITY_DEFINITIONS.map((def) => def.name));
77070
+ new Set(CAP_NAMES);
75289
77071
  function isUnfilledRequiredProblem(problem) {
75290
77072
  return problem.code === "missing-field";
75291
77073
  }
@@ -76307,13 +78089,13 @@ function rank(type) {
76307
78089
  *
76308
78090
  * An exact case-insensitive match was not enough, and the failure was total
76309
78091
  * rather than marginal. An ESPHome shutter arrives as a container named
76310
- * `Tapparella-Cucina` whose children include the COVER, named `Tapparella
76311
- * cucina`, and a device-presence entity carrying the slug verbatim,
76312
- * `tapparella-cucina`. The slug matched the container exactly and the cover
78092
+ * `Tapparella-Kitchen` whose children include the COVER, named `Tapparella
78093
+ * kitchen`, and a device-presence entity carrying the slug verbatim,
78094
+ * `tapparella-kitchen`. The slug matched the container exactly and the cover
76313
78095
  * did not, so the namesake tie-break handed the container to a connectivity
76314
78096
  * indicator — and the viewer's accessory panel, which correctly shows only
76315
78097
  * children with an actuating control, then rendered NOTHING. The operator saw
76316
- * no shutters at all on cucina, studio and both veranda cameras (2026-09-22).
78098
+ * no shutters at all on kitchen, studio and both porch cameras (2026-09-22).
76317
78099
  *
76318
78100
  * `Markise` was the control case that proved the mechanism: there the cover
76319
78101
  * really is called exactly like its container, so it won and appeared.
@@ -90284,6 +92066,198 @@ var CAP_NAMES_WITH_STATUS = [
90284
92066
  "water-heater",
90285
92067
  "weather"
90286
92068
  ];
92069
+ /**
92070
+ * Every CapabilityDefinition shipped by `@camstack/types`. The hub
92071
+ * iterates this array at boot to declare each cap on the registry
92072
+ * before addons (in-process or via the Moleculer bridge) attempt
92073
+ * `registerProvider`. Adding a new cap means dropping a `*.cap.ts`
92074
+ * file in `packages/types/src/capabilities/` and re-running
92075
+ * `npx tsx scripts/generate-capability-router-types.ts` — no manual
92076
+ * edit to `main.ts` required.
92077
+ */
92078
+ var ALL_CAPABILITY_DEFINITIONS = [
92079
+ accessoriesCapability,
92080
+ addonPagesCapability,
92081
+ addonPagesSourceCapability,
92082
+ addonRoutesCapability,
92083
+ addonSettingsCapability,
92084
+ addonWidgetsCapability,
92085
+ addonWidgetsSourceCapability,
92086
+ addonsCapability,
92087
+ adminUiCapability,
92088
+ airQualitySensorCapability,
92089
+ alarmPanelCapability,
92090
+ alertsCapability,
92091
+ ambientLightSensorCapability,
92092
+ audioAnalysisCapability,
92093
+ audioAnalyzerCapability,
92094
+ audioCodecCapability,
92095
+ audioMetricsCapability,
92096
+ authProviderCapability,
92097
+ automationControlCapability,
92098
+ backupCapability,
92099
+ batteryCapability,
92100
+ binaryCapability,
92101
+ brightnessCapability,
92102
+ brokerCapability,
92103
+ buttonCapability,
92104
+ calendarSourceCapability,
92105
+ calendarsCapability,
92106
+ cameraCredentialsCapability,
92107
+ cameraGridLayoutCapability,
92108
+ cameraPipelineConfigCapability,
92109
+ cameraStreamsCapability,
92110
+ carbonMonoxideCapability,
92111
+ climateControlCapability,
92112
+ colorCapability,
92113
+ composerCapability,
92114
+ connectionTestCapability,
92115
+ connectivityCapability,
92116
+ consumablesCapability,
92117
+ contactCapability,
92118
+ controlCapability,
92119
+ coreBlocksCapability,
92120
+ coverCapability,
92121
+ customModelRegistryCapability,
92122
+ dataStoreProviderCapability,
92123
+ databaseSnapshotCapability,
92124
+ dayNightCapability,
92125
+ decoderCapability,
92126
+ detectionPipelineCapability,
92127
+ deviceAdminLinkCapability,
92128
+ deviceAdoptionCapability,
92129
+ deviceCredentialsCapability,
92130
+ deviceDiscoveryCapability,
92131
+ deviceExportCapability,
92132
+ deviceExtensionCapability,
92133
+ deviceHistoryCapability,
92134
+ deviceManagerCapability,
92135
+ deviceOpsCapability,
92136
+ deviceProviderCapability,
92137
+ deviceRemovalHookCapability,
92138
+ deviceStateCapability,
92139
+ deviceStatusCapability,
92140
+ dishwasherCapability,
92141
+ displayPaletteCapability,
92142
+ doorbellCapability,
92143
+ embeddingEncoderCapability,
92144
+ enumSensorCapability,
92145
+ eventEmitterCapability,
92146
+ faceGalleryCapability,
92147
+ failureContributionCapability,
92148
+ fanControlCapability,
92149
+ featureProbeCapability,
92150
+ filesystemBrowseCapability,
92151
+ floodCapability,
92152
+ gasCapability,
92153
+ heatingValveCapability,
92154
+ humidifierCapability,
92155
+ humiditySensorCapability,
92156
+ imageCapability,
92157
+ imageSettingsCapability,
92158
+ integrationsCapability,
92159
+ intercomCapability,
92160
+ keychainCapability,
92161
+ keychainAdminCapability,
92162
+ lawnMowerControlCapability,
92163
+ llmCapability,
92164
+ llmRuntimeCapability,
92165
+ loadContributionCapability,
92166
+ localNetworkCapability,
92167
+ lockControlCapability,
92168
+ logChannelsCapability,
92169
+ logDestinationCapability,
92170
+ loginMethodCapability,
92171
+ mediaPlayerCapability,
92172
+ meshNetworkCapability,
92173
+ metricsProviderCapability,
92174
+ modelConvertCapability,
92175
+ modelDistributorCapability,
92176
+ motionCapability,
92177
+ motionDetectionCapability,
92178
+ motionTriggerCapability,
92179
+ motionZonesCapability,
92180
+ mqttBrokerCapability,
92181
+ nativeObjectDetectionCapability,
92182
+ navigationCapability,
92183
+ networkAccessCapability,
92184
+ networkLinkCapability,
92185
+ networkQualityCapability,
92186
+ nodeCertificatesCapability,
92187
+ nodesCapability,
92188
+ notificationOutputCapability,
92189
+ notificationRulesCapability,
92190
+ notifierCapability,
92191
+ numericSensorCapability,
92192
+ oauthIntegrationCapability,
92193
+ oidcConnectionsCapability,
92194
+ osdCapability,
92195
+ osdManagerCapability,
92196
+ petFeederCapability,
92197
+ pipelineAnalyticsCapability,
92198
+ pipelineExecutorCapability,
92199
+ pipelineOrchestratorCapability,
92200
+ pipelineRunnerCapability,
92201
+ plateGalleryCapability,
92202
+ platformProbeCapability,
92203
+ powerMeterCapability,
92204
+ presenceCapability,
92205
+ pressureSensorCapability,
92206
+ privacyMaskCapability,
92207
+ ptzCapability,
92208
+ ptzAutotrackCapability,
92209
+ rebootCapability,
92210
+ recordEntriesCapability,
92211
+ recordingCapability,
92212
+ recordingArchiveCapability,
92213
+ recordingExportCapability,
92214
+ recordingOnboardCapability,
92215
+ recordingSignalCapability,
92216
+ recordsCapability,
92217
+ runningStateCapability,
92218
+ sceneMonitorCapability,
92219
+ scriptRunnerCapability,
92220
+ serverManagementCapability,
92221
+ settingsStoreCapability,
92222
+ smokeCapability,
92223
+ smtpProviderCapability,
92224
+ snapshotCapability,
92225
+ ssoBridgeCapability,
92226
+ storageCapability,
92227
+ storageAdminCapability,
92228
+ storageEvictableCapability,
92229
+ storageMigrationCapability,
92230
+ storageOccupancyCapability,
92231
+ storageProviderCapability,
92232
+ streamBrokerCapability,
92233
+ streamCatalogCapability,
92234
+ streamParamsCapability,
92235
+ streamSignalsCapability,
92236
+ switchCapability,
92237
+ systemCapability,
92238
+ tamperCapability,
92239
+ temperatureSensorCapability,
92240
+ terminalSessionCapability,
92241
+ toastCapability,
92242
+ trainingCapability,
92243
+ trainingProviderCapability,
92244
+ turnProviderCapability,
92245
+ updateCapability,
92246
+ userManagementCapability,
92247
+ userPasskeysCapability,
92248
+ vacuumControlCapability,
92249
+ valveCapability,
92250
+ vectorStoreCapability,
92251
+ vibrationCapability,
92252
+ videoclipsCapability,
92253
+ viewerUiCapability,
92254
+ waterHeaterCapability,
92255
+ weatherCapability,
92256
+ webrtcSessionCapability,
92257
+ zoneAnalyticsCapability,
92258
+ zoneRulesCapability,
92259
+ zonesCapability
92260
+ ];
90287
92261
  Object.freeze({
90288
92262
  "accessories.getStatus": [{
90289
92263
  name: "deviceId",
@@ -94265,7 +96239,7 @@ var STATE_SUMMARY_SECTION_VARS = [
94265
96239
  {
94266
96240
  name: "summaryStreams",
94267
96241
  label: "Summary: streams offline",
94268
- example: "Ingresso (high) — since 06:40",
96242
+ example: "Front door (high) — since 06:40",
94269
96243
  kinds: ["stream-offline", "stream-online"]
94270
96244
  },
94271
96245
  {
@@ -94283,13 +96257,13 @@ var STATE_SUMMARY_SECTION_VARS = [
94283
96257
  {
94284
96258
  name: "summaryDetection",
94285
96259
  label: "Summary: cameras detecting nothing",
94286
- example: "Ingresso — since 05:10",
96260
+ example: "Front door — since 05:10",
94287
96261
  kinds: ["detection-blind"]
94288
96262
  },
94289
96263
  {
94290
96264
  name: "summaryNodes",
94291
96265
  label: "Summary: nodes",
94292
- example: "little-unraid — offline since 03:00",
96266
+ example: "agent-a — offline since 03:00",
94293
96267
  kinds: [
94294
96268
  "node-offline",
94295
96269
  "node-online",
@@ -95120,7 +97094,7 @@ DEFAULT_NATIVE_LEASE_SETTINGS.admission;
95120
97094
  *
95121
97095
  * So `entry.providerAddonId === this.ctx.id` is silently, permanently false
95122
97096
  * for a builtin — and only for a builtin, which is why it survives a green
95123
- * suite whose fake supplies the bare id. That is exactly how camera 615's
97097
+ * suite whose fake supplies the bare id. That is exactly how camera 101's
95124
97098
  * virtual doorbell (retired since, D671) latched `unbound` for twelve hours on
95125
97099
  * 2026-08-07 while its binding was intact ([D72](../../../../docs/decisions/adr-0072.md)).
95126
97100
  *