@camstack/addon-post-analysis 1.2.647 → 1.2.649

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 (16) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{clip-model-registry-Bi5DcV3d.js → clip-model-registry-BweA9zEK.js} +245 -167
  3. package/dist/{clip-model-registry-Baro8DSl.mjs → clip-model-registry-DLCu17dL.mjs} +240 -168
  4. package/dist/embedding-encoder/index.js +1 -1
  5. package/dist/embedding-encoder/index.mjs +1 -1
  6. package/dist/pipeline-analytics/_stub.js +2 -2
  7. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-M_XNqkOs.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DFq-lnbD.mjs} +2 -2
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-YDf26qsN.mjs +26 -0
  9. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DQTr4r2P.mjs +26 -0
  10. package/dist/pipeline-analytics/{hostInit-DRa7YSGg.mjs → hostInit-Dog0wpFI.mjs} +2 -2
  11. package/dist/pipeline-analytics/index.js +10 -5
  12. package/dist/pipeline-analytics/index.mjs +10 -5
  13. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  14. package/package.json +2 -1
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D5tFxRsi.mjs +0 -26
  16. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DgC84J8L.mjs +0 -26
@@ -5645,7 +5645,7 @@ var ZodIssueCode = {
5645
5645
  var ZodFirstPartyTypeKind;
5646
5646
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5647
5647
  //#endregion
5648
- //#region ../types/dist/sleep-DFaVPxfm.mjs
5648
+ //#region ../types/dist/sleep-Crlmu_tO.mjs
5649
5649
  /**
5650
5650
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5651
5651
  * window to float samples (D455).
@@ -9183,11 +9183,11 @@ var CAP_NAMES = Object.freeze([
9183
9183
  Object.freeze({
9184
9184
  "air-quality-sensor": [
9185
9185
  {
9186
- "path": "co2Ppm",
9186
+ "path": "co2",
9187
9187
  "valueType": "number"
9188
9188
  },
9189
9189
  {
9190
- "path": "vocPpb",
9190
+ "path": "voc",
9191
9191
  "valueType": "number"
9192
9192
  },
9193
9193
  {
@@ -9237,7 +9237,7 @@ Object.freeze({
9237
9237
  }
9238
9238
  ],
9239
9239
  "ambient-light-sensor": [{
9240
- "path": "lux",
9240
+ "path": "illuminance",
9241
9241
  "valueType": "number"
9242
9242
  }],
9243
9243
  "audio-metrics": [
@@ -9298,7 +9298,7 @@ Object.freeze({
9298
9298
  ],
9299
9299
  "battery": [
9300
9300
  {
9301
- "path": "percentage",
9301
+ "path": "level",
9302
9302
  "valueType": "number"
9303
9303
  },
9304
9304
  {
@@ -9320,7 +9320,7 @@ Object.freeze({
9320
9320
  "valueType": "number"
9321
9321
  },
9322
9322
  {
9323
- "path": "volts",
9323
+ "path": "voltage",
9324
9324
  "valueType": "number"
9325
9325
  },
9326
9326
  {
@@ -9341,7 +9341,7 @@ Object.freeze({
9341
9341
  "valueType": "boolean"
9342
9342
  }],
9343
9343
  "brightness": [{
9344
- "path": "percentage",
9344
+ "path": "level",
9345
9345
  "valueType": "number"
9346
9346
  }],
9347
9347
  "broker": [{
@@ -9542,7 +9542,7 @@ Object.freeze({
9542
9542
  "valueType": "number"
9543
9543
  },
9544
9544
  {
9545
- "path": "mireds",
9545
+ "path": "colorTemperature",
9546
9546
  "valueType": "number"
9547
9547
  }
9548
9548
  ],
@@ -9721,15 +9721,15 @@ Object.freeze({
9721
9721
  "valueType": "string"
9722
9722
  },
9723
9723
  {
9724
- "path": "remainingSeconds",
9724
+ "path": "remaining",
9725
9725
  "valueType": "number"
9726
9726
  },
9727
9727
  {
9728
- "path": "delayedStartSeconds",
9728
+ "path": "delayedStart",
9729
9729
  "valueType": "number"
9730
9730
  },
9731
9731
  {
9732
- "path": "progressPercent",
9732
+ "path": "progress",
9733
9733
  "valueType": "number"
9734
9734
  },
9735
9735
  {
@@ -9843,7 +9843,7 @@ Object.freeze({
9843
9843
  ],
9844
9844
  "fan-control": [
9845
9845
  {
9846
- "path": "percentage",
9846
+ "path": "speed",
9847
9847
  "valueType": "number"
9848
9848
  },
9849
9849
  {
@@ -9943,7 +9943,7 @@ Object.freeze({
9943
9943
  }
9944
9944
  ],
9945
9945
  "humidity-sensor": [{
9946
- "path": "percent",
9946
+ "path": "humidity",
9947
9947
  "valueType": "number"
9948
9948
  }],
9949
9949
  "image": [{
@@ -10053,7 +10053,7 @@ Object.freeze({
10053
10053
  "valueType": "number"
10054
10054
  },
10055
10055
  {
10056
- "path": "progressPercent",
10056
+ "path": "progress",
10057
10057
  "valueType": "number"
10058
10058
  },
10059
10059
  {
@@ -10132,11 +10132,11 @@ Object.freeze({
10132
10132
  "valueType": "string"
10133
10133
  },
10134
10134
  {
10135
- "path": "positionMs",
10135
+ "path": "position",
10136
10136
  "valueType": "number"
10137
10137
  },
10138
10138
  {
10139
- "path": "durationMs",
10139
+ "path": "duration",
10140
10140
  "valueType": "number"
10141
10141
  },
10142
10142
  {
@@ -10238,11 +10238,11 @@ Object.freeze({
10238
10238
  ]
10239
10239
  },
10240
10240
  {
10241
- "path": "signalPercent",
10241
+ "path": "signal",
10242
10242
  "valueType": "number"
10243
10243
  },
10244
10244
  {
10245
- "path": "rssiDbm",
10245
+ "path": "rssi",
10246
10246
  "valueType": "number"
10247
10247
  },
10248
10248
  {
@@ -10373,23 +10373,23 @@ Object.freeze({
10373
10373
  ],
10374
10374
  "power-meter": [
10375
10375
  {
10376
- "path": "watts",
10376
+ "path": "power",
10377
10377
  "valueType": "number"
10378
10378
  },
10379
10379
  {
10380
- "path": "kwhTotal",
10380
+ "path": "energy",
10381
10381
  "valueType": "number"
10382
10382
  },
10383
10383
  {
10384
- "path": "volts",
10384
+ "path": "voltage",
10385
10385
  "valueType": "number"
10386
10386
  },
10387
10387
  {
10388
- "path": "amps",
10388
+ "path": "current",
10389
10389
  "valueType": "number"
10390
10390
  },
10391
10391
  {
10392
- "path": "va",
10392
+ "path": "apparentPower",
10393
10393
  "valueType": "number"
10394
10394
  },
10395
10395
  {
@@ -10417,14 +10417,10 @@ Object.freeze({
10417
10417
  {
10418
10418
  "path": "gps.accuracyMeters",
10419
10419
  "valueType": "number"
10420
- },
10421
- {
10422
- "path": "batteryPercent",
10423
- "valueType": "number"
10424
10420
  }
10425
10421
  ],
10426
10422
  "pressure-sensor": [{
10427
- "path": "hpa",
10423
+ "path": "pressure",
10428
10424
  "valueType": "number"
10429
10425
  }],
10430
10426
  "privacy-mask": [{
@@ -10738,7 +10734,7 @@ Object.freeze({
10738
10734
  "valueType": "boolean"
10739
10735
  }],
10740
10736
  "temperature-sensor": [{
10741
- "path": "celsius",
10737
+ "path": "temperature",
10742
10738
  "valueType": "number"
10743
10739
  }],
10744
10740
  "update": [
@@ -10786,7 +10782,7 @@ Object.freeze({
10786
10782
  "valueType": "string"
10787
10783
  },
10788
10784
  {
10789
- "path": "progressPercent",
10785
+ "path": "progress",
10790
10786
  "valueType": "number"
10791
10787
  },
10792
10788
  {
@@ -11416,7 +11412,7 @@ function errMsg(err) {
11416
11412
  return String(err);
11417
11413
  }
11418
11414
  //#endregion
11419
- //#region ../types/dist/composition-Bb8iwHEJ.mjs
11415
+ //#region ../types/dist/composition-DwA0uVW5.mjs
11420
11416
  /**
11421
11417
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
11422
11418
  * canonical form sorts object keys alphabetically at every depth so two
@@ -20117,7 +20113,7 @@ var CompositionEventPlanSchema = object({
20117
20113
  stateField: string(),
20118
20114
  fieldKey: string()
20119
20115
  });
20120
- /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
20116
+ /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
20121
20117
  var CompositionProblemSchema = object({
20122
20118
  code: _enum([
20123
20119
  "reserved-variant",
@@ -20399,12 +20395,13 @@ var CHANGED = {
20399
20395
  expr: "now"
20400
20396
  };
20401
20397
  function numeric(input) {
20398
+ const { alsoFrom, ...base } = input;
20402
20399
  return {
20403
- ...input,
20400
+ ...base,
20404
20401
  family: "numeric",
20405
20402
  deviceType: DeviceType.Sensor,
20406
20403
  memberDeviceType: DeviceType.Sensor,
20407
- memberDeviceTypes: [DeviceType.Sensor],
20404
+ memberDeviceTypes: [DeviceType.Sensor, ...alsoFrom?.deviceTypes ?? []],
20408
20405
  activeWhen: void 0,
20409
20406
  commandCaps: [],
20410
20407
  baseUnit: baseUnitOf(input.quantity),
@@ -20412,9 +20409,10 @@ function numeric(input) {
20412
20409
  accept: [{
20413
20410
  cap: input.outputCap,
20414
20411
  fieldPath: input.outputField
20415
- }]
20412
+ }, ...alsoFrom === void 0 ? [] : [alsoFrom.accept]]
20416
20413
  };
20417
20414
  }
20415
+ var CLIMATE_DEVICES = [DeviceType.Thermostat, DeviceType.Climate];
20418
20416
  function binary(input) {
20419
20417
  return {
20420
20418
  ...input,
@@ -20436,29 +20434,43 @@ var GROUP_TEMPLATES = [
20436
20434
  summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
20437
20435
  role: DeviceRole.TemperatureSensor,
20438
20436
  outputCap: "temperature-sensor",
20439
- outputField: "celsius",
20437
+ outputField: "temperature",
20440
20438
  quantity: "temperature",
20441
20439
  defaultAggregate: "mean",
20442
20440
  empty: "null",
20443
- companions: [NOW$2]
20441
+ companions: [NOW$2],
20442
+ alsoFrom: {
20443
+ deviceTypes: CLIMATE_DEVICES,
20444
+ accept: {
20445
+ cap: "climate-control",
20446
+ fieldPath: "currentTemp"
20447
+ }
20448
+ }
20444
20449
  }),
20445
20450
  numeric({
20446
20451
  id: "humidity",
20447
20452
  summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
20448
20453
  role: DeviceRole.HumiditySensor,
20449
20454
  outputCap: "humidity-sensor",
20450
- outputField: "percent",
20455
+ outputField: "humidity",
20451
20456
  quantity: "humidity",
20452
20457
  defaultAggregate: "mean",
20453
20458
  empty: "null",
20454
- companions: [NOW$2]
20459
+ companions: [NOW$2],
20460
+ alsoFrom: {
20461
+ deviceTypes: CLIMATE_DEVICES,
20462
+ accept: {
20463
+ cap: "climate-control",
20464
+ fieldPath: "currentHumidity"
20465
+ }
20466
+ }
20455
20467
  }),
20456
20468
  numeric({
20457
20469
  id: "pressure",
20458
20470
  summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
20459
20471
  role: DeviceRole.PressureSensor,
20460
20472
  outputCap: "pressure-sensor",
20461
- outputField: "hpa",
20473
+ outputField: "pressure",
20462
20474
  quantity: "pressure",
20463
20475
  defaultAggregate: "mean",
20464
20476
  empty: "null",
@@ -20469,7 +20481,7 @@ var GROUP_TEMPLATES = [
20469
20481
  summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
20470
20482
  role: DeviceRole.AmbientLightSensor,
20471
20483
  outputCap: "ambient-light-sensor",
20472
- outputField: "lux",
20484
+ outputField: "illuminance",
20473
20485
  quantity: "illuminance",
20474
20486
  defaultAggregate: "mean",
20475
20487
  empty: "null",
@@ -20480,7 +20492,7 @@ var GROUP_TEMPLATES = [
20480
20492
  summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
20481
20493
  role: DeviceRole.PowerSensor,
20482
20494
  outputCap: "power-meter",
20483
- outputField: "watts",
20495
+ outputField: "power",
20484
20496
  quantity: "power",
20485
20497
  defaultAggregate: "sum",
20486
20498
  empty: "omit",
@@ -20491,7 +20503,7 @@ var GROUP_TEMPLATES = [
20491
20503
  summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
20492
20504
  role: DeviceRole.EnergySensor,
20493
20505
  outputCap: "power-meter",
20494
- outputField: "kwhTotal",
20506
+ outputField: "energy",
20495
20507
  quantity: "energy",
20496
20508
  defaultAggregate: "sum",
20497
20509
  empty: "omit",
@@ -20502,7 +20514,7 @@ var GROUP_TEMPLATES = [
20502
20514
  summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
20503
20515
  role: DeviceRole.BatterySensor,
20504
20516
  outputCap: "battery",
20505
- outputField: "percentage",
20517
+ outputField: "level",
20506
20518
  quantity: "percentage",
20507
20519
  defaultAggregate: "mean",
20508
20520
  empty: "null",
@@ -46272,6 +46284,43 @@ var NotificationActionSchema = object({
46272
46284
  */
46273
46285
  mode: _enum(["navigate", "background"]).optional()
46274
46286
  });
46287
+ /** A delivery parameter value: what a notifier declared it takes. */
46288
+ var DeliveryParamValueSchema = union([
46289
+ string(),
46290
+ number(),
46291
+ boolean()
46292
+ ]);
46293
+ /**
46294
+ * One extra delivery parameter a notifier KIND declares (D938). A rule that
46295
+ * addresses a target of that kind may set it; a kind that declares nothing is
46296
+ * never handed one. The admin UI derives its control from this descriptor —
46297
+ * no editor knows a service by name.
46298
+ *
46299
+ * Optional fields are `.optional()`, never `.default()` (a Zod default does not
46300
+ * run on the addon cap path).
46301
+ */
46302
+ var DeliveryParamSchema = object({
46303
+ key: string().min(1),
46304
+ label: string(),
46305
+ /** i18n key of the label, resolved by the declaring addon's namespace. */
46306
+ labelKey: string().optional(),
46307
+ type: _enum([
46308
+ "enum",
46309
+ "number",
46310
+ "boolean",
46311
+ "string"
46312
+ ]),
46313
+ /** `enum` only: the closed set of accepted values. */
46314
+ options: array(object({
46315
+ value: string(),
46316
+ label: string()
46317
+ })).optional(),
46318
+ /** `number` only. */
46319
+ min: number().optional(),
46320
+ max: number().optional(),
46321
+ /** What the notifier does when the rule sets nothing; shown as the placeholder. */
46322
+ default: DeliveryParamValueSchema.optional()
46323
+ });
46275
46324
  /**
46276
46325
  * The canonical notification. `body` is the only hard field (Apprise model).
46277
46326
  * `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
@@ -46294,7 +46343,13 @@ var NotificationSchema = object({
46294
46343
  tag: string().optional(),
46295
46344
  deviceId: number().optional(),
46296
46345
  eventId: string().optional(),
46297
- metadata: record(string(), unknown()).optional()
46346
+ metadata: record(string(), unknown()).optional(),
46347
+ /**
46348
+ * Values for the parameters the target's kind DECLARES in
46349
+ * {@link TargetKindSchema} `deliveryParams`. Already validated against the
46350
+ * declaration by the sender; a notifier reads only the keys it declared.
46351
+ */
46352
+ delivery: record(string(), DeliveryParamValueSchema).optional()
46298
46353
  });
46299
46354
  /** One declared native severity/priority level for a kind. */
46300
46355
  var TargetKindLevelSchema = object({
@@ -46400,6 +46455,11 @@ var TargetKindSchema = object({
46400
46455
  */
46401
46456
  destinationKeys: array(string()).optional(),
46402
46457
  supportsDiscovery: boolean(),
46458
+ /**
46459
+ * Extra delivery parameters a rule may set for a target of this kind (D938).
46460
+ * Absent = none; the rule editor then offers nothing.
46461
+ */
46462
+ deliveryParams: array(DeliveryParamSchema).optional(),
46403
46463
  caps: TargetKindCapsSchema
46404
46464
  });
46405
46465
  /**
@@ -60553,7 +60613,9 @@ var ManifestShapeSchema = object({
60553
60613
  icon: string().optional()
60554
60614
  }).optional(),
60555
60615
  protected: boolean().optional(),
60556
- removable: boolean().optional()
60616
+ removable: boolean().optional(),
60617
+ /** Declared Integrations-page block (mirror of `AddonDeclaration.integrationSection`). */
60618
+ integrationSection: _enum(["system", "providers"]).optional()
60557
60619
  });
60558
60620
  var AddonProcessSchema = object({
60559
60621
  pid: number().optional(),
@@ -60927,9 +60989,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
60927
60989
  */
60928
60990
  var AirQualitySensorStatusSchema = object({
60929
60991
  /** Carbon dioxide concentration in ppm. */
60930
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
60992
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
60931
60993
  /** Total volatile organic compounds in ppb. */
60932
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
60994
+ voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
60933
60995
  /** Particulate matter ≤ 2.5 μm in µg/m³. */
60934
60996
  pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
60935
60997
  /** Particulate matter ≤ 10 μm in µg/m³. */
@@ -60962,12 +61024,12 @@ var airQualitySensorCapability = {
60962
61024
  * History (D850): recorded series.
60963
61025
  */
60964
61026
  history: { fields: {
60965
- co2Ppm: {
61027
+ co2: {
60966
61028
  kind: "gauge",
60967
61029
  unit: "ppm",
60968
61030
  deadband: 5
60969
61031
  },
60970
- vocPpb: {
61032
+ voc: {
60971
61033
  kind: "gauge",
60972
61034
  unit: "ppb",
60973
61035
  deadband: 5
@@ -60998,7 +61060,7 @@ var airQualitySensorCapability = {
60998
61060
  */
60999
61061
  var AmbientLightSensorStatusSchema = object({
61000
61062
  /** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
61001
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
61063
+ illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
61002
61064
  precision: 0,
61003
61065
  label: "Illuminance"
61004
61066
  })),
@@ -61027,7 +61089,7 @@ var ambientLightSensorCapability = {
61027
61089
  /**
61028
61090
  * History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
61029
61091
  */
61030
- history: { fields: { lux: {
61092
+ history: { fields: { illuminance: {
61031
61093
  kind: "gauge",
61032
61094
  unit: "lx",
61033
61095
  deadbandPct: 10,
@@ -61340,7 +61402,7 @@ var BatteryStatusSchema = object({
61340
61402
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
61341
61403
  * declines to band a non-finite reading, which is the correct shape.
61342
61404
  */
61343
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
61405
+ level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
61344
61406
  /**
61345
61407
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
61346
61408
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -61350,7 +61412,7 @@ var BatteryStatusSchema = object({
61350
61412
  * `'unknown'` is the absence of an answer: the provider has not read the
61351
61413
  * power fields yet, or the firmware reported neither. Before it existed,
61352
61414
  * two unreadable fields produced `'none'`, and a camera nobody had reached
61353
- * was drawn "on battery alone" — the same D315 defect `percentage` closed
61415
+ * was drawn "on battery alone" — the same D315 defect `level` closed
61354
61416
  * by going nullable. Consumers SKIP it (no charger state published, no
61355
61417
  * glyph, no HomeKit ChargingState) rather than coerce it either way.
61356
61418
  */
@@ -61374,7 +61436,7 @@ var BatteryStatusSchema = object({
61374
61436
  * that only report charge. A second reading on this cap, not a second
61375
61437
  * `numeric-sensor` on the same device.
61376
61438
  */
61377
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
61439
+ voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
61378
61440
  /**
61379
61441
  * Ms epoch of the last time the device PROVED it was reachable — a
61380
61442
  * completed firmware round-trip, an observed wake, or an inbound push
@@ -61408,7 +61470,7 @@ var BatteryStatusSchema = object({
61408
61470
  /**
61409
61471
  * True when the source is a BINARY low-battery indicator (HA
61410
61472
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
61411
- * charge level — `percentage` is then a coarse stand-in (100 = normal,
61473
+ * charge level — `level` is then a coarse stand-in (100 = normal,
61412
61474
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
61413
61475
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
61414
61476
  */
@@ -61428,15 +61490,15 @@ var BATTERY_DEVICE_TYPES = [
61428
61490
  var batteryCustomize = {
61429
61491
  version: 1,
61430
61492
  targets: [{
61431
- id: "percentage",
61493
+ id: "level",
61432
61494
  cardinality: "scalar",
61433
61495
  vocabulary: {
61434
61496
  cap: "battery",
61435
- stateField: "percentage"
61497
+ stateField: "level"
61436
61498
  },
61437
61499
  deviceTypes: BATTERY_DEVICE_TYPES,
61438
61500
  apply: "add",
61439
- path: "percentage",
61501
+ path: "level",
61440
61502
  sources: [{
61441
61503
  kind: "field",
61442
61504
  valueKinds: ["number", "string"],
@@ -61530,7 +61592,7 @@ onStatusChanged: { data: object({
61530
61592
  schema: BatteryStatusSchema,
61531
61593
  kind: "push",
61532
61594
  empty: {
61533
- percentage: null,
61595
+ level: null,
61534
61596
  charging: "unknown",
61535
61597
  sleeping: false,
61536
61598
  lastUpdated: 0
@@ -61557,11 +61619,11 @@ onStatusChanged: { data: object({
61557
61619
  * History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
61558
61620
  */
61559
61621
  history: { fields: {
61560
- percentage: {
61622
+ level: {
61561
61623
  kind: "gauge",
61562
61624
  unit: "%"
61563
61625
  },
61564
- volts: {
61626
+ voltage: {
61565
61627
  kind: "gauge",
61566
61628
  unit: "V"
61567
61629
  }
@@ -61621,14 +61683,14 @@ var binaryCapability = {
61621
61683
  * controls to this single-method surface.
61622
61684
  *
61623
61685
  * The cap is intentionally minimal: a single `setBrightness({deviceId,
61624
- * percentage})` mutation plus the auto-injected `getStatus`. Drivers
61686
+ * level})` mutation plus the auto-injected `getStatus`. Drivers
61625
61687
  * that expose richer controls (color temperature, scenes, schedules)
61626
61688
  * should surface those via the device's `getSettingsUISchema()`
61627
61689
  * instead of bloating this cap.
61628
61690
  */
61629
61691
  var BrightnessStatusSchema = object({
61630
61692
  /** Current level as 0..100 inclusive. Firmware-reported. */
61631
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
61693
+ level: number().min(0).max(100).meta(readingMeta("percentage")),
61632
61694
  /** Ms epoch of the last operator-driven change. Useful for UI freshness. */
61633
61695
  lastChangedAt: number()
61634
61696
  });
@@ -61640,7 +61702,7 @@ var brightnessCapability = {
61640
61702
  deviceTypes: [DeviceType.Light],
61641
61703
  methods: { setBrightness: method(object({
61642
61704
  deviceId: number().int().nonnegative(),
61643
- percentage: number().min(0).max(100)
61705
+ level: number().min(0).max(100)
61644
61706
  }), _void(), {
61645
61707
  kind: "mutation",
61646
61708
  auth: "protected"
@@ -61653,7 +61715,7 @@ var brightnessCapability = {
61653
61715
  */
61654
61716
  onBrightnessChanged: { data: object({
61655
61717
  deviceId: number(),
61656
- percentage: number().min(0).max(100),
61718
+ level: number().min(0).max(100),
61657
61719
  lastChangedAt: number()
61658
61720
  }) } },
61659
61721
  status: {
@@ -61676,7 +61738,7 @@ onBrightnessChanged: { data: object({
61676
61738
  /**
61677
61739
  * History (D850): recorded series. Actuator tier: level keeps every change.
61678
61740
  */
61679
- history: { fields: { percentage: {
61741
+ history: { fields: { level: {
61680
61742
  kind: "gauge",
61681
61743
  unit: "%",
61682
61744
  minIntervalMs: 0
@@ -62300,11 +62362,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
62300
62362
  }),
62301
62363
  object({
62302
62364
  mode: literal("mired"),
62303
- mireds: number().int().min(50).max(1e3)
62365
+ colorTemperature: number().int().min(50).max(1e3)
62304
62366
  })
62305
62367
  ]);
62306
62368
  var ColorStatusSchema = object({
62307
- /** Active color mode — which of `rgb` / `hsv` / `mireds` reflects
62369
+ /** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
62308
62370
  * the bulb's current state. */
62309
62371
  mode: _enum([
62310
62372
  "rgb",
@@ -62316,7 +62378,7 @@ var ColorStatusSchema = object({
62316
62378
  /** Populated when `mode === 'hsv'`. */
62317
62379
  hsv: HsvTripletSchema.optional(),
62318
62380
  /** Populated when `mode === 'mired'`. */
62319
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
62381
+ colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
62320
62382
  /** Ms epoch of the last operator-driven change. */
62321
62383
  lastChangedAt: number()
62322
62384
  });
@@ -62348,7 +62410,7 @@ onColorChanged: { data: object({
62348
62410
  ]),
62349
62411
  rgb: RgbTripletSchema.optional(),
62350
62412
  hsv: HsvTripletSchema.optional(),
62351
- mireds: number().int().optional(),
62413
+ colorTemperature: number().int().optional(),
62352
62414
  lastChangedAt: number()
62353
62415
  }) } },
62354
62416
  status: {
@@ -63261,11 +63323,11 @@ var DishwasherStatusSchema = object({
63261
63323
  /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
63262
63324
  availablePrograms: array(string()),
63263
63325
  /** Seconds remaining on the active cycle, or null when not running / not known. */
63264
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63326
+ remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63265
63327
  /** Seconds the delayed start is set to (time until the cycle starts), or null. */
63266
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63328
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63267
63329
  /** Cycle completion 0..100, or null when not applicable. */
63268
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
63330
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
63269
63331
  /** True when the door is reported open; null when the door state is not known. */
63270
63332
  doorOpen: boolean().nullable(),
63271
63333
  /** True when the door is latched (locked) during a cycle; null when not reported. */
@@ -63484,14 +63546,14 @@ var dishwasherCapability = {
63484
63546
  runtimeState: DishwasherStatusSchema,
63485
63547
  durability: "session",
63486
63548
  history: { fields: {
63487
- progressPercent: {
63549
+ progress: {
63488
63550
  kind: "gauge",
63489
63551
  unit: "%",
63490
63552
  deadband: 2
63491
63553
  },
63492
63554
  state: { kind: "enum" },
63493
63555
  operationState: { kind: "enum" },
63494
- remainingSeconds: {
63556
+ remaining: {
63495
63557
  kind: "gauge",
63496
63558
  unit: "s",
63497
63559
  minIntervalMs: 6e4
@@ -64122,7 +64184,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
64122
64184
  var FanControlStatusSchema = object({
64123
64185
  /** Active speed as 0..100 inclusive. Null when the device has no
64124
64186
  * speed surface (single-speed fan). */
64125
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
64187
+ speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
64126
64188
  /** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
64127
64189
  * a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
64128
64190
  percentageStep: number().positive().optional().meta(readingMeta("percentage")),
@@ -64149,7 +64211,7 @@ var fanControlCapability = {
64149
64211
  methods: {
64150
64212
  setPercentage: method(object({
64151
64213
  deviceId: number().int().nonnegative(),
64152
- percentage: number().min(0).max(100)
64214
+ speed: number().min(0).max(100)
64153
64215
  }), _void(), {
64154
64216
  kind: "mutation",
64155
64217
  auth: "protected"
@@ -64182,7 +64244,7 @@ var fanControlCapability = {
64182
64244
  },
64183
64245
  /**
64184
64246
  * Runtime-state slice — mirrored by the kernel. UI fan speed
64185
- * sliders read `percentage` for live updates.
64247
+ * sliders read `speed` for live updates.
64186
64248
  */
64187
64249
  runtimeState: FanControlStatusSchema,
64188
64250
  /**
@@ -64196,7 +64258,7 @@ var fanControlCapability = {
64196
64258
  * History (D850): recorded series. Actuator tier: speed keeps every change.
64197
64259
  */
64198
64260
  history: { fields: {
64199
- percentage: {
64261
+ speed: {
64200
64262
  kind: "gauge",
64201
64263
  unit: "%",
64202
64264
  minIntervalMs: 0
@@ -64641,7 +64703,7 @@ var humidifierCapability = {
64641
64703
  */
64642
64704
  var HumiditySensorStatusSchema = object({
64643
64705
  /** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
64644
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
64706
+ humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
64645
64707
  precision: 0,
64646
64708
  label: "Humidity"
64647
64709
  })),
@@ -64670,7 +64732,7 @@ var humiditySensorCapability = {
64670
64732
  /**
64671
64733
  * History (D850): recorded series.
64672
64734
  */
64673
- history: { fields: { percent: {
64735
+ history: { fields: { humidity: {
64674
64736
  kind: "gauge",
64675
64737
  unit: "%",
64676
64738
  deadband: .5
@@ -65310,7 +65372,7 @@ var LawnMowerControlStatusSchema = object({
65310
65372
  batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65311
65373
  /** 0..100 mowing-completion percentage of the current task, or null when no
65312
65374
  * task is active / progress is unavailable. */
65313
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65375
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65314
65376
  /** Current device/event code (dynamic — mostly status, sometimes an error),
65315
65377
  * or null when unknown. */
65316
65378
  currentCode: number().nullable().meta(readingMeta("none")),
@@ -65831,7 +65893,7 @@ var lockControlCapability = {
65831
65893
  volatileStateFields: ["lastChangedAt"]
65832
65894
  };
65833
65895
  /**
65834
- * A monotonic total between resets (D944). Energy uses `power-meter.kwhTotal`
65896
+ * A monotonic total between resets (D944). Energy uses `power-meter.energy`
65835
65897
  * so dashboards keep one series; every other instantaneous reading lands here.
65836
65898
  * `value` is the time integral in the source quantity's accumulated base
65837
65899
  * (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
@@ -65925,10 +65987,10 @@ var MediaPlayerStatusSchema = object({
65925
65987
  currentMedia: MediaInfoSchema.nullable(),
65926
65988
  /** Current playback position in ms. Null when not seekable or
65927
65989
  * nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
65928
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65990
+ position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65929
65991
  /** Total duration of the current media in ms. Null when unknown
65930
65992
  * (live stream) or nothing is playing. */
65931
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65993
+ duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65932
65994
  /** Shuffle toggle. Null when no shuffle surface.
65933
65995
  * Pair with `DeviceFeature.MediaPlayerShuffle`. */
65934
65996
  shuffle: boolean().nullable(),
@@ -65967,7 +66029,7 @@ var mediaPlayerCapability = {
65967
66029
  }),
65968
66030
  seek: method(object({
65969
66031
  deviceId: number().int().nonnegative(),
65970
- positionMs: number().int().nonnegative()
66032
+ position: number().int().nonnegative()
65971
66033
  }), _void(), {
65972
66034
  kind: "mutation",
65973
66035
  auth: "protected"
@@ -66039,7 +66101,7 @@ var mediaPlayerCapability = {
66039
66101
  /**
66040
66102
  * History (D850): volume (a level an operator or an automation sets; the
66041
66103
  * default 10 s floor folds a slider drag into its end value) and mute.
66042
- * `positionMs` is not recorded: it moves continuously while playing.
66104
+ * `position` is not recorded: it moves continuously while playing.
66043
66105
  */
66044
66106
  history: { fields: {
66045
66107
  volumeLevel: {
@@ -67026,9 +67088,9 @@ var NetworkLinkStatusSchema = object({
67026
67088
  * one whose reading has not landed must not be drawn at 0 %. Consumers
67027
67089
  * SKIP a null rather than coerce it.
67028
67090
  */
67029
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
67091
+ signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
67030
67092
  /** Raw received signal strength in dBm, when the firmware reports one. */
67031
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
67093
+ rssi: number().optional().meta(readingMeta("signal-level")),
67032
67094
  /** Network name of a wireless link, when the firmware reports it. */
67033
67095
  ssid: string().optional(),
67034
67096
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
@@ -67064,7 +67126,7 @@ onStatusChanged: { data: object({
67064
67126
  kind: "push",
67065
67127
  empty: {
67066
67128
  type: "unknown",
67067
- signalPercent: null,
67129
+ signal: null,
67068
67130
  lastUpdated: 0
67069
67131
  }
67070
67132
  },
@@ -67087,13 +67149,13 @@ onStatusChanged: { data: object({
67087
67149
  * History (D850): recorded series.
67088
67150
  */
67089
67151
  history: { fields: {
67090
- signalPercent: {
67152
+ signal: {
67091
67153
  kind: "gauge",
67092
67154
  unit: "%",
67093
67155
  deadband: 3,
67094
67156
  minIntervalMs: 6e4
67095
67157
  },
67096
- rssiDbm: {
67158
+ rssi: {
67097
67159
  kind: "gauge",
67098
67160
  unit: "dBm",
67099
67161
  deadband: 2,
@@ -68448,16 +68510,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
68448
68510
  * in real-world devices.
68449
68511
  */
68450
68512
  var PowerMeterStatusSchema = object({
68451
- /** Instantaneous power draw in watts. */
68452
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
68513
+ /** Instantaneous power draw (watts). */
68514
+ power: number().optional().meta(readingMeta("power", { label: "Power" })),
68453
68515
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
68454
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
68455
- /** Voltage in volts. */
68456
- volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
68516
+ energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
68517
+ /** Voltage (volts). */
68518
+ voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
68457
68519
  /** Current in amperes. */
68458
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
68520
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
68459
68521
  /** Apparent power in volt-amperes. */
68460
- va: number().optional().meta(readingMeta("apparent-power")),
68522
+ apparentPower: number().optional().meta(readingMeta("apparent-power")),
68461
68523
  /** Power factor (0..1) if reported. */
68462
68524
  powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
68463
68525
  /** Ms epoch when the slice was last updated. */
@@ -68515,14 +68577,14 @@ function powerTarget(id, unit) {
68515
68577
  advancedExpression: true
68516
68578
  };
68517
68579
  }
68518
- /** "Power and energy" extension: watts, energy, voltage and current from other devices (D951). */
68580
+ /** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
68519
68581
  var powerMeterCustomize = {
68520
68582
  version: 1,
68521
68583
  targets: [
68522
- powerTarget("watts", "W"),
68523
- powerTarget("kwhTotal", "kWh"),
68524
- powerTarget("volts", "V"),
68525
- powerTarget("amps", "A")
68584
+ powerTarget("power", "W"),
68585
+ powerTarget("energy", "kWh"),
68586
+ powerTarget("voltage", "V"),
68587
+ powerTarget("current", "A")
68526
68588
  ]
68527
68589
  };
68528
68590
  var powerMeterCapability = {
@@ -68538,41 +68600,41 @@ var powerMeterCapability = {
68538
68600
  },
68539
68601
  runtimeState: PowerMeterStatusSchema,
68540
68602
  /**
68541
- * Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
68603
+ * Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
68542
68604
  *
68543
68605
  * See `RuntimeStateDurability`. Enforced by
68544
68606
  * `scripts/check-runtime-state-durability.ts`.
68545
68607
  */
68546
68608
  durability: "restored",
68547
68609
  /**
68548
- * History (D850): recorded series. Gauges are floored at 30 s; `kwhTotal` is the one monotonic meter (counter).
68610
+ * History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
68549
68611
  */
68550
68612
  history: { fields: {
68551
- watts: {
68613
+ power: {
68552
68614
  kind: "gauge",
68553
68615
  unit: "W",
68554
68616
  deadband: 1,
68555
68617
  minIntervalMs: 3e4
68556
68618
  },
68557
- kwhTotal: {
68619
+ energy: {
68558
68620
  kind: "counter",
68559
68621
  unit: "kWh",
68560
68622
  deadband: .01,
68561
68623
  minIntervalMs: 6e4
68562
68624
  },
68563
- volts: {
68625
+ voltage: {
68564
68626
  kind: "gauge",
68565
68627
  unit: "V",
68566
68628
  deadband: 1,
68567
68629
  minIntervalMs: 3e4
68568
68630
  },
68569
- amps: {
68631
+ current: {
68570
68632
  kind: "gauge",
68571
68633
  unit: "A",
68572
68634
  deadband: .05,
68573
68635
  minIntervalMs: 3e4
68574
68636
  },
68575
- va: {
68637
+ apparentPower: {
68576
68638
  kind: "gauge",
68577
68639
  unit: "VA",
68578
68640
  deadband: 1,
@@ -68622,9 +68684,6 @@ var PresenceStatusSchema = object({
68622
68684
  location: string().nullable(),
68623
68685
  /** GPS coordinates when available. Null otherwise. */
68624
68686
  gps: GpsLocationSchema.nullable(),
68625
- /** Optional battery level of the tracking device (0..100). Null
68626
- * when not reported. */
68627
- batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
68628
68687
  /** Ms epoch when the slice was last updated. */
68629
68688
  lastChangedAt: number()
68630
68689
  });
@@ -68653,14 +68712,7 @@ var presenceCapability = {
68653
68712
  * `scripts/check-runtime-state-durability.ts`.
68654
68713
  */
68655
68714
  durability: "restored",
68656
- /**
68657
- * History (D850): recorded series.
68658
- */
68659
- history: { fields: { batteryPercent: {
68660
- kind: "gauge",
68661
- unit: "%",
68662
- deadband: 1
68663
- } } },
68715
+ history: "none",
68664
68716
  /** Clock fields: written, but excluded from the compare that decides
68665
68717
  * whether persisting is worth a SQLite commit. */
68666
68718
  volatileStateFields: ["lastChangedAt"]
@@ -68675,7 +68727,7 @@ var presenceCapability = {
68675
68727
  */
68676
68728
  var PressureSensorStatusSchema = object({
68677
68729
  /** Current pressure in hPa. `null` when the sample was refused (D393). */
68678
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
68730
+ pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
68679
68731
  /** Ms epoch when the slice was last updated. */
68680
68732
  lastFetchedAt: number()
68681
68733
  });
@@ -68701,7 +68753,7 @@ var pressureSensorCapability = {
68701
68753
  /**
68702
68754
  * History (D850): recorded series.
68703
68755
  */
68704
- history: { fields: { hpa: {
68756
+ history: { fields: { pressure: {
68705
68757
  kind: "gauge",
68706
68758
  unit: "hPa",
68707
68759
  deadband: .1
@@ -72450,7 +72502,7 @@ var tamperCapability = {
72450
72502
  */
72451
72503
  var TemperatureSensorStatusSchema = object({
72452
72504
  /** Current temperature in Celsius. `null` when the sample was refused (D393). */
72453
- celsius: number().nullable().meta(readingMeta("temperature", {
72505
+ temperature: number().nullable().meta(readingMeta("temperature", {
72454
72506
  precision: 1,
72455
72507
  label: "Temperature"
72456
72508
  })),
@@ -72479,7 +72531,7 @@ var temperatureSensorCapability = {
72479
72531
  /**
72480
72532
  * History (D850): recorded series.
72481
72533
  */
72482
- history: { fields: { celsius: {
72534
+ history: { fields: { temperature: {
72483
72535
  kind: "gauge",
72484
72536
  unit: "°C",
72485
72537
  deadband: .1
@@ -72776,7 +72828,7 @@ var VacuumControlStatusSchema = object({
72776
72828
  /** Speed tokens the hardware accepts — drives the UI selector. */
72777
72829
  availableFanSpeeds: array(string()),
72778
72830
  /** 0..100 cleaning-completion percentage of the current task, or null. */
72779
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
72831
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
72780
72832
  /** Current error code (0 / null = no error). */
72781
72833
  errorCode: number().nullable().meta(readingMeta("none")),
72782
72834
  /** Human label for {@link errorCode}, or null when none / undecodable. */
@@ -74483,7 +74535,7 @@ var BaseDevice = class {
74483
74535
  * `device-local-state.ts`. Drivers access via:
74484
74536
  *
74485
74537
  * `this.state.battery.sleeping = true` // patches the battery slice
74486
- * `const pct = this.state.battery.percentage` // reads the battery slice
74538
+ * `const pct = this.state.battery.level` // reads the battery slice
74487
74539
  * `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
74488
74540
  *
74489
74541
  * Adding a new cap with `runtimeState:` automatically extends this
@@ -74523,7 +74575,7 @@ var BaseDevice = class {
74523
74575
  * shape; drivers don't redeclare it, they just write through.
74524
74576
  *
74525
74577
  * Read: `this.runtimeState.getCapState('battery')` →
74526
- * `{percentage, charging, sleeping, lastUpdated}` for any
74578
+ * `{level, charging, sleeping, lastUpdated}` for any
74527
74579
  * provider that registers `batteryCapability`.
74528
74580
  * Write: `this.runtimeState.setCapState('battery', { … })`.
74529
74581
  *
@@ -85243,7 +85295,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85243
85295
  label: t("Full brightness", "Luminosità massima"),
85244
85296
  phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
85245
85297
  icon: "sun",
85246
- args: { percentage: 100 }
85298
+ args: { level: 100 }
85247
85299
  },
85248
85300
  {
85249
85301
  id: "brightness.half",
@@ -85251,7 +85303,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85251
85303
  label: t("Half brightness", "Luminosità a metà"),
85252
85304
  phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
85253
85305
  icon: "sun-dim",
85254
- args: { percentage: 50 }
85306
+ args: { level: 50 }
85255
85307
  },
85256
85308
  {
85257
85309
  id: "brightness.off",
@@ -85259,16 +85311,16 @@ var ACTUATOR_CAP_VOCABULARY = {
85259
85311
  label: t("Brightness off", "Luminosità a zero"),
85260
85312
  phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
85261
85313
  icon: "lightbulb-off",
85262
- args: { percentage: 0 }
85314
+ args: { level: 0 }
85263
85315
  },
85264
85316
  {
85265
85317
  id: "brightness.set",
85266
85318
  method: "setBrightness",
85267
85319
  label: t("Set brightness", "Imposta la luminosità"),
85268
- phrase: t("Set the brightness of {device} to {percentage}", "Imposta la luminosità di {device} a {percentage}"),
85320
+ phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
85269
85321
  icon: "sun-medium",
85270
85322
  openArgs: [{
85271
- key: "percentage",
85323
+ key: "level",
85272
85324
  label: PERCENT,
85273
85325
  offer: {
85274
85326
  kind: "number",
@@ -85282,13 +85334,13 @@ var ACTUATOR_CAP_VOCABULARY = {
85282
85334
  ],
85283
85335
  state: [{
85284
85336
  kind: "numeric",
85285
- field: "percentage",
85337
+ field: "level",
85286
85338
  quantity: t("the brightness", "la luminosità"),
85287
85339
  label: t("Brightness", "Luminosità"),
85288
85340
  unit: "%",
85289
85341
  icon: "sun"
85290
85342
  }],
85291
- events: { onBrightnessChanged: { notOperatorFacing: "the `percentage` state trigger reads the same change" } }
85343
+ events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
85292
85344
  },
85293
85345
  color: {
85294
85346
  scope: "device",
@@ -85302,7 +85354,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85302
85354
  icon: "sun",
85303
85355
  args: { color: {
85304
85356
  mode: "mired",
85305
- mireds: 370
85357
+ colorTemperature: 370
85306
85358
  } }
85307
85359
  },
85308
85360
  {
@@ -85313,7 +85365,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85313
85365
  icon: "snowflake",
85314
85366
  args: { color: {
85315
85367
  mode: "mired",
85316
- mireds: 200
85368
+ colorTemperature: 200
85317
85369
  } }
85318
85370
  },
85319
85371
  {
@@ -85927,7 +85979,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85927
85979
  label: t("Fan off", "Ventilatore spento"),
85928
85980
  phrase: t("Stop {device}", "Ferma {device}"),
85929
85981
  icon: "power-off",
85930
- args: { percentage: 0 }
85982
+ args: { speed: 0 }
85931
85983
  },
85932
85984
  {
85933
85985
  id: "fan.full",
@@ -85935,16 +85987,16 @@ var ACTUATOR_CAP_VOCABULARY = {
85935
85987
  label: t("Fan full", "Ventilatore al massimo"),
85936
85988
  phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
85937
85989
  icon: "fan",
85938
- args: { percentage: 100 }
85990
+ args: { speed: 100 }
85939
85991
  },
85940
85992
  {
85941
85993
  id: "fan.speed",
85942
85994
  method: "setPercentage",
85943
85995
  label: t("Set speed", "Imposta la velocità"),
85944
- phrase: t("Set the speed of {device} to {percentage}", "Imposta la velocità di {device} al {percentage}"),
85996
+ phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
85945
85997
  icon: "fan",
85946
85998
  openArgs: [{
85947
- key: "percentage",
85999
+ key: "speed",
85948
86000
  label: t("Speed", "Velocità"),
85949
86001
  offer: {
85950
86002
  kind: "number",
@@ -86006,7 +86058,7 @@ var ACTUATOR_CAP_VOCABULARY = {
86006
86058
  ],
86007
86059
  state: [{
86008
86060
  kind: "numeric",
86009
- field: "percentage",
86061
+ field: "speed",
86010
86062
  quantity: t("the speed", "la velocità"),
86011
86063
  label: t("Speed", "Velocità"),
86012
86064
  unit: "%",
@@ -86804,7 +86856,7 @@ var APPLIANCE_CAP_VOCABULARY = {
86804
86856
  },
86805
86857
  {
86806
86858
  kind: "numeric",
86807
- field: "progressPercent",
86859
+ field: "progress",
86808
86860
  quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
86809
86861
  label: t("Progress", "Avanzamento"),
86810
86862
  unit: "%",
@@ -87162,10 +87214,10 @@ var APPLIANCE_CAP_VOCABULARY = {
87162
87214
  id: "media.seek",
87163
87215
  method: "seek",
87164
87216
  label: t("Seek", "Vai al punto"),
87165
- phrase: t("Move {device} to {positionMs}", "Porta {device} al punto {positionMs}"),
87217
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
87166
87218
  icon: "fast-forward",
87167
87219
  openArgs: [{
87168
- key: "positionMs",
87220
+ key: "position",
87169
87221
  label: t("Position", "Posizione"),
87170
87222
  offer: {
87171
87223
  kind: "number",
@@ -88214,7 +88266,7 @@ var SENSOR_CAP_VOCABULARY = {
88214
88266
  state: [
88215
88267
  {
88216
88268
  kind: "numeric",
88217
- field: "co2Ppm",
88269
+ field: "co2",
88218
88270
  quantity: t("the CO₂", "la CO₂"),
88219
88271
  label: t("CO₂", "CO₂"),
88220
88272
  unit: "ppm",
@@ -88222,7 +88274,7 @@ var SENSOR_CAP_VOCABULARY = {
88222
88274
  },
88223
88275
  {
88224
88276
  kind: "numeric",
88225
- field: "vocPpb",
88277
+ field: "voc",
88226
88278
  quantity: t("the VOC level", "il livello di COV"),
88227
88279
  label: t("VOC", "COV"),
88228
88280
  unit: "ppb",
@@ -88258,7 +88310,7 @@ var SENSOR_CAP_VOCABULARY = {
88258
88310
  noun: t("Light level", "Luminosità ambiente"),
88259
88311
  state: [{
88260
88312
  kind: "numeric",
88261
- field: "lux",
88313
+ field: "illuminance",
88262
88314
  quantity: t("the light level", "la luminosità"),
88263
88315
  label: t("Illuminance", "Illuminamento"),
88264
88316
  unit: "lx",
@@ -88461,7 +88513,7 @@ var SENSOR_CAP_VOCABULARY = {
88461
88513
  noun: t("Humidity", "Umidità"),
88462
88514
  state: [{
88463
88515
  kind: "numeric",
88464
- field: "percent",
88516
+ field: "humidity",
88465
88517
  quantity: t("the humidity", "l’umidità"),
88466
88518
  label: t("Humidity", "Umidità"),
88467
88519
  unit: "%",
@@ -88509,7 +88561,7 @@ var SENSOR_CAP_VOCABULARY = {
88509
88561
  state: [
88510
88562
  {
88511
88563
  kind: "numeric",
88512
- field: "watts",
88564
+ field: "power",
88513
88565
  quantity: t("the power draw", "il consumo"),
88514
88566
  label: t("Power", "Potenza"),
88515
88567
  unit: "W",
@@ -88517,7 +88569,7 @@ var SENSOR_CAP_VOCABULARY = {
88517
88569
  },
88518
88570
  {
88519
88571
  kind: "numeric",
88520
- field: "kwhTotal",
88572
+ field: "energy",
88521
88573
  quantity: t("the energy used", "l’energia consumata"),
88522
88574
  label: t("Energy", "Energia"),
88523
88575
  unit: "kWh",
@@ -88525,7 +88577,7 @@ var SENSOR_CAP_VOCABULARY = {
88525
88577
  },
88526
88578
  {
88527
88579
  kind: "numeric",
88528
- field: "volts",
88580
+ field: "voltage",
88529
88581
  quantity: t("the voltage", "la tensione"),
88530
88582
  label: t("Voltage", "Tensione"),
88531
88583
  unit: "V",
@@ -88533,7 +88585,7 @@ var SENSOR_CAP_VOCABULARY = {
88533
88585
  },
88534
88586
  {
88535
88587
  kind: "numeric",
88536
- field: "amps",
88588
+ field: "current",
88537
88589
  quantity: t("the current", "la corrente"),
88538
88590
  label: t("Current", "Corrente"),
88539
88591
  unit: "A",
@@ -88550,13 +88602,6 @@ var SENSOR_CAP_VOCABULARY = {
88550
88602
  label: t("Where", "Posizione"),
88551
88603
  phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
88552
88604
  icon: "map-pin"
88553
- }, {
88554
- kind: "numeric",
88555
- field: "batteryPercent",
88556
- quantity: t("the phone battery", "la batteria del telefono"),
88557
- label: t("Battery", "Batteria"),
88558
- unit: "%",
88559
- icon: "battery"
88560
88605
  }]
88561
88606
  },
88562
88607
  "pressure-sensor": {
@@ -88564,7 +88609,7 @@ var SENSOR_CAP_VOCABULARY = {
88564
88609
  noun: t("Pressure", "Pressione"),
88565
88610
  state: [{
88566
88611
  kind: "numeric",
88567
- field: "hpa",
88612
+ field: "pressure",
88568
88613
  quantity: t("the pressure", "la pressione"),
88569
88614
  label: t("Pressure", "Pressione"),
88570
88615
  unit: "hPa",
@@ -88600,7 +88645,7 @@ var SENSOR_CAP_VOCABULARY = {
88600
88645
  noun: t("Temperature", "Temperatura"),
88601
88646
  state: [{
88602
88647
  kind: "numeric",
88603
- field: "celsius",
88648
+ field: "temperature",
88604
88649
  quantity: t("the temperature", "la temperatura"),
88605
88650
  label: t("Temperature", "Temperatura"),
88606
88651
  unit: "°C",
@@ -88671,7 +88716,7 @@ var SENSOR_CAP_VOCABULARY = {
88671
88716
  state: [
88672
88717
  {
88673
88718
  kind: "numeric",
88674
- field: "percentage",
88719
+ field: "level",
88675
88720
  quantity: t("the battery level", "il livello della batteria"),
88676
88721
  label: t("Battery", "Batteria"),
88677
88722
  unit: "%",
@@ -88713,7 +88758,7 @@ var SENSOR_CAP_VOCABULARY = {
88713
88758
  icon: "battery-charging"
88714
88759
  }
88715
88760
  ],
88716
- events: { onStatusChanged: { notOperatorFacing: "the percentage / sleeping / charging state triggers each read one field of this change" } },
88761
+ events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
88717
88762
  extraEvents: [{
88718
88763
  category: EventCategory.DeviceAwake,
88719
88764
  label: t("Woke up", "Risvegliato"),
@@ -88731,7 +88776,7 @@ var SENSOR_CAP_VOCABULARY = {
88731
88776
  noun: t("Network link", "Collegamento di rete"),
88732
88777
  state: [{
88733
88778
  kind: "numeric",
88734
- field: "signalPercent",
88779
+ field: "signal",
88735
88780
  quantity: t("the signal strength", "l’intensità del segnale"),
88736
88781
  label: t("Signal", "Segnale"),
88737
88782
  unit: "%",
@@ -92102,6 +92147,33 @@ function isAudioClassName(name) {
92102
92147
  return name.trim().toLowerCase().startsWith(`${AUDIO_GROUP_KEY}-`);
92103
92148
  }
92104
92149
  new Set(["devices", "classes"]);
92150
+ function valueFor(param, raw) {
92151
+ switch (param.type) {
92152
+ case "enum": return typeof raw === "string" && (param.options ?? []).some((o) => o.value === raw) ? raw : void 0;
92153
+ case "number": {
92154
+ if (typeof raw !== "number" || !Number.isFinite(raw)) return void 0;
92155
+ const floor = param.min ?? Number.NEGATIVE_INFINITY;
92156
+ const ceil = param.max ?? Number.POSITIVE_INFINITY;
92157
+ return Math.min(ceil, Math.max(floor, raw));
92158
+ }
92159
+ case "boolean": return typeof raw === "boolean" ? raw : void 0;
92160
+ case "string": return typeof raw === "string" && raw.length > 0 ? raw : void 0;
92161
+ }
92162
+ }
92163
+ /**
92164
+ * The values a rule target's `params` contribute for a kind: only declared
92165
+ * keys, only valid values. `undefined` when nothing survives — a notifier that
92166
+ * declared nothing is never handed a `delivery` block.
92167
+ */
92168
+ function resolveDeliveryParams(declared, params) {
92169
+ if (declared === void 0 || params === void 0) return void 0;
92170
+ const out = {};
92171
+ for (const param of declared) {
92172
+ const value = valueFor(param, params[param.key]);
92173
+ if (value !== void 0) out[param.key] = value;
92174
+ }
92175
+ return Object.keys(out).length > 0 ? out : void 0;
92176
+ }
92105
92177
  /**
92106
92178
  * WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
92107
92179
  * consumed by the rule ENGINE and by every rule EDITOR.
@@ -96961,4 +97033,4 @@ function buildClipModelRegistry(entries) {
96961
97033
  /** The built-in catalog's registry. */
96962
97034
  var BUILTIN_CLIP_MODELS = buildClipModelRegistry(CLIP_IMAGE_MODELS);
96963
97035
  //#endregion
96964
- export { MediaFileKindEnum as $, CAP_ADVANCE_FIELDS as $i, cloneAlarmSettings as $n, paintHex as $r, OpsLogEntrySchema as $t, DeclaredDevices as A, EventCategory as Aa, subKindsOf as Ai, TrackSideSchema as An, isAudioClassName as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, templateCarriesSummary as Bi, applyModeDelaysEdits as Bn, isRootSuppliableStepId as Br, NcRuleUpdateInputSchema as Bt, ClearTrackRelationResultSchema as C, record as Ca, ruleKindOf as Ci, TimelapseRuleInputSchema as Cn, failureContributionCapability as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, tuple as Da, servedTemplateVars as Di, TrackPuritySchema as Dn, isAlertEpisodeOpen as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, templateLiteral as Ea, sensorRaisedOf as Ei, TrackPlacementSchema as En, isAlarmControllableCap as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, systemEventDeliveryProblems as Fi, alarmPanelCapability as Fn, isEventOwnerType as Fr, NcRuleActionSchema as Ft, ListTrackRelationsResultSchema as G, zoneAnalyticsCapability as Gi, audioMetricsCapability as Gn, kebabToCamel as Gr, NcSnoozeSuppressedSchema as Gt, LABEL_SUPPLY_MACRO as H, vectorDimFromBase64 as Hi, applySecureOnArmEdit as Hn, isSystemDelivery as Hr, NcSharedSequenceSchema as Ht, EVENT_KIND_BY_CAP as I, systemEventFamilyProblems as Ii, alertEpisodeId as In, isKnownTemplateVar as Ir, NcRuleInputSchema as It, MAX_BIRTH_DECISION_RECORDS as J, evaluateSensorEdge as Ji, buildSubjectPath as Jn, memoizePinnedFfmpeg as Jr, NcTaxonomySchema as Jt, LockStateSchema as K, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as Ki, audioModeOf as Kn, linkedStepOf as Kr, NcStateSummarySectionIdSchema as Kt, EVENT_OWNER_TYPES as L, systemEventFilterApplies as Li, alertEpisodeKind as Ln, isLabelSupplyStepId as Lr, NcRulePatchSchema as Lt, EMBEDDING_MODEL_FAILED as M, subjectPathSvgPoints as Mi, activateAlarmProfile as Mn, isDetectionMacroClass as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, summarizeReview as Ni, addonWidgetsSourceCapability as Nn, isDrawableSubjectPath as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, union as Oa, startMoverUnderClearance as Oi, TrackRelationKindSchema as On, isAlertEpisodeSeverity as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, syncActiveAlarmProfileSettings as Pi, alarmDeviceSecureOnArm as Pn, isEventKindLabelKey as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, BaseAddon as Qi, classifyRetrainReview as Qn, occupancyScope as Qr, OPS_LOG_DEFAULT_LIMIT as Qt, EXPORT_DENSE_MAX_RANGES as R, systemEventSummaryScheduleOf as Ri, alertEpisodePayload as Rn, isMediaOwnerType as Rr, NcRuleSchema as Rt, ClearTrackRelationInputSchema as S, partialRecord as Sa, ruleGroupingApplies as Si, TRACK_RELATIONS_DEFAULT_LIMIT as Sn, faceGalleryCapability as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, string as Ta, secureActuationFor as Ti, TimelapseRuleSchema as Tn, gifFromMp4Args as Tr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Tt, LabelAttributionSchema as U, viewerLinkBaseOf as Ui, armRemovalReconcile as Un, isSystemEventSummaryRule as Ur, NcSnoozeInputSchema as Ut, FailureCounters as V, templateVarsFor as Vi, applyNonBlockingEdit as Vn, isScheduleActive as Vr, NcScheduleSchema as Vt, ListTrackRelationsInputSchema as W, withSystemEventClasses as Wi, assertTimelapseCadences as Wn, isVectorIndexDimConflict as Wr, NcSnoozeSchema as Wt, MAX_TRACK_PURITIES as X, DeviceType as Xi, bundledCamstack as Xn, normalizeNcMediaPolicy as Xr, NcTemplatePreviewSchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, isSourceCap as Yi, buildViewerLink as Yn, ncMediaPolicyError as Yr, NcTemplatePreviewInputSchema as Yt, MAX_TRACK_RELATIONS as Z, errMsg as Zi, calendarEventLocalSpan as Zn, notificationRulesCapability as Zr, NcTemplateVarDescriptorSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, discriminatedUnion as _a, retrainRevisionConflictMessage as _i, SceneMonitorSchema as _n, embeddingRequirementsUnavailableError as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, customAction as aa, plateGalleryCapability as ai, RetrainDismissedSchema as an, deleteAlarmProfile as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, number as ba, ruleBelongsToAlarm as bi, SetTrackRelationInputSchema as bn, eventKindLabel as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, hydrateSchema as ca, readMotionTriggeredBy as ci, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as cn, deriveRecordingMode as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, normalizeNodeId as da, resolveClipSearchMinScore as di, SCENE_DEFAULT_CHECK_INTERVAL_SEC as dn, deviceAttentionKind as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, CamProfileSchema as ea, paletteResultSchema as ei, PackageLlmVerdictSchema as en, consumableFormOf as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, sleep as fa, resolveLocationMode as fi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as fn, deviceRemovalHookCapability as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, boolean as ga, resolvePoolMemoryPolicy as gi, SCENE_RESET_RECAPTURES as gn, embeddingRequirementsFailedError as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, array as ha, resolveNcMediaImage as hi, SCENE_DIVERGED as hn, embeddingRefusalOf as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, createEvent as ia, pipelineAnalyticsCapability as ii, RebuildObjectEmbeddingsRefusalSchema as in, createAlarmProfile as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, subjectPathSampleFromBox as ji, TrackSourceSchema as jn, isDefaultAlarmProfileId as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, unknown as ka, storageOccupancyCapability as ki, TrackRelationSchema as kn, isAppLinkBase as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, isDeviceScopedCap as la, readTimelapseGeneratedAt as li, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as ln, describeSystemEventDeliveryProblem as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, _enum as ma, resolveModeNotifyPolicy as mi, SCENE_DEFAULT_UNCOVERED_POLICY as mn, embeddingModelFailedError as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, RECORD_MAX_DATA_BYTES as na, parseProcStatus as ni, RECORDING_EXPORT_MAX_READ_BYTES as nn, coreBlockIdFromAddonId as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, defineCustomActions as oa, projectSubjectPath as oi, RetrainOriginSchema as on, deriveDetailCropRect as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, ZodObject as pa, resolveModeDelays as pi, SCENE_DEFAULT_QUIET_SECONDS as pn, embeddingEncoderCapability as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, canonicalHash as qi, buildEventKindDescriptor as qn, mayWriteToLocation as qr, NcSystemEventKindSchema as qt, CLIP_IMAGE_MODELS as r, RECORD_QUERY_MAX as ra, pickFaceRescoreIntervalMinutes as ri, RECORDING_SOURCE_CAMSTACK_ADDON as rn, cosineSimilarity as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, defineRecordKinds as sa, readDeviceStateFrom as si, RetrainStatusSchema as sn, derivePostTriggeredAction as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, InvalidRecordError as ta, parseAlertEpisodePayload as ti, PoolMemoryWatchdog as tn, consumableLowPercentOf as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, nodePin as ua, renameAlarmProfile as ui, SCENE_DEFAULT_ANCHOR_THRESHOLD as un, describeSystemEventFamilyProblem as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, literal as va, rootSupplyServes as vi, SetTrackPurityInputSchema as vn, encodeVectorBase64 as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, strictObject as wa, sceneMonitorCapability as wi, TimelapseRulePatchSchema as wn, gifDeriveSpeed as wr, NC_STATE_SUMMARY_SECTION_IDS as wt, COCO_TO_MACRO as x, object as xa, ruleDeviceCompatCapQueries as xi, TIMELAPSE_DENSE_FLOOR_SEC as xn, evictionPolicyOfLocation as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, looseObject as ya, ruleAutoTriggersAlarm as yi, SetTrackPurityResultSchema as yn, ensureAlarmProfiles as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, systemEventSummarySplitOf as zi, applyBlockingEdit as zn, isRetiredClearKey as zr, NcRuleTargetSchema as zt };
97036
+ export { MediaFileKindEnum as $, BaseAddon as $i, cloneAlarmSettings as $n, paintHex as $r, OpsLogEntrySchema as $t, DeclaredDevices as A, unknown as Aa, storageOccupancyCapability as Ai, TrackSideSchema as An, isAudioClassName as Ar, NcAlarmSensorsInputSchema as At, FULL_IMAGE_BBOX as B, systemEventSummarySplitOf as Bi, applyModeDelaysEdits as Bn, isRootSuppliableStepId as Br, NcRuleUpdateInputSchema as Bt, ClearTrackRelationResultSchema as C, partialRecord as Ca, ruleGroupingApplies as Ci, TimelapseRuleInputSchema as Cn, failureContributionCapability as Cr, NC_SNOOZE_MAX_MINUTES as Ct, DEFAULT_TIMELAPSE_PREVIEW_TEXT as D, templateLiteral as Da, sensorRaisedOf as Di, TrackPuritySchema as Dn, isAlertEpisodeOpen as Dr, NC_TEMPLATE_VARS as Dt, DEFAULT_EVENT_COLOR as E, string as Ea, secureActuationFor as Ei, TrackPlacementSchema as En, isAlarmControllableCap as Er, NC_TAXONOMY as Et, EVENT_DENSITY_BATCH_MAX as F, syncActiveAlarmProfileSettings as Fi, alarmPanelCapability as Fn, isEventOwnerType as Fr, NcRuleActionSchema as Ft, ListTrackRelationsResultSchema as G, withSystemEventClasses as Gi, audioMetricsCapability as Gn, kebabToCamel as Gr, NcSnoozeSuppressedSchema as Gt, LABEL_SUPPLY_MACRO as H, templateVarsFor as Hi, applySecureOnArmEdit as Hn, isSystemDelivery as Hr, NcSharedSequenceSchema as Ht, EVENT_KIND_BY_CAP as I, systemEventDeliveryProblems as Ii, alertEpisodeId as In, isKnownTemplateVar as Ir, NcRuleInputSchema as It, MAX_BIRTH_DECISION_RECORDS as J, canonicalHash as Ji, buildSubjectPath as Jn, memoizePinnedFfmpeg as Jr, NcTaxonomySchema as Jt, LockStateSchema as K, zoneAnalyticsCapability as Ki, audioModeOf as Kn, linkedStepOf as Kr, NcStateSummarySectionIdSchema as Kt, EVENT_OWNER_TYPES as L, systemEventFamilyProblems as Li, alertEpisodeKind as Ln, isLabelSupplyStepId as Lr, NcRulePatchSchema as Lt, EMBEDDING_MODEL_FAILED as M, subjectPathSampleFromBox as Mi, activateAlarmProfile as Mn, isDetectionMacroClass as Mr, NcAlarmSettingsPatchSchema as Mt, EMBEDDING_REQUIREMENTS_FAILED as N, subjectPathSvgPoints as Ni, addonWidgetsSourceCapability as Nn, isDrawableSubjectPath as Nr, NcConditionDescriptorSchema as Nt, DETECTION_MACRO_CLASSES as O, tuple as Oa, servedTemplateVars as Oi, TrackRelationKindSchema as On, isAlertEpisodeSeverity as Or, NcAlarmConfigSchema as Ot, EMBEDDING_REQUIREMENTS_UNAVAILABLE as P, summarizeReview as Pi, alarmDeviceSecureOnArm as Pn, isEventKindLabelKey as Pr, NcConditionsSchema as Pt, MOTION_CLOSE_AFTER_MS as Q, errMsg as Qi, classifyRetrainReview as Qn, occupancyScope as Qr, OPS_LOG_DEFAULT_LIMIT as Qt, EXPORT_DENSE_MAX_RANGES as R, systemEventFilterApplies as Ri, alertEpisodePayload as Rn, isMediaOwnerType as Rr, NcRuleSchema as Rt, ClearTrackRelationInputSchema as S, object as Sa, ruleDeviceCompatCapQueries as Si, TRACK_RELATIONS_DEFAULT_LIMIT as Sn, faceGalleryCapability as Sr, NC_SENSOR_TRANSITION_KINDS as St, DEFAULT_DETAIL_CROP_CONVENTION as T, strictObject as Ta, sceneMonitorCapability as Ti, TimelapseRuleSchema as Tn, gifFromMp4Args as Tr, NC_SYSTEM_EVENT_KIND_GROUP_SPECS as Tt, LabelAttributionSchema as U, vectorDimFromBase64 as Ui, armRemovalReconcile as Un, isSystemEventSummaryRule as Ur, NcSnoozeInputSchema as Ut, FailureCounters as V, templateCarriesSummary as Vi, applyNonBlockingEdit as Vn, isScheduleActive as Vr, NcScheduleSchema as Vt, ListTrackRelationsInputSchema as W, viewerLinkBaseOf as Wi, assertTimelapseCadences as Wn, isVectorIndexDimConflict as Wr, NcSnoozeSchema as Wt, MAX_TRACK_PURITIES as X, isSourceCap as Xi, bundledCamstack as Xn, normalizeNcMediaPolicy as Xr, NcTemplatePreviewSchema as Xt, MAX_BIRTH_LATENCY_PROXY_MS as Y, evaluateSensorEdge as Yi, buildViewerLink as Yn, ncMediaPolicyError as Yr, NcTemplatePreviewInputSchema as Yt, MAX_TRACK_RELATIONS as Z, DeviceType as Zi, calendarEventLocalSpan as Zn, notificationRulesCapability as Zr, NcTemplateVarDescriptorSchema as Zt, BIRTH_DECISION_DEFAULT_LIMIT as _, boolean as _a, resolvePoolMemoryPolicy as _i, SceneMonitorSchema as _n, embeddingRequirementsUnavailableError as _r, NC_CONSUMABLE_SYSTEM_EVENT_KINDS as _t, CLIP_EMBEDDING_STEP_ID as a, createEvent as aa, plateGalleryCapability as ai, RetrainDismissedSchema as an, deleteAlarmProfile as ar, NC_ALARM_NOTIFY_FIELDS as at, BucketAccumulator as b, looseObject as ba, ruleAutoTriggersAlarm as bi, SetTrackRelationInputSchema as bn, eventKindLabel as br, NC_GROUPING_MAX_SEC as bt, readClusterModelPinStrict as c, defineRecordKinds as ca, readMotionTriggeredBy as ci, SCENE_CONFIRM_DEFAULT_MAX_IMAGE_PX as cn, deriveRecordingMode as cr, NC_AUDIO_CONFIRM_HITS_DEFAULT as ct, APPEARANCE_BLOCKS as d, nodePin as da, resolveClipSearchMinScore as di, SCENE_DEFAULT_CHECK_INTERVAL_SEC as dn, deviceAttentionKind as dr, NC_CLIP_PRE_ROLL_DEFAULT_SEC as dt, CAP_ADVANCE_FIELDS as ea, paletteResultSchema as ei, PackageLlmVerdictSchema as en, consumableFormOf as er, MotionTriggeredBySchema as et, APPEARANCE_RESOLVES_AMBIGUITY_DEFAULT as f, normalizeNodeId as fa, resolveDeliveryParams as fi, SCENE_DEFAULT_OBSERVATION_SPACING_SEC as fn, deviceRemovalHookCapability as fr, NC_CLIP_RETENTION_MAX_SEC as ft, ArchivedDebugNoteSchema as g, array as ga, resolveNcMediaImage as gi, SCENE_RESET_RECAPTURES as gn, embeddingRequirementsFailedError as gr, NC_CONSUMABLE_LOW_PERCENT_DEFAULT as gt, AlarmArmModeSchema as h, _enum as ha, resolveModeNotifyPolicy as hi, SCENE_DIVERGED as hn, embeddingRefusalOf as hr, NC_CONFIRM_DEFAULT_TIMEOUT_MS as ht, CLIP_TEXT_MODELS as i, RECORD_QUERY_MAX as ia, pipelineAnalyticsCapability as ii, RebuildObjectEmbeddingsRefusalSchema as in, createAlarmProfile as ir, NC_ALARM_DELAY_MAX_SEC as it, DetectionSourceSchema as j, EventCategory as ja, subKindsOf as ji, TrackSourceSchema as jn, isDefaultAlarmProfileId as jr, NcAlarmSensorsSchema as jt, DETECTION_PIPELINE_CAP_NAME as k, union as ka, startMoverUnderClearance as ki, TrackRelationSchema as kn, isAppLinkBase as kr, NcAlarmPostTriggeredActionSchema as kt, resolveClusterModelPin as l, hydrateSchema as la, readTimelapseGeneratedAt as li, SCENE_CONFIRM_DEFAULT_TIMEOUT_MS as ln, describeSystemEventDeliveryProblem as lr, NC_AUDIO_CONFIRM_WINDOW_SEC_DEFAULT as lt, AUDIO_MACRO_LABELS as m, ZodObject as ma, resolveModeDelays as mi, SCENE_DEFAULT_UNCOVERED_POLICY as mn, embeddingModelFailedError as mr, NC_CONFIRM_DEFAULT_MAX_IMAGE_PX as mt, DEFAULT_CLIP_MODEL as n, InvalidRecordError as na, parseProcStatus as ni, RECORDING_EXPORT_MAX_READ_BYTES as nn, coreBlockIdFromAddonId as nr, NC_ALARM_DEFAULT_TRIGGERED_DURATION_SEC as nt, CLUSTER_MODEL_OWNER_ADDON_ID as o, customAction as oa, projectSubjectPath as oi, RetrainOriginSchema as on, deriveDetailCropRect as or, NC_ALARM_SYSTEM_EVENT_KINDS as ot, ARCHIVED_DEBUG_NOTES_DEFAULT_LIMIT as p, sleep as pa, resolveLocationMode as pi, SCENE_DEFAULT_QUIET_SECONDS as pn, embeddingEncoderCapability as pr, NC_CONDITION_CATALOG as pt, MAX_ARCHIVED_DEBUG_NOTES as q, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as qi, buildEventKindDescriptor as qn, mayWriteToLocation as qr, NcSystemEventKindSchema as qt, CLIP_IMAGE_MODELS as r, RECORD_MAX_DATA_BYTES as ra, pickFaceRescoreIntervalMinutes as ri, RECORDING_SOURCE_CAMSTACK_ADDON as rn, cosineSimilarity as rr, NC_ALARM_DELAY_FIELDS as rt, FACE_EMBEDDING_STEP_ID as s, defineCustomActions as sa, readDeviceStateFrom as si, RetrainStatusSchema as sn, derivePostTriggeredAction as sr, NC_ALARM_TRIGGERED_MAX_SEC as st, BUILTIN_CLIP_MODELS as t, CamProfileSchema as ta, parseAlertEpisodePayload as ti, PoolMemoryWatchdog as tn, consumableLowPercentOf as tr, NC_ALARM_DEFAULT_PROFILE_ID as tt, APPEARANCE_BIN_COUNT as u, isDeviceScopedCap as ua, renameAlarmProfile as ui, SCENE_DEFAULT_ANCHOR_THRESHOLD as un, describeSystemEventFamilyProblem as ur, NC_CLIP_POST_ROLL_DEFAULT_SEC as ut, BaseDevice as v, discriminatedUnion as va, retrainRevisionConflictMessage as vi, SetTrackPurityInputSchema as vn, encodeVectorBase64 as vr, NC_DEFAULT_SNOOZE_MINUTES as vt, CoverStateSchema as w, record as wa, ruleKindOf as wi, TimelapseRulePatchSchema as wn, gifDeriveSpeed as wr, NC_STATE_SUMMARY_SECTION_IDS as wt, COCO_TO_MACRO as x, number as xa, ruleBelongsToAlarm as xi, TIMELAPSE_DENSE_FLOOR_SEC as xn, evictionPolicyOfLocation as xr, NC_GROUPING_MIN_SEC as xt, BirthDecisionRecordSchema as y, literal as ya, rootSupplyServes as yi, SetTrackPurityResultSchema as yn, ensureAlarmProfiles as yr, NC_GROUPING_DEFAULT_SEC as yt, FIRST_LEVEL_MACRO_CLASSES as z, systemEventSummaryScheduleOf as zi, applyBlockingEdit as zn, isRetiredClearKey as zr, NcRuleTargetSchema as zt };