@camstack/addon-import-alexa 0.2.161 → 0.2.162

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.
package/dist/addon.js CHANGED
@@ -5627,7 +5627,7 @@ var ZodIssueCode = {
5627
5627
  var ZodFirstPartyTypeKind;
5628
5628
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5629
5629
  //#endregion
5630
- //#region ../types/dist/sleep-DFaVPxfm.mjs
5630
+ //#region ../types/dist/sleep-Crlmu_tO.mjs
5631
5631
  /**
5632
5632
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5633
5633
  * window to float samples (D455).
@@ -9147,11 +9147,11 @@ var CAP_NAMES = Object.freeze([
9147
9147
  Object.freeze({
9148
9148
  "air-quality-sensor": [
9149
9149
  {
9150
- "path": "co2Ppm",
9150
+ "path": "co2",
9151
9151
  "valueType": "number"
9152
9152
  },
9153
9153
  {
9154
- "path": "vocPpb",
9154
+ "path": "voc",
9155
9155
  "valueType": "number"
9156
9156
  },
9157
9157
  {
@@ -9201,7 +9201,7 @@ Object.freeze({
9201
9201
  }
9202
9202
  ],
9203
9203
  "ambient-light-sensor": [{
9204
- "path": "lux",
9204
+ "path": "illuminance",
9205
9205
  "valueType": "number"
9206
9206
  }],
9207
9207
  "audio-metrics": [
@@ -9262,7 +9262,7 @@ Object.freeze({
9262
9262
  ],
9263
9263
  "battery": [
9264
9264
  {
9265
- "path": "percentage",
9265
+ "path": "level",
9266
9266
  "valueType": "number"
9267
9267
  },
9268
9268
  {
@@ -9284,7 +9284,7 @@ Object.freeze({
9284
9284
  "valueType": "number"
9285
9285
  },
9286
9286
  {
9287
- "path": "volts",
9287
+ "path": "voltage",
9288
9288
  "valueType": "number"
9289
9289
  },
9290
9290
  {
@@ -9305,7 +9305,7 @@ Object.freeze({
9305
9305
  "valueType": "boolean"
9306
9306
  }],
9307
9307
  "brightness": [{
9308
- "path": "percentage",
9308
+ "path": "level",
9309
9309
  "valueType": "number"
9310
9310
  }],
9311
9311
  "broker": [{
@@ -9506,7 +9506,7 @@ Object.freeze({
9506
9506
  "valueType": "number"
9507
9507
  },
9508
9508
  {
9509
- "path": "mireds",
9509
+ "path": "colorTemperature",
9510
9510
  "valueType": "number"
9511
9511
  }
9512
9512
  ],
@@ -9685,15 +9685,15 @@ Object.freeze({
9685
9685
  "valueType": "string"
9686
9686
  },
9687
9687
  {
9688
- "path": "remainingSeconds",
9688
+ "path": "remaining",
9689
9689
  "valueType": "number"
9690
9690
  },
9691
9691
  {
9692
- "path": "delayedStartSeconds",
9692
+ "path": "delayedStart",
9693
9693
  "valueType": "number"
9694
9694
  },
9695
9695
  {
9696
- "path": "progressPercent",
9696
+ "path": "progress",
9697
9697
  "valueType": "number"
9698
9698
  },
9699
9699
  {
@@ -9807,7 +9807,7 @@ Object.freeze({
9807
9807
  ],
9808
9808
  "fan-control": [
9809
9809
  {
9810
- "path": "percentage",
9810
+ "path": "speed",
9811
9811
  "valueType": "number"
9812
9812
  },
9813
9813
  {
@@ -9907,7 +9907,7 @@ Object.freeze({
9907
9907
  }
9908
9908
  ],
9909
9909
  "humidity-sensor": [{
9910
- "path": "percent",
9910
+ "path": "humidity",
9911
9911
  "valueType": "number"
9912
9912
  }],
9913
9913
  "image": [{
@@ -10017,7 +10017,7 @@ Object.freeze({
10017
10017
  "valueType": "number"
10018
10018
  },
10019
10019
  {
10020
- "path": "progressPercent",
10020
+ "path": "progress",
10021
10021
  "valueType": "number"
10022
10022
  },
10023
10023
  {
@@ -10096,11 +10096,11 @@ Object.freeze({
10096
10096
  "valueType": "string"
10097
10097
  },
10098
10098
  {
10099
- "path": "positionMs",
10099
+ "path": "position",
10100
10100
  "valueType": "number"
10101
10101
  },
10102
10102
  {
10103
- "path": "durationMs",
10103
+ "path": "duration",
10104
10104
  "valueType": "number"
10105
10105
  },
10106
10106
  {
@@ -10202,11 +10202,11 @@ Object.freeze({
10202
10202
  ]
10203
10203
  },
10204
10204
  {
10205
- "path": "signalPercent",
10205
+ "path": "signal",
10206
10206
  "valueType": "number"
10207
10207
  },
10208
10208
  {
10209
- "path": "rssiDbm",
10209
+ "path": "rssi",
10210
10210
  "valueType": "number"
10211
10211
  },
10212
10212
  {
@@ -10337,23 +10337,23 @@ Object.freeze({
10337
10337
  ],
10338
10338
  "power-meter": [
10339
10339
  {
10340
- "path": "watts",
10340
+ "path": "power",
10341
10341
  "valueType": "number"
10342
10342
  },
10343
10343
  {
10344
- "path": "kwhTotal",
10344
+ "path": "energy",
10345
10345
  "valueType": "number"
10346
10346
  },
10347
10347
  {
10348
- "path": "volts",
10348
+ "path": "voltage",
10349
10349
  "valueType": "number"
10350
10350
  },
10351
10351
  {
10352
- "path": "amps",
10352
+ "path": "current",
10353
10353
  "valueType": "number"
10354
10354
  },
10355
10355
  {
10356
- "path": "va",
10356
+ "path": "apparentPower",
10357
10357
  "valueType": "number"
10358
10358
  },
10359
10359
  {
@@ -10381,14 +10381,10 @@ Object.freeze({
10381
10381
  {
10382
10382
  "path": "gps.accuracyMeters",
10383
10383
  "valueType": "number"
10384
- },
10385
- {
10386
- "path": "batteryPercent",
10387
- "valueType": "number"
10388
10384
  }
10389
10385
  ],
10390
10386
  "pressure-sensor": [{
10391
- "path": "hpa",
10387
+ "path": "pressure",
10392
10388
  "valueType": "number"
10393
10389
  }],
10394
10390
  "privacy-mask": [{
@@ -10702,7 +10698,7 @@ Object.freeze({
10702
10698
  "valueType": "boolean"
10703
10699
  }],
10704
10700
  "temperature-sensor": [{
10705
- "path": "celsius",
10701
+ "path": "temperature",
10706
10702
  "valueType": "number"
10707
10703
  }],
10708
10704
  "update": [
@@ -10750,7 +10746,7 @@ Object.freeze({
10750
10746
  "valueType": "string"
10751
10747
  },
10752
10748
  {
10753
- "path": "progressPercent",
10749
+ "path": "progress",
10754
10750
  "valueType": "number"
10755
10751
  },
10756
10752
  {
@@ -11235,7 +11231,7 @@ function errMsg(err) {
11235
11231
  return String(err);
11236
11232
  }
11237
11233
  //#endregion
11238
- //#region ../types/dist/composition-Bb8iwHEJ.mjs
11234
+ //#region ../types/dist/composition-CZImLpOI.mjs
11239
11235
  /**
11240
11236
  * The ffmpeg build every CamStack node downloads, per platform and arch.
11241
11237
  *
@@ -19173,7 +19169,7 @@ var CompositionEventPlanSchema = object({
19173
19169
  stateField: string(),
19174
19170
  fieldKey: string()
19175
19171
  });
19176
- /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
19172
+ /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
19177
19173
  var CompositionProblemSchema = object({
19178
19174
  code: _enum([
19179
19175
  "reserved-variant",
@@ -19492,7 +19488,7 @@ var GROUP_TEMPLATES = [
19492
19488
  summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
19493
19489
  role: DeviceRole.TemperatureSensor,
19494
19490
  outputCap: "temperature-sensor",
19495
- outputField: "celsius",
19491
+ outputField: "temperature",
19496
19492
  quantity: "temperature",
19497
19493
  defaultAggregate: "mean",
19498
19494
  empty: "null",
@@ -19503,7 +19499,7 @@ var GROUP_TEMPLATES = [
19503
19499
  summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
19504
19500
  role: DeviceRole.HumiditySensor,
19505
19501
  outputCap: "humidity-sensor",
19506
- outputField: "percent",
19502
+ outputField: "humidity",
19507
19503
  quantity: "humidity",
19508
19504
  defaultAggregate: "mean",
19509
19505
  empty: "null",
@@ -19514,7 +19510,7 @@ var GROUP_TEMPLATES = [
19514
19510
  summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
19515
19511
  role: DeviceRole.PressureSensor,
19516
19512
  outputCap: "pressure-sensor",
19517
- outputField: "hpa",
19513
+ outputField: "pressure",
19518
19514
  quantity: "pressure",
19519
19515
  defaultAggregate: "mean",
19520
19516
  empty: "null",
@@ -19525,7 +19521,7 @@ var GROUP_TEMPLATES = [
19525
19521
  summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
19526
19522
  role: DeviceRole.AmbientLightSensor,
19527
19523
  outputCap: "ambient-light-sensor",
19528
- outputField: "lux",
19524
+ outputField: "illuminance",
19529
19525
  quantity: "illuminance",
19530
19526
  defaultAggregate: "mean",
19531
19527
  empty: "null",
@@ -19536,7 +19532,7 @@ var GROUP_TEMPLATES = [
19536
19532
  summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
19537
19533
  role: DeviceRole.PowerSensor,
19538
19534
  outputCap: "power-meter",
19539
- outputField: "watts",
19535
+ outputField: "power",
19540
19536
  quantity: "power",
19541
19537
  defaultAggregate: "sum",
19542
19538
  empty: "omit",
@@ -19547,7 +19543,7 @@ var GROUP_TEMPLATES = [
19547
19543
  summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
19548
19544
  role: DeviceRole.EnergySensor,
19549
19545
  outputCap: "power-meter",
19550
- outputField: "kwhTotal",
19546
+ outputField: "energy",
19551
19547
  quantity: "energy",
19552
19548
  defaultAggregate: "sum",
19553
19549
  empty: "omit",
@@ -19558,7 +19554,7 @@ var GROUP_TEMPLATES = [
19558
19554
  summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
19559
19555
  role: DeviceRole.BatterySensor,
19560
19556
  outputCap: "battery",
19561
- outputField: "percentage",
19557
+ outputField: "level",
19562
19558
  quantity: "percentage",
19563
19559
  defaultAggregate: "mean",
19564
19560
  empty: "null",
@@ -58037,9 +58033,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
58037
58033
  */
58038
58034
  var AirQualitySensorStatusSchema = object({
58039
58035
  /** Carbon dioxide concentration in ppm. */
58040
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
58036
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
58041
58037
  /** Total volatile organic compounds in ppb. */
58042
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
58038
+ voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
58043
58039
  /** Particulate matter ≤ 2.5 μm in µg/m³. */
58044
58040
  pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
58045
58041
  /** Particulate matter ≤ 10 μm in µg/m³. */
@@ -58072,12 +58068,12 @@ var airQualitySensorCapability = {
58072
58068
  * History (D850): recorded series.
58073
58069
  */
58074
58070
  history: { fields: {
58075
- co2Ppm: {
58071
+ co2: {
58076
58072
  kind: "gauge",
58077
58073
  unit: "ppm",
58078
58074
  deadband: 5
58079
58075
  },
58080
- vocPpb: {
58076
+ voc: {
58081
58077
  kind: "gauge",
58082
58078
  unit: "ppb",
58083
58079
  deadband: 5
@@ -58108,7 +58104,7 @@ var airQualitySensorCapability = {
58108
58104
  */
58109
58105
  var AmbientLightSensorStatusSchema = object({
58110
58106
  /** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
58111
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
58107
+ illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
58112
58108
  precision: 0,
58113
58109
  label: "Illuminance"
58114
58110
  })),
@@ -58137,7 +58133,7 @@ var ambientLightSensorCapability = {
58137
58133
  /**
58138
58134
  * History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
58139
58135
  */
58140
- history: { fields: { lux: {
58136
+ history: { fields: { illuminance: {
58141
58137
  kind: "gauge",
58142
58138
  unit: "lx",
58143
58139
  deadbandPct: 10,
@@ -58450,7 +58446,7 @@ var BatteryStatusSchema = object({
58450
58446
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
58451
58447
  * declines to band a non-finite reading, which is the correct shape.
58452
58448
  */
58453
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
58449
+ level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
58454
58450
  /**
58455
58451
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
58456
58452
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -58460,7 +58456,7 @@ var BatteryStatusSchema = object({
58460
58456
  * `'unknown'` is the absence of an answer: the provider has not read the
58461
58457
  * power fields yet, or the firmware reported neither. Before it existed,
58462
58458
  * two unreadable fields produced `'none'`, and a camera nobody had reached
58463
- * was drawn "on battery alone" — the same D315 defect `percentage` closed
58459
+ * was drawn "on battery alone" — the same D315 defect `level` closed
58464
58460
  * by going nullable. Consumers SKIP it (no charger state published, no
58465
58461
  * glyph, no HomeKit ChargingState) rather than coerce it either way.
58466
58462
  */
@@ -58484,7 +58480,7 @@ var BatteryStatusSchema = object({
58484
58480
  * that only report charge. A second reading on this cap, not a second
58485
58481
  * `numeric-sensor` on the same device.
58486
58482
  */
58487
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
58483
+ voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
58488
58484
  /**
58489
58485
  * Ms epoch of the last time the device PROVED it was reachable — a
58490
58486
  * completed firmware round-trip, an observed wake, or an inbound push
@@ -58518,7 +58514,7 @@ var BatteryStatusSchema = object({
58518
58514
  /**
58519
58515
  * True when the source is a BINARY low-battery indicator (HA
58520
58516
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
58521
- * charge level — `percentage` is then a coarse stand-in (100 = normal,
58517
+ * charge level — `level` is then a coarse stand-in (100 = normal,
58522
58518
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
58523
58519
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
58524
58520
  */
@@ -58538,15 +58534,15 @@ var BATTERY_DEVICE_TYPES = [
58538
58534
  var batteryCustomize = {
58539
58535
  version: 1,
58540
58536
  targets: [{
58541
- id: "percentage",
58537
+ id: "level",
58542
58538
  cardinality: "scalar",
58543
58539
  vocabulary: {
58544
58540
  cap: "battery",
58545
- stateField: "percentage"
58541
+ stateField: "level"
58546
58542
  },
58547
58543
  deviceTypes: BATTERY_DEVICE_TYPES,
58548
58544
  apply: "add",
58549
- path: "percentage",
58545
+ path: "level",
58550
58546
  sources: [{
58551
58547
  kind: "field",
58552
58548
  valueKinds: ["number", "string"],
@@ -58640,7 +58636,7 @@ onStatusChanged: { data: object({
58640
58636
  schema: BatteryStatusSchema,
58641
58637
  kind: "push",
58642
58638
  empty: {
58643
- percentage: null,
58639
+ level: null,
58644
58640
  charging: "unknown",
58645
58641
  sleeping: false,
58646
58642
  lastUpdated: 0
@@ -58667,11 +58663,11 @@ onStatusChanged: { data: object({
58667
58663
  * History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
58668
58664
  */
58669
58665
  history: { fields: {
58670
- percentage: {
58666
+ level: {
58671
58667
  kind: "gauge",
58672
58668
  unit: "%"
58673
58669
  },
58674
- volts: {
58670
+ voltage: {
58675
58671
  kind: "gauge",
58676
58672
  unit: "V"
58677
58673
  }
@@ -58731,14 +58727,14 @@ var binaryCapability = {
58731
58727
  * controls to this single-method surface.
58732
58728
  *
58733
58729
  * The cap is intentionally minimal: a single `setBrightness({deviceId,
58734
- * percentage})` mutation plus the auto-injected `getStatus`. Drivers
58730
+ * level})` mutation plus the auto-injected `getStatus`. Drivers
58735
58731
  * that expose richer controls (color temperature, scenes, schedules)
58736
58732
  * should surface those via the device's `getSettingsUISchema()`
58737
58733
  * instead of bloating this cap.
58738
58734
  */
58739
58735
  var BrightnessStatusSchema = object({
58740
58736
  /** Current level as 0..100 inclusive. Firmware-reported. */
58741
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
58737
+ level: number().min(0).max(100).meta(readingMeta("percentage")),
58742
58738
  /** Ms epoch of the last operator-driven change. Useful for UI freshness. */
58743
58739
  lastChangedAt: number()
58744
58740
  });
@@ -58750,7 +58746,7 @@ var brightnessCapability = {
58750
58746
  deviceTypes: [DeviceType.Light],
58751
58747
  methods: { setBrightness: method(object({
58752
58748
  deviceId: number().int().nonnegative(),
58753
- percentage: number().min(0).max(100)
58749
+ level: number().min(0).max(100)
58754
58750
  }), _void(), {
58755
58751
  kind: "mutation",
58756
58752
  auth: "protected"
@@ -58763,7 +58759,7 @@ var brightnessCapability = {
58763
58759
  */
58764
58760
  onBrightnessChanged: { data: object({
58765
58761
  deviceId: number(),
58766
- percentage: number().min(0).max(100),
58762
+ level: number().min(0).max(100),
58767
58763
  lastChangedAt: number()
58768
58764
  }) } },
58769
58765
  status: {
@@ -58786,7 +58782,7 @@ onBrightnessChanged: { data: object({
58786
58782
  /**
58787
58783
  * History (D850): recorded series. Actuator tier: level keeps every change.
58788
58784
  */
58789
- history: { fields: { percentage: {
58785
+ history: { fields: { level: {
58790
58786
  kind: "gauge",
58791
58787
  unit: "%",
58792
58788
  minIntervalMs: 0
@@ -59400,11 +59396,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
59400
59396
  }),
59401
59397
  object({
59402
59398
  mode: literal("mired"),
59403
- mireds: number().int().min(50).max(1e3)
59399
+ colorTemperature: number().int().min(50).max(1e3)
59404
59400
  })
59405
59401
  ]);
59406
59402
  var ColorStatusSchema = object({
59407
- /** Active color mode — which of `rgb` / `hsv` / `mireds` reflects
59403
+ /** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
59408
59404
  * the bulb's current state. */
59409
59405
  mode: _enum([
59410
59406
  "rgb",
@@ -59416,7 +59412,7 @@ var ColorStatusSchema = object({
59416
59412
  /** Populated when `mode === 'hsv'`. */
59417
59413
  hsv: HsvTripletSchema.optional(),
59418
59414
  /** Populated when `mode === 'mired'`. */
59419
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
59415
+ colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
59420
59416
  /** Ms epoch of the last operator-driven change. */
59421
59417
  lastChangedAt: number()
59422
59418
  });
@@ -59448,7 +59444,7 @@ onColorChanged: { data: object({
59448
59444
  ]),
59449
59445
  rgb: RgbTripletSchema.optional(),
59450
59446
  hsv: HsvTripletSchema.optional(),
59451
- mireds: number().int().optional(),
59447
+ colorTemperature: number().int().optional(),
59452
59448
  lastChangedAt: number()
59453
59449
  }) } },
59454
59450
  status: {
@@ -60325,11 +60321,11 @@ var DishwasherStatusSchema = object({
60325
60321
  /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
60326
60322
  availablePrograms: array(string()),
60327
60323
  /** Seconds remaining on the active cycle, or null when not running / not known. */
60328
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60324
+ remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60329
60325
  /** Seconds the delayed start is set to (time until the cycle starts), or null. */
60330
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60326
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60331
60327
  /** Cycle completion 0..100, or null when not applicable. */
60332
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60328
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60333
60329
  /** True when the door is reported open; null when the door state is not known. */
60334
60330
  doorOpen: boolean().nullable(),
60335
60331
  /** True when the door is latched (locked) during a cycle; null when not reported. */
@@ -60548,14 +60544,14 @@ var dishwasherCapability = {
60548
60544
  runtimeState: DishwasherStatusSchema,
60549
60545
  durability: "session",
60550
60546
  history: { fields: {
60551
- progressPercent: {
60547
+ progress: {
60552
60548
  kind: "gauge",
60553
60549
  unit: "%",
60554
60550
  deadband: 2
60555
60551
  },
60556
60552
  state: { kind: "enum" },
60557
60553
  operationState: { kind: "enum" },
60558
- remainingSeconds: {
60554
+ remaining: {
60559
60555
  kind: "gauge",
60560
60556
  unit: "s",
60561
60557
  minIntervalMs: 6e4
@@ -61146,7 +61142,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
61146
61142
  var FanControlStatusSchema = object({
61147
61143
  /** Active speed as 0..100 inclusive. Null when the device has no
61148
61144
  * speed surface (single-speed fan). */
61149
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61145
+ speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61150
61146
  /** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
61151
61147
  * a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
61152
61148
  percentageStep: number().positive().optional().meta(readingMeta("percentage")),
@@ -61173,7 +61169,7 @@ var fanControlCapability = {
61173
61169
  methods: {
61174
61170
  setPercentage: method(object({
61175
61171
  deviceId: number().int().nonnegative(),
61176
- percentage: number().min(0).max(100)
61172
+ speed: number().min(0).max(100)
61177
61173
  }), _void(), {
61178
61174
  kind: "mutation",
61179
61175
  auth: "protected"
@@ -61206,7 +61202,7 @@ var fanControlCapability = {
61206
61202
  },
61207
61203
  /**
61208
61204
  * Runtime-state slice — mirrored by the kernel. UI fan speed
61209
- * sliders read `percentage` for live updates.
61205
+ * sliders read `speed` for live updates.
61210
61206
  */
61211
61207
  runtimeState: FanControlStatusSchema,
61212
61208
  /**
@@ -61220,7 +61216,7 @@ var fanControlCapability = {
61220
61216
  * History (D850): recorded series. Actuator tier: speed keeps every change.
61221
61217
  */
61222
61218
  history: { fields: {
61223
- percentage: {
61219
+ speed: {
61224
61220
  kind: "gauge",
61225
61221
  unit: "%",
61226
61222
  minIntervalMs: 0
@@ -61665,7 +61661,7 @@ var humidifierCapability = {
61665
61661
  */
61666
61662
  var HumiditySensorStatusSchema = object({
61667
61663
  /** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
61668
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
61664
+ humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
61669
61665
  precision: 0,
61670
61666
  label: "Humidity"
61671
61667
  })),
@@ -61694,7 +61690,7 @@ var humiditySensorCapability = {
61694
61690
  /**
61695
61691
  * History (D850): recorded series.
61696
61692
  */
61697
- history: { fields: { percent: {
61693
+ history: { fields: { humidity: {
61698
61694
  kind: "gauge",
61699
61695
  unit: "%",
61700
61696
  deadband: .5
@@ -62334,7 +62330,7 @@ var LawnMowerControlStatusSchema = object({
62334
62330
  batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62335
62331
  /** 0..100 mowing-completion percentage of the current task, or null when no
62336
62332
  * task is active / progress is unavailable. */
62337
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62333
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62338
62334
  /** Current device/event code (dynamic — mostly status, sometimes an error),
62339
62335
  * or null when unknown. */
62340
62336
  currentCode: number().nullable().meta(readingMeta("none")),
@@ -62834,7 +62830,7 @@ var lockControlCapability = {
62834
62830
  volatileStateFields: ["lastChangedAt"]
62835
62831
  };
62836
62832
  /**
62837
- * A monotonic total between resets (D944). Energy uses `power-meter.kwhTotal`
62833
+ * A monotonic total between resets (D944). Energy uses `power-meter.energy`
62838
62834
  * so dashboards keep one series; every other instantaneous reading lands here.
62839
62835
  * `value` is the time integral in the source quantity's accumulated base
62840
62836
  * (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
@@ -62928,10 +62924,10 @@ var MediaPlayerStatusSchema = object({
62928
62924
  currentMedia: MediaInfoSchema.nullable(),
62929
62925
  /** Current playback position in ms. Null when not seekable or
62930
62926
  * nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
62931
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62927
+ position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62932
62928
  /** Total duration of the current media in ms. Null when unknown
62933
62929
  * (live stream) or nothing is playing. */
62934
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62930
+ duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62935
62931
  /** Shuffle toggle. Null when no shuffle surface.
62936
62932
  * Pair with `DeviceFeature.MediaPlayerShuffle`. */
62937
62933
  shuffle: boolean().nullable(),
@@ -62970,7 +62966,7 @@ var mediaPlayerCapability = {
62970
62966
  }),
62971
62967
  seek: method(object({
62972
62968
  deviceId: number().int().nonnegative(),
62973
- positionMs: number().int().nonnegative()
62969
+ position: number().int().nonnegative()
62974
62970
  }), _void(), {
62975
62971
  kind: "mutation",
62976
62972
  auth: "protected"
@@ -63042,7 +63038,7 @@ var mediaPlayerCapability = {
63042
63038
  /**
63043
63039
  * History (D850): volume (a level an operator or an automation sets; the
63044
63040
  * default 10 s floor folds a slider drag into its end value) and mute.
63045
- * `positionMs` is not recorded: it moves continuously while playing.
63041
+ * `position` is not recorded: it moves continuously while playing.
63046
63042
  */
63047
63043
  history: { fields: {
63048
63044
  volumeLevel: {
@@ -64004,9 +64000,9 @@ var NetworkLinkStatusSchema = object({
64004
64000
  * one whose reading has not landed must not be drawn at 0 %. Consumers
64005
64001
  * SKIP a null rather than coerce it.
64006
64002
  */
64007
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
64003
+ signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
64008
64004
  /** Raw received signal strength in dBm, when the firmware reports one. */
64009
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
64005
+ rssi: number().optional().meta(readingMeta("signal-level")),
64010
64006
  /** Network name of a wireless link, when the firmware reports it. */
64011
64007
  ssid: string().optional(),
64012
64008
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
@@ -64042,7 +64038,7 @@ onStatusChanged: { data: object({
64042
64038
  kind: "push",
64043
64039
  empty: {
64044
64040
  type: "unknown",
64045
- signalPercent: null,
64041
+ signal: null,
64046
64042
  lastUpdated: 0
64047
64043
  }
64048
64044
  },
@@ -64065,13 +64061,13 @@ onStatusChanged: { data: object({
64065
64061
  * History (D850): recorded series.
64066
64062
  */
64067
64063
  history: { fields: {
64068
- signalPercent: {
64064
+ signal: {
64069
64065
  kind: "gauge",
64070
64066
  unit: "%",
64071
64067
  deadband: 3,
64072
64068
  minIntervalMs: 6e4
64073
64069
  },
64074
- rssiDbm: {
64070
+ rssi: {
64075
64071
  kind: "gauge",
64076
64072
  unit: "dBm",
64077
64073
  deadband: 2,
@@ -65391,16 +65387,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
65391
65387
  * in real-world devices.
65392
65388
  */
65393
65389
  var PowerMeterStatusSchema = object({
65394
- /** Instantaneous power draw in watts. */
65395
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
65390
+ /** Instantaneous power draw (watts). */
65391
+ power: number().optional().meta(readingMeta("power", { label: "Power" })),
65396
65392
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
65397
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
65398
- /** Voltage in volts. */
65399
- volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
65393
+ energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
65394
+ /** Voltage (volts). */
65395
+ voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
65400
65396
  /** Current in amperes. */
65401
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
65397
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
65402
65398
  /** Apparent power in volt-amperes. */
65403
- va: number().optional().meta(readingMeta("apparent-power")),
65399
+ apparentPower: number().optional().meta(readingMeta("apparent-power")),
65404
65400
  /** Power factor (0..1) if reported. */
65405
65401
  powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
65406
65402
  /** Ms epoch when the slice was last updated. */
@@ -65458,14 +65454,14 @@ function powerTarget(id, unit) {
65458
65454
  advancedExpression: true
65459
65455
  };
65460
65456
  }
65461
- /** "Power and energy" extension: watts, energy, voltage and current from other devices (D951). */
65457
+ /** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
65462
65458
  var powerMeterCustomize = {
65463
65459
  version: 1,
65464
65460
  targets: [
65465
- powerTarget("watts", "W"),
65466
- powerTarget("kwhTotal", "kWh"),
65467
- powerTarget("volts", "V"),
65468
- powerTarget("amps", "A")
65461
+ powerTarget("power", "W"),
65462
+ powerTarget("energy", "kWh"),
65463
+ powerTarget("voltage", "V"),
65464
+ powerTarget("current", "A")
65469
65465
  ]
65470
65466
  };
65471
65467
  var powerMeterCapability = {
@@ -65481,41 +65477,41 @@ var powerMeterCapability = {
65481
65477
  },
65482
65478
  runtimeState: PowerMeterStatusSchema,
65483
65479
  /**
65484
- * Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
65480
+ * Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
65485
65481
  *
65486
65482
  * See `RuntimeStateDurability`. Enforced by
65487
65483
  * `scripts/check-runtime-state-durability.ts`.
65488
65484
  */
65489
65485
  durability: "restored",
65490
65486
  /**
65491
- * History (D850): recorded series. Gauges are floored at 30 s; `kwhTotal` is the one monotonic meter (counter).
65487
+ * History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
65492
65488
  */
65493
65489
  history: { fields: {
65494
- watts: {
65490
+ power: {
65495
65491
  kind: "gauge",
65496
65492
  unit: "W",
65497
65493
  deadband: 1,
65498
65494
  minIntervalMs: 3e4
65499
65495
  },
65500
- kwhTotal: {
65496
+ energy: {
65501
65497
  kind: "counter",
65502
65498
  unit: "kWh",
65503
65499
  deadband: .01,
65504
65500
  minIntervalMs: 6e4
65505
65501
  },
65506
- volts: {
65502
+ voltage: {
65507
65503
  kind: "gauge",
65508
65504
  unit: "V",
65509
65505
  deadband: 1,
65510
65506
  minIntervalMs: 3e4
65511
65507
  },
65512
- amps: {
65508
+ current: {
65513
65509
  kind: "gauge",
65514
65510
  unit: "A",
65515
65511
  deadband: .05,
65516
65512
  minIntervalMs: 3e4
65517
65513
  },
65518
- va: {
65514
+ apparentPower: {
65519
65515
  kind: "gauge",
65520
65516
  unit: "VA",
65521
65517
  deadband: 1,
@@ -65565,9 +65561,6 @@ var PresenceStatusSchema = object({
65565
65561
  location: string().nullable(),
65566
65562
  /** GPS coordinates when available. Null otherwise. */
65567
65563
  gps: GpsLocationSchema.nullable(),
65568
- /** Optional battery level of the tracking device (0..100). Null
65569
- * when not reported. */
65570
- batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65571
65564
  /** Ms epoch when the slice was last updated. */
65572
65565
  lastChangedAt: number()
65573
65566
  });
@@ -65596,14 +65589,7 @@ var presenceCapability = {
65596
65589
  * `scripts/check-runtime-state-durability.ts`.
65597
65590
  */
65598
65591
  durability: "restored",
65599
- /**
65600
- * History (D850): recorded series.
65601
- */
65602
- history: { fields: { batteryPercent: {
65603
- kind: "gauge",
65604
- unit: "%",
65605
- deadband: 1
65606
- } } },
65592
+ history: "none",
65607
65593
  /** Clock fields: written, but excluded from the compare that decides
65608
65594
  * whether persisting is worth a SQLite commit. */
65609
65595
  volatileStateFields: ["lastChangedAt"]
@@ -65618,7 +65604,7 @@ var presenceCapability = {
65618
65604
  */
65619
65605
  var PressureSensorStatusSchema = object({
65620
65606
  /** Current pressure in hPa. `null` when the sample was refused (D393). */
65621
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
65607
+ pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
65622
65608
  /** Ms epoch when the slice was last updated. */
65623
65609
  lastFetchedAt: number()
65624
65610
  });
@@ -65644,7 +65630,7 @@ var pressureSensorCapability = {
65644
65630
  /**
65645
65631
  * History (D850): recorded series.
65646
65632
  */
65647
- history: { fields: { hpa: {
65633
+ history: { fields: { pressure: {
65648
65634
  kind: "gauge",
65649
65635
  unit: "hPa",
65650
65636
  deadband: .1
@@ -69343,7 +69329,7 @@ var tamperCapability = {
69343
69329
  */
69344
69330
  var TemperatureSensorStatusSchema = object({
69345
69331
  /** Current temperature in Celsius. `null` when the sample was refused (D393). */
69346
- celsius: number().nullable().meta(readingMeta("temperature", {
69332
+ temperature: number().nullable().meta(readingMeta("temperature", {
69347
69333
  precision: 1,
69348
69334
  label: "Temperature"
69349
69335
  })),
@@ -69372,7 +69358,7 @@ var temperatureSensorCapability = {
69372
69358
  /**
69373
69359
  * History (D850): recorded series.
69374
69360
  */
69375
- history: { fields: { celsius: {
69361
+ history: { fields: { temperature: {
69376
69362
  kind: "gauge",
69377
69363
  unit: "°C",
69378
69364
  deadband: .1
@@ -69669,7 +69655,7 @@ var VacuumControlStatusSchema = object({
69669
69655
  /** Speed tokens the hardware accepts — drives the UI selector. */
69670
69656
  availableFanSpeeds: array(string()),
69671
69657
  /** 0..100 cleaning-completion percentage of the current task, or null. */
69672
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
69658
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
69673
69659
  /** Current error code (0 / null = no error). */
69674
69660
  errorCode: number().nullable().meta(readingMeta("none")),
69675
69661
  /** Human label for {@link errorCode}, or null when none / undecodable. */
@@ -71323,7 +71309,7 @@ var BaseDevice = class {
71323
71309
  * `device-local-state.ts`. Drivers access via:
71324
71310
  *
71325
71311
  * `this.state.battery.sleeping = true` // patches the battery slice
71326
- * `const pct = this.state.battery.percentage` // reads the battery slice
71312
+ * `const pct = this.state.battery.level` // reads the battery slice
71327
71313
  * `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
71328
71314
  *
71329
71315
  * Adding a new cap with `runtimeState:` automatically extends this
@@ -71363,7 +71349,7 @@ var BaseDevice = class {
71363
71349
  * shape; drivers don't redeclare it, they just write through.
71364
71350
  *
71365
71351
  * Read: `this.runtimeState.getCapState('battery')` →
71366
- * `{percentage, charging, sleeping, lastUpdated}` for any
71352
+ * `{level, charging, sleeping, lastUpdated}` for any
71367
71353
  * provider that registers `batteryCapability`.
71368
71354
  * Write: `this.runtimeState.setCapState('battery', { … })`.
71369
71355
  *
@@ -82566,7 +82552,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82566
82552
  label: t("Full brightness", "Luminosità massima"),
82567
82553
  phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
82568
82554
  icon: "sun",
82569
- args: { percentage: 100 }
82555
+ args: { level: 100 }
82570
82556
  },
82571
82557
  {
82572
82558
  id: "brightness.half",
@@ -82574,7 +82560,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82574
82560
  label: t("Half brightness", "Luminosità a metà"),
82575
82561
  phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
82576
82562
  icon: "sun-dim",
82577
- args: { percentage: 50 }
82563
+ args: { level: 50 }
82578
82564
  },
82579
82565
  {
82580
82566
  id: "brightness.off",
@@ -82582,16 +82568,16 @@ var ACTUATOR_CAP_VOCABULARY = {
82582
82568
  label: t("Brightness off", "Luminosità a zero"),
82583
82569
  phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
82584
82570
  icon: "lightbulb-off",
82585
- args: { percentage: 0 }
82571
+ args: { level: 0 }
82586
82572
  },
82587
82573
  {
82588
82574
  id: "brightness.set",
82589
82575
  method: "setBrightness",
82590
82576
  label: t("Set brightness", "Imposta la luminosità"),
82591
- phrase: t("Set the brightness of {device} to {percentage}", "Imposta la luminosità di {device} a {percentage}"),
82577
+ phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
82592
82578
  icon: "sun-medium",
82593
82579
  openArgs: [{
82594
- key: "percentage",
82580
+ key: "level",
82595
82581
  label: PERCENT,
82596
82582
  offer: {
82597
82583
  kind: "number",
@@ -82605,13 +82591,13 @@ var ACTUATOR_CAP_VOCABULARY = {
82605
82591
  ],
82606
82592
  state: [{
82607
82593
  kind: "numeric",
82608
- field: "percentage",
82594
+ field: "level",
82609
82595
  quantity: t("the brightness", "la luminosità"),
82610
82596
  label: t("Brightness", "Luminosità"),
82611
82597
  unit: "%",
82612
82598
  icon: "sun"
82613
82599
  }],
82614
- events: { onBrightnessChanged: { notOperatorFacing: "the `percentage` state trigger reads the same change" } }
82600
+ events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
82615
82601
  },
82616
82602
  color: {
82617
82603
  scope: "device",
@@ -82625,7 +82611,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82625
82611
  icon: "sun",
82626
82612
  args: { color: {
82627
82613
  mode: "mired",
82628
- mireds: 370
82614
+ colorTemperature: 370
82629
82615
  } }
82630
82616
  },
82631
82617
  {
@@ -82636,7 +82622,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82636
82622
  icon: "snowflake",
82637
82623
  args: { color: {
82638
82624
  mode: "mired",
82639
- mireds: 200
82625
+ colorTemperature: 200
82640
82626
  } }
82641
82627
  },
82642
82628
  {
@@ -83250,7 +83236,7 @@ var ACTUATOR_CAP_VOCABULARY = {
83250
83236
  label: t("Fan off", "Ventilatore spento"),
83251
83237
  phrase: t("Stop {device}", "Ferma {device}"),
83252
83238
  icon: "power-off",
83253
- args: { percentage: 0 }
83239
+ args: { speed: 0 }
83254
83240
  },
83255
83241
  {
83256
83242
  id: "fan.full",
@@ -83258,16 +83244,16 @@ var ACTUATOR_CAP_VOCABULARY = {
83258
83244
  label: t("Fan full", "Ventilatore al massimo"),
83259
83245
  phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
83260
83246
  icon: "fan",
83261
- args: { percentage: 100 }
83247
+ args: { speed: 100 }
83262
83248
  },
83263
83249
  {
83264
83250
  id: "fan.speed",
83265
83251
  method: "setPercentage",
83266
83252
  label: t("Set speed", "Imposta la velocità"),
83267
- phrase: t("Set the speed of {device} to {percentage}", "Imposta la velocità di {device} al {percentage}"),
83253
+ phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
83268
83254
  icon: "fan",
83269
83255
  openArgs: [{
83270
- key: "percentage",
83256
+ key: "speed",
83271
83257
  label: t("Speed", "Velocità"),
83272
83258
  offer: {
83273
83259
  kind: "number",
@@ -83329,7 +83315,7 @@ var ACTUATOR_CAP_VOCABULARY = {
83329
83315
  ],
83330
83316
  state: [{
83331
83317
  kind: "numeric",
83332
- field: "percentage",
83318
+ field: "speed",
83333
83319
  quantity: t("the speed", "la velocità"),
83334
83320
  label: t("Speed", "Velocità"),
83335
83321
  unit: "%",
@@ -84127,7 +84113,7 @@ var APPLIANCE_CAP_VOCABULARY = {
84127
84113
  },
84128
84114
  {
84129
84115
  kind: "numeric",
84130
- field: "progressPercent",
84116
+ field: "progress",
84131
84117
  quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
84132
84118
  label: t("Progress", "Avanzamento"),
84133
84119
  unit: "%",
@@ -84485,10 +84471,10 @@ var APPLIANCE_CAP_VOCABULARY = {
84485
84471
  id: "media.seek",
84486
84472
  method: "seek",
84487
84473
  label: t("Seek", "Vai al punto"),
84488
- phrase: t("Move {device} to {positionMs}", "Porta {device} al punto {positionMs}"),
84474
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
84489
84475
  icon: "fast-forward",
84490
84476
  openArgs: [{
84491
- key: "positionMs",
84477
+ key: "position",
84492
84478
  label: t("Position", "Posizione"),
84493
84479
  offer: {
84494
84480
  kind: "number",
@@ -85537,7 +85523,7 @@ var SENSOR_CAP_VOCABULARY = {
85537
85523
  state: [
85538
85524
  {
85539
85525
  kind: "numeric",
85540
- field: "co2Ppm",
85526
+ field: "co2",
85541
85527
  quantity: t("the CO₂", "la CO₂"),
85542
85528
  label: t("CO₂", "CO₂"),
85543
85529
  unit: "ppm",
@@ -85545,7 +85531,7 @@ var SENSOR_CAP_VOCABULARY = {
85545
85531
  },
85546
85532
  {
85547
85533
  kind: "numeric",
85548
- field: "vocPpb",
85534
+ field: "voc",
85549
85535
  quantity: t("the VOC level", "il livello di COV"),
85550
85536
  label: t("VOC", "COV"),
85551
85537
  unit: "ppb",
@@ -85581,7 +85567,7 @@ var SENSOR_CAP_VOCABULARY = {
85581
85567
  noun: t("Light level", "Luminosità ambiente"),
85582
85568
  state: [{
85583
85569
  kind: "numeric",
85584
- field: "lux",
85570
+ field: "illuminance",
85585
85571
  quantity: t("the light level", "la luminosità"),
85586
85572
  label: t("Illuminance", "Illuminamento"),
85587
85573
  unit: "lx",
@@ -85784,7 +85770,7 @@ var SENSOR_CAP_VOCABULARY = {
85784
85770
  noun: t("Humidity", "Umidità"),
85785
85771
  state: [{
85786
85772
  kind: "numeric",
85787
- field: "percent",
85773
+ field: "humidity",
85788
85774
  quantity: t("the humidity", "l’umidità"),
85789
85775
  label: t("Humidity", "Umidità"),
85790
85776
  unit: "%",
@@ -85832,7 +85818,7 @@ var SENSOR_CAP_VOCABULARY = {
85832
85818
  state: [
85833
85819
  {
85834
85820
  kind: "numeric",
85835
- field: "watts",
85821
+ field: "power",
85836
85822
  quantity: t("the power draw", "il consumo"),
85837
85823
  label: t("Power", "Potenza"),
85838
85824
  unit: "W",
@@ -85840,7 +85826,7 @@ var SENSOR_CAP_VOCABULARY = {
85840
85826
  },
85841
85827
  {
85842
85828
  kind: "numeric",
85843
- field: "kwhTotal",
85829
+ field: "energy",
85844
85830
  quantity: t("the energy used", "l’energia consumata"),
85845
85831
  label: t("Energy", "Energia"),
85846
85832
  unit: "kWh",
@@ -85848,7 +85834,7 @@ var SENSOR_CAP_VOCABULARY = {
85848
85834
  },
85849
85835
  {
85850
85836
  kind: "numeric",
85851
- field: "volts",
85837
+ field: "voltage",
85852
85838
  quantity: t("the voltage", "la tensione"),
85853
85839
  label: t("Voltage", "Tensione"),
85854
85840
  unit: "V",
@@ -85856,7 +85842,7 @@ var SENSOR_CAP_VOCABULARY = {
85856
85842
  },
85857
85843
  {
85858
85844
  kind: "numeric",
85859
- field: "amps",
85845
+ field: "current",
85860
85846
  quantity: t("the current", "la corrente"),
85861
85847
  label: t("Current", "Corrente"),
85862
85848
  unit: "A",
@@ -85873,13 +85859,6 @@ var SENSOR_CAP_VOCABULARY = {
85873
85859
  label: t("Where", "Posizione"),
85874
85860
  phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
85875
85861
  icon: "map-pin"
85876
- }, {
85877
- kind: "numeric",
85878
- field: "batteryPercent",
85879
- quantity: t("the phone battery", "la batteria del telefono"),
85880
- label: t("Battery", "Batteria"),
85881
- unit: "%",
85882
- icon: "battery"
85883
85862
  }]
85884
85863
  },
85885
85864
  "pressure-sensor": {
@@ -85887,7 +85866,7 @@ var SENSOR_CAP_VOCABULARY = {
85887
85866
  noun: t("Pressure", "Pressione"),
85888
85867
  state: [{
85889
85868
  kind: "numeric",
85890
- field: "hpa",
85869
+ field: "pressure",
85891
85870
  quantity: t("the pressure", "la pressione"),
85892
85871
  label: t("Pressure", "Pressione"),
85893
85872
  unit: "hPa",
@@ -85923,7 +85902,7 @@ var SENSOR_CAP_VOCABULARY = {
85923
85902
  noun: t("Temperature", "Temperatura"),
85924
85903
  state: [{
85925
85904
  kind: "numeric",
85926
- field: "celsius",
85905
+ field: "temperature",
85927
85906
  quantity: t("the temperature", "la temperatura"),
85928
85907
  label: t("Temperature", "Temperatura"),
85929
85908
  unit: "°C",
@@ -85994,7 +85973,7 @@ var SENSOR_CAP_VOCABULARY = {
85994
85973
  state: [
85995
85974
  {
85996
85975
  kind: "numeric",
85997
- field: "percentage",
85976
+ field: "level",
85998
85977
  quantity: t("the battery level", "il livello della batteria"),
85999
85978
  label: t("Battery", "Batteria"),
86000
85979
  unit: "%",
@@ -86036,7 +86015,7 @@ var SENSOR_CAP_VOCABULARY = {
86036
86015
  icon: "battery-charging"
86037
86016
  }
86038
86017
  ],
86039
- events: { onStatusChanged: { notOperatorFacing: "the percentage / sleeping / charging state triggers each read one field of this change" } },
86018
+ events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
86040
86019
  extraEvents: [{
86041
86020
  category: EventCategory.DeviceAwake,
86042
86021
  label: t("Woke up", "Risvegliato"),
@@ -86054,7 +86033,7 @@ var SENSOR_CAP_VOCABULARY = {
86054
86033
  noun: t("Network link", "Collegamento di rete"),
86055
86034
  state: [{
86056
86035
  kind: "numeric",
86057
- field: "signalPercent",
86036
+ field: "signal",
86058
86037
  quantity: t("the signal strength", "l’intensità del segnale"),
86059
86038
  label: t("Signal", "Segnale"),
86060
86039
  unit: "%",
@@ -134769,7 +134748,7 @@ var KNOWN_CAPS = new Set([
134769
134748
  * {@link alexaAccounts}; each `getStatus` prefers the latest decoded live value
134770
134749
  * (via `alexa-state-to-cap`) and falls back to the runtime/cold slice when a
134771
134750
  * property hasn't been polled yet — e.g. PowerController.powerState 'ON' →
134772
- * switch.on, BrightnessController.brightness 0..100 → brightness.percentage,
134751
+ * switch.on, BrightnessController.brightness 0..100 → brightness.level,
134773
134752
  * ContactSensor.detectionState 'DETECTED' → contact.entryOpen.
134774
134753
  *
134775
134754
  * TODO(caps): 'climate-control' (ThermostatController), 'control'
@@ -134853,7 +134832,7 @@ var AlexaDevice = class extends BaseDevice {
134853
134832
  }
134854
134833
  registerBrightness() {
134855
134834
  const COLD = {
134856
- percentage: 0,
134835
+ level: 0,
134857
134836
  lastChangedAt: 0
134858
134837
  };
134859
134838
  this.ctx.registerNativeCap(brightnessCapability, {
@@ -134862,14 +134841,14 @@ var AlexaDevice = class extends BaseDevice {
134862
134841
  const live = decodePercentage(this.liveState("Alexa.BrightnessController", "brightness"));
134863
134842
  return live === null ? cached : {
134864
134843
  ...cached,
134865
- percentage: live
134844
+ level: live
134866
134845
  };
134867
134846
  },
134868
- setBrightness: async ({ percentage }) => {
134847
+ setBrightness: async ({ level: percentage }) => {
134869
134848
  const brightness = Math.round(Math.max(0, Math.min(100, percentage)));
134870
134849
  await this.command("Alexa.BrightnessController", "SetBrightness", { brightness });
134871
134850
  this.runtimeState.setCapState("brightness", {
134872
- percentage,
134851
+ level: percentage,
134873
134852
  lastChangedAt: Date.now()
134874
134853
  });
134875
134854
  }
@@ -135023,7 +135002,7 @@ var AlexaDevice = class extends BaseDevice {
135023
135002
  }
135024
135003
  registerTemperatureSensor() {
135025
135004
  const COLD = {
135026
- celsius: 0,
135005
+ temperature: 0,
135027
135006
  lastFetchedAt: 0
135028
135007
  };
135029
135008
  this.ctx.registerNativeCap(temperatureSensorCapability, { getStatus: async () => {
@@ -135031,14 +135010,14 @@ var AlexaDevice = class extends BaseDevice {
135031
135010
  const live = decodeTemperatureCelsius(this.liveState("Alexa.TemperatureSensor", "temperature"));
135032
135011
  return live === null ? cached : {
135033
135012
  ...cached,
135034
- celsius: live
135013
+ temperature: live
135035
135014
  };
135036
135015
  } });
135037
135016
  this.runtimeState.setCapState("temperature-sensor", COLD);
135038
135017
  }
135039
135018
  registerHumiditySensor() {
135040
135019
  const COLD = {
135041
- percent: 0,
135020
+ humidity: 0,
135042
135021
  lastFetchedAt: 0
135043
135022
  };
135044
135023
  this.ctx.registerNativeCap(humiditySensorCapability, { getStatus: async () => {
@@ -135046,7 +135025,7 @@ var AlexaDevice = class extends BaseDevice {
135046
135025
  const live = decodeHumidityPercent(this.liveState("Alexa.HumiditySensor", "humidity"));
135047
135026
  return live === null ? cached : {
135048
135027
  ...cached,
135049
- percent: live
135028
+ humidity: live
135050
135029
  };
135051
135030
  } });
135052
135031
  this.runtimeState.setCapState("humidity-sensor", COLD);