@camstack/addon-import-alexa 0.2.160 → 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.
Files changed (18) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{MotionZonesSettings-TwgbETGR.mjs → MotionZonesSettings-ByDKuk5o.mjs} +2 -2
  3. package/dist/{PrivacyMaskSettings-BoNkDD5o.mjs → PrivacyMaskSettings-Cn-_9Syv.mjs} +4 -4
  4. package/dist/{SceneMonitorEditor-4TxlnJK0.mjs → SceneMonitorEditor-jDMtE1yg.mjs} +3 -3
  5. package/dist/_stub.js +51 -51
  6. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_import_alexa_page-CZPqws-b.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_import_alexa_page-Ck3EMdmv.mjs} +3 -3
  7. package/dist/{_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bj2TfHO6.mjs → _virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DE1dtKjc.mjs} +1 -1
  8. package/dist/addon.js +173 -173
  9. package/dist/addon.mjs +173 -173
  10. package/dist/{hostInit-Datq9hsz.mjs → hostInit-CoSVGWK6.mjs} +2 -2
  11. package/dist/{player-overlays-VaUrkkRt.mjs → player-overlays-CcdvNfxc.mjs} +1 -1
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-D9B1kcZz.mjs → responsive-BmleF5y2.mjs} +1 -1
  14. package/dist/{scene-monitor-copy-CunyuMVK.mjs → scene-monitor-copy-BEZSY5WG.mjs} +1 -1
  15. package/dist/{square-CuVo4SNm.mjs → square-DZHhUhzl.mjs} +1 -1
  16. package/dist/{trash-2-Bjze04-b.mjs → trash-2-BVrrPiKB.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_import_alexa_page__remoteEntry_js-BY9vB6pT.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_import_alexa_page__remoteEntry_js-BA8fy0_J.mjs} +1 -1
  18. package/package.json +1 -1
package/dist/addon.mjs CHANGED
@@ -45,7 +45,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
45
45
  var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
46
46
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
47
47
  //#endregion
48
- //#region ../types/dist/event-category-hdMR7CTW.mjs
48
+ //#region ../types/dist/event-category-DmZDPDf_.mjs
49
49
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
50
50
  EventCategory["SystemBoot"] = "system.boot";
51
51
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -672,7 +672,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
672
672
  * (a track was promoted to a stationary-registry entry) or departs (the
673
673
  * object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
674
674
  * the dedicated "Stationary" section — never the live event feed. Payload:
675
- * `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
675
+ * `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp, observedAt, zones }`.
676
676
  */
677
677
  EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
678
678
  /**
@@ -5626,7 +5626,7 @@ var ZodIssueCode = {
5626
5626
  var ZodFirstPartyTypeKind;
5627
5627
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5628
5628
  //#endregion
5629
- //#region ../types/dist/sleep-BHjNez61.mjs
5629
+ //#region ../types/dist/sleep-Crlmu_tO.mjs
5630
5630
  /**
5631
5631
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5632
5632
  * window to float samples (D455).
@@ -9146,11 +9146,11 @@ var CAP_NAMES = Object.freeze([
9146
9146
  Object.freeze({
9147
9147
  "air-quality-sensor": [
9148
9148
  {
9149
- "path": "co2Ppm",
9149
+ "path": "co2",
9150
9150
  "valueType": "number"
9151
9151
  },
9152
9152
  {
9153
- "path": "vocPpb",
9153
+ "path": "voc",
9154
9154
  "valueType": "number"
9155
9155
  },
9156
9156
  {
@@ -9200,7 +9200,7 @@ Object.freeze({
9200
9200
  }
9201
9201
  ],
9202
9202
  "ambient-light-sensor": [{
9203
- "path": "lux",
9203
+ "path": "illuminance",
9204
9204
  "valueType": "number"
9205
9205
  }],
9206
9206
  "audio-metrics": [
@@ -9261,7 +9261,7 @@ Object.freeze({
9261
9261
  ],
9262
9262
  "battery": [
9263
9263
  {
9264
- "path": "percentage",
9264
+ "path": "level",
9265
9265
  "valueType": "number"
9266
9266
  },
9267
9267
  {
@@ -9283,7 +9283,7 @@ Object.freeze({
9283
9283
  "valueType": "number"
9284
9284
  },
9285
9285
  {
9286
- "path": "volts",
9286
+ "path": "voltage",
9287
9287
  "valueType": "number"
9288
9288
  },
9289
9289
  {
@@ -9304,7 +9304,7 @@ Object.freeze({
9304
9304
  "valueType": "boolean"
9305
9305
  }],
9306
9306
  "brightness": [{
9307
- "path": "percentage",
9307
+ "path": "level",
9308
9308
  "valueType": "number"
9309
9309
  }],
9310
9310
  "broker": [{
@@ -9505,7 +9505,7 @@ Object.freeze({
9505
9505
  "valueType": "number"
9506
9506
  },
9507
9507
  {
9508
- "path": "mireds",
9508
+ "path": "colorTemperature",
9509
9509
  "valueType": "number"
9510
9510
  }
9511
9511
  ],
@@ -9684,15 +9684,15 @@ Object.freeze({
9684
9684
  "valueType": "string"
9685
9685
  },
9686
9686
  {
9687
- "path": "remainingSeconds",
9687
+ "path": "remaining",
9688
9688
  "valueType": "number"
9689
9689
  },
9690
9690
  {
9691
- "path": "delayedStartSeconds",
9691
+ "path": "delayedStart",
9692
9692
  "valueType": "number"
9693
9693
  },
9694
9694
  {
9695
- "path": "progressPercent",
9695
+ "path": "progress",
9696
9696
  "valueType": "number"
9697
9697
  },
9698
9698
  {
@@ -9806,7 +9806,7 @@ Object.freeze({
9806
9806
  ],
9807
9807
  "fan-control": [
9808
9808
  {
9809
- "path": "percentage",
9809
+ "path": "speed",
9810
9810
  "valueType": "number"
9811
9811
  },
9812
9812
  {
@@ -9906,7 +9906,7 @@ Object.freeze({
9906
9906
  }
9907
9907
  ],
9908
9908
  "humidity-sensor": [{
9909
- "path": "percent",
9909
+ "path": "humidity",
9910
9910
  "valueType": "number"
9911
9911
  }],
9912
9912
  "image": [{
@@ -10016,7 +10016,7 @@ Object.freeze({
10016
10016
  "valueType": "number"
10017
10017
  },
10018
10018
  {
10019
- "path": "progressPercent",
10019
+ "path": "progress",
10020
10020
  "valueType": "number"
10021
10021
  },
10022
10022
  {
@@ -10095,11 +10095,11 @@ Object.freeze({
10095
10095
  "valueType": "string"
10096
10096
  },
10097
10097
  {
10098
- "path": "positionMs",
10098
+ "path": "position",
10099
10099
  "valueType": "number"
10100
10100
  },
10101
10101
  {
10102
- "path": "durationMs",
10102
+ "path": "duration",
10103
10103
  "valueType": "number"
10104
10104
  },
10105
10105
  {
@@ -10201,11 +10201,11 @@ Object.freeze({
10201
10201
  ]
10202
10202
  },
10203
10203
  {
10204
- "path": "signalPercent",
10204
+ "path": "signal",
10205
10205
  "valueType": "number"
10206
10206
  },
10207
10207
  {
10208
- "path": "rssiDbm",
10208
+ "path": "rssi",
10209
10209
  "valueType": "number"
10210
10210
  },
10211
10211
  {
@@ -10336,23 +10336,23 @@ Object.freeze({
10336
10336
  ],
10337
10337
  "power-meter": [
10338
10338
  {
10339
- "path": "watts",
10339
+ "path": "power",
10340
10340
  "valueType": "number"
10341
10341
  },
10342
10342
  {
10343
- "path": "kwhTotal",
10343
+ "path": "energy",
10344
10344
  "valueType": "number"
10345
10345
  },
10346
10346
  {
10347
- "path": "volts",
10347
+ "path": "voltage",
10348
10348
  "valueType": "number"
10349
10349
  },
10350
10350
  {
10351
- "path": "amps",
10351
+ "path": "current",
10352
10352
  "valueType": "number"
10353
10353
  },
10354
10354
  {
10355
- "path": "va",
10355
+ "path": "apparentPower",
10356
10356
  "valueType": "number"
10357
10357
  },
10358
10358
  {
@@ -10380,14 +10380,10 @@ Object.freeze({
10380
10380
  {
10381
10381
  "path": "gps.accuracyMeters",
10382
10382
  "valueType": "number"
10383
- },
10384
- {
10385
- "path": "batteryPercent",
10386
- "valueType": "number"
10387
10383
  }
10388
10384
  ],
10389
10385
  "pressure-sensor": [{
10390
- "path": "hpa",
10386
+ "path": "pressure",
10391
10387
  "valueType": "number"
10392
10388
  }],
10393
10389
  "privacy-mask": [{
@@ -10701,7 +10697,7 @@ Object.freeze({
10701
10697
  "valueType": "boolean"
10702
10698
  }],
10703
10699
  "temperature-sensor": [{
10704
- "path": "celsius",
10700
+ "path": "temperature",
10705
10701
  "valueType": "number"
10706
10702
  }],
10707
10703
  "update": [
@@ -10749,7 +10745,7 @@ Object.freeze({
10749
10745
  "valueType": "string"
10750
10746
  },
10751
10747
  {
10752
- "path": "progressPercent",
10748
+ "path": "progress",
10753
10749
  "valueType": "number"
10754
10750
  },
10755
10751
  {
@@ -11234,7 +11230,7 @@ function errMsg(err) {
11234
11230
  return String(err);
11235
11231
  }
11236
11232
  //#endregion
11237
- //#region ../types/dist/composition-Bb8iwHEJ.mjs
11233
+ //#region ../types/dist/composition-CZImLpOI.mjs
11238
11234
  /**
11239
11235
  * The ffmpeg build every CamStack node downloads, per platform and arch.
11240
11236
  *
@@ -15871,6 +15867,14 @@ var AutomationConditionLeafSchema = object({
15871
15867
  array(union([string(), number()]))
15872
15868
  ])
15873
15869
  });
15870
+ var AutomationConditionStationaryPresentSchema = object({
15871
+ kind: literal("stationary-present"),
15872
+ deviceId: number().int().nonnegative(),
15873
+ /** Class names; a macro class matches every raw class that maps to it. */
15874
+ classes: array(string().min(1)).min(1).optional(),
15875
+ /** The parked object must be in at least one of these zones. */
15876
+ zones: array(string().min(1)).min(1).optional()
15877
+ });
15874
15878
  /**
15875
15879
  * The expression leaf, declared as a plain object rather than an intersection
15876
15880
  * with {@link ExpressionSourceSchema}: a discriminated union has to be able to
@@ -15904,7 +15908,8 @@ var AutomationConditionSchema = lazy(() => discriminatedUnion("kind", [
15904
15908
  child: AutomationConditionSchema
15905
15909
  }),
15906
15910
  AutomationConditionLeafSchema,
15907
- AutomationConditionExpressionSchema
15911
+ AutomationConditionExpressionSchema,
15912
+ AutomationConditionStationaryPresentSchema
15908
15913
  ]));
15909
15914
  /**
15910
15915
  * What starts a run.
@@ -15958,6 +15963,17 @@ var AutomationTriggerSchema = discriminatedUnion("kind", [
15958
15963
  /** Best-so-far confidence the track must reach. */
15959
15964
  minScore: number().min(0).max(1).optional()
15960
15965
  }),
15966
+ object({
15967
+ kind: literal("stationary"),
15968
+ deviceIds: array(number().int().nonnegative()).min(1),
15969
+ /** Class names; a macro class matches like the detection trigger. */
15970
+ classes: array(string().min(1)).min(1).optional(),
15971
+ /** The parked object must be in at least one of these zones. */
15972
+ zones: array(string().min(1)).min(1).optional(),
15973
+ /** `appeared`: it became parked. `departed`: the registry retired it.
15974
+ * The vocabulary of `PipelineAnalyticsStationaryChanged`. */
15975
+ phase: _enum(["appeared", "departed"])
15976
+ }),
15961
15977
  object({
15962
15978
  kind: literal("interval"),
15963
15979
  minutes: number().int().min(1).max(1440)
@@ -16167,7 +16183,8 @@ var AutomationConditionTraceNodeSchema = object({
16167
16183
  "any",
16168
16184
  "not",
16169
16185
  "condition",
16170
- "expression"
16186
+ "expression",
16187
+ "stationary-present"
16171
16188
  ]),
16172
16189
  outcome: TraceNodeOutcomeSchema,
16173
16190
  reason: string(),
@@ -19151,7 +19168,7 @@ var CompositionEventPlanSchema = object({
19151
19168
  stateField: string(),
19152
19169
  fieldKey: string()
19153
19170
  });
19154
- /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
19171
+ /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
19155
19172
  var CompositionProblemSchema = object({
19156
19173
  code: _enum([
19157
19174
  "reserved-variant",
@@ -19470,7 +19487,7 @@ var GROUP_TEMPLATES = [
19470
19487
  summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
19471
19488
  role: DeviceRole.TemperatureSensor,
19472
19489
  outputCap: "temperature-sensor",
19473
- outputField: "celsius",
19490
+ outputField: "temperature",
19474
19491
  quantity: "temperature",
19475
19492
  defaultAggregate: "mean",
19476
19493
  empty: "null",
@@ -19481,7 +19498,7 @@ var GROUP_TEMPLATES = [
19481
19498
  summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
19482
19499
  role: DeviceRole.HumiditySensor,
19483
19500
  outputCap: "humidity-sensor",
19484
- outputField: "percent",
19501
+ outputField: "humidity",
19485
19502
  quantity: "humidity",
19486
19503
  defaultAggregate: "mean",
19487
19504
  empty: "null",
@@ -19492,7 +19509,7 @@ var GROUP_TEMPLATES = [
19492
19509
  summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
19493
19510
  role: DeviceRole.PressureSensor,
19494
19511
  outputCap: "pressure-sensor",
19495
- outputField: "hpa",
19512
+ outputField: "pressure",
19496
19513
  quantity: "pressure",
19497
19514
  defaultAggregate: "mean",
19498
19515
  empty: "null",
@@ -19503,7 +19520,7 @@ var GROUP_TEMPLATES = [
19503
19520
  summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
19504
19521
  role: DeviceRole.AmbientLightSensor,
19505
19522
  outputCap: "ambient-light-sensor",
19506
- outputField: "lux",
19523
+ outputField: "illuminance",
19507
19524
  quantity: "illuminance",
19508
19525
  defaultAggregate: "mean",
19509
19526
  empty: "null",
@@ -19514,7 +19531,7 @@ var GROUP_TEMPLATES = [
19514
19531
  summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
19515
19532
  role: DeviceRole.PowerSensor,
19516
19533
  outputCap: "power-meter",
19517
- outputField: "watts",
19534
+ outputField: "power",
19518
19535
  quantity: "power",
19519
19536
  defaultAggregate: "sum",
19520
19537
  empty: "omit",
@@ -19525,7 +19542,7 @@ var GROUP_TEMPLATES = [
19525
19542
  summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
19526
19543
  role: DeviceRole.EnergySensor,
19527
19544
  outputCap: "power-meter",
19528
- outputField: "kwhTotal",
19545
+ outputField: "energy",
19529
19546
  quantity: "energy",
19530
19547
  defaultAggregate: "sum",
19531
19548
  empty: "omit",
@@ -19536,7 +19553,7 @@ var GROUP_TEMPLATES = [
19536
19553
  summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
19537
19554
  role: DeviceRole.BatterySensor,
19538
19555
  outputCap: "battery",
19539
- outputField: "percentage",
19556
+ outputField: "level",
19540
19557
  quantity: "percentage",
19541
19558
  defaultAggregate: "mean",
19542
19559
  empty: "null",
@@ -58015,9 +58032,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
58015
58032
  */
58016
58033
  var AirQualitySensorStatusSchema = object({
58017
58034
  /** Carbon dioxide concentration in ppm. */
58018
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
58035
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
58019
58036
  /** Total volatile organic compounds in ppb. */
58020
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
58037
+ voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
58021
58038
  /** Particulate matter ≤ 2.5 μm in µg/m³. */
58022
58039
  pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
58023
58040
  /** Particulate matter ≤ 10 μm in µg/m³. */
@@ -58050,12 +58067,12 @@ var airQualitySensorCapability = {
58050
58067
  * History (D850): recorded series.
58051
58068
  */
58052
58069
  history: { fields: {
58053
- co2Ppm: {
58070
+ co2: {
58054
58071
  kind: "gauge",
58055
58072
  unit: "ppm",
58056
58073
  deadband: 5
58057
58074
  },
58058
- vocPpb: {
58075
+ voc: {
58059
58076
  kind: "gauge",
58060
58077
  unit: "ppb",
58061
58078
  deadband: 5
@@ -58086,7 +58103,7 @@ var airQualitySensorCapability = {
58086
58103
  */
58087
58104
  var AmbientLightSensorStatusSchema = object({
58088
58105
  /** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
58089
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
58106
+ illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
58090
58107
  precision: 0,
58091
58108
  label: "Illuminance"
58092
58109
  })),
@@ -58115,7 +58132,7 @@ var ambientLightSensorCapability = {
58115
58132
  /**
58116
58133
  * History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
58117
58134
  */
58118
- history: { fields: { lux: {
58135
+ history: { fields: { illuminance: {
58119
58136
  kind: "gauge",
58120
58137
  unit: "lx",
58121
58138
  deadbandPct: 10,
@@ -58428,7 +58445,7 @@ var BatteryStatusSchema = object({
58428
58445
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
58429
58446
  * declines to band a non-finite reading, which is the correct shape.
58430
58447
  */
58431
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
58448
+ level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
58432
58449
  /**
58433
58450
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
58434
58451
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -58438,7 +58455,7 @@ var BatteryStatusSchema = object({
58438
58455
  * `'unknown'` is the absence of an answer: the provider has not read the
58439
58456
  * power fields yet, or the firmware reported neither. Before it existed,
58440
58457
  * two unreadable fields produced `'none'`, and a camera nobody had reached
58441
- * was drawn "on battery alone" — the same D315 defect `percentage` closed
58458
+ * was drawn "on battery alone" — the same D315 defect `level` closed
58442
58459
  * by going nullable. Consumers SKIP it (no charger state published, no
58443
58460
  * glyph, no HomeKit ChargingState) rather than coerce it either way.
58444
58461
  */
@@ -58462,7 +58479,7 @@ var BatteryStatusSchema = object({
58462
58479
  * that only report charge. A second reading on this cap, not a second
58463
58480
  * `numeric-sensor` on the same device.
58464
58481
  */
58465
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
58482
+ voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
58466
58483
  /**
58467
58484
  * Ms epoch of the last time the device PROVED it was reachable — a
58468
58485
  * completed firmware round-trip, an observed wake, or an inbound push
@@ -58496,7 +58513,7 @@ var BatteryStatusSchema = object({
58496
58513
  /**
58497
58514
  * True when the source is a BINARY low-battery indicator (HA
58498
58515
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
58499
- * charge level — `percentage` is then a coarse stand-in (100 = normal,
58516
+ * charge level — `level` is then a coarse stand-in (100 = normal,
58500
58517
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
58501
58518
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
58502
58519
  */
@@ -58516,15 +58533,15 @@ var BATTERY_DEVICE_TYPES = [
58516
58533
  var batteryCustomize = {
58517
58534
  version: 1,
58518
58535
  targets: [{
58519
- id: "percentage",
58536
+ id: "level",
58520
58537
  cardinality: "scalar",
58521
58538
  vocabulary: {
58522
58539
  cap: "battery",
58523
- stateField: "percentage"
58540
+ stateField: "level"
58524
58541
  },
58525
58542
  deviceTypes: BATTERY_DEVICE_TYPES,
58526
58543
  apply: "add",
58527
- path: "percentage",
58544
+ path: "level",
58528
58545
  sources: [{
58529
58546
  kind: "field",
58530
58547
  valueKinds: ["number", "string"],
@@ -58618,7 +58635,7 @@ onStatusChanged: { data: object({
58618
58635
  schema: BatteryStatusSchema,
58619
58636
  kind: "push",
58620
58637
  empty: {
58621
- percentage: null,
58638
+ level: null,
58622
58639
  charging: "unknown",
58623
58640
  sleeping: false,
58624
58641
  lastUpdated: 0
@@ -58645,11 +58662,11 @@ onStatusChanged: { data: object({
58645
58662
  * History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
58646
58663
  */
58647
58664
  history: { fields: {
58648
- percentage: {
58665
+ level: {
58649
58666
  kind: "gauge",
58650
58667
  unit: "%"
58651
58668
  },
58652
- volts: {
58669
+ voltage: {
58653
58670
  kind: "gauge",
58654
58671
  unit: "V"
58655
58672
  }
@@ -58709,14 +58726,14 @@ var binaryCapability = {
58709
58726
  * controls to this single-method surface.
58710
58727
  *
58711
58728
  * The cap is intentionally minimal: a single `setBrightness({deviceId,
58712
- * percentage})` mutation plus the auto-injected `getStatus`. Drivers
58729
+ * level})` mutation plus the auto-injected `getStatus`. Drivers
58713
58730
  * that expose richer controls (color temperature, scenes, schedules)
58714
58731
  * should surface those via the device's `getSettingsUISchema()`
58715
58732
  * instead of bloating this cap.
58716
58733
  */
58717
58734
  var BrightnessStatusSchema = object({
58718
58735
  /** Current level as 0..100 inclusive. Firmware-reported. */
58719
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
58736
+ level: number().min(0).max(100).meta(readingMeta("percentage")),
58720
58737
  /** Ms epoch of the last operator-driven change. Useful for UI freshness. */
58721
58738
  lastChangedAt: number()
58722
58739
  });
@@ -58728,7 +58745,7 @@ var brightnessCapability = {
58728
58745
  deviceTypes: [DeviceType.Light],
58729
58746
  methods: { setBrightness: method(object({
58730
58747
  deviceId: number().int().nonnegative(),
58731
- percentage: number().min(0).max(100)
58748
+ level: number().min(0).max(100)
58732
58749
  }), _void(), {
58733
58750
  kind: "mutation",
58734
58751
  auth: "protected"
@@ -58741,7 +58758,7 @@ var brightnessCapability = {
58741
58758
  */
58742
58759
  onBrightnessChanged: { data: object({
58743
58760
  deviceId: number(),
58744
- percentage: number().min(0).max(100),
58761
+ level: number().min(0).max(100),
58745
58762
  lastChangedAt: number()
58746
58763
  }) } },
58747
58764
  status: {
@@ -58764,7 +58781,7 @@ onBrightnessChanged: { data: object({
58764
58781
  /**
58765
58782
  * History (D850): recorded series. Actuator tier: level keeps every change.
58766
58783
  */
58767
- history: { fields: { percentage: {
58784
+ history: { fields: { level: {
58768
58785
  kind: "gauge",
58769
58786
  unit: "%",
58770
58787
  minIntervalMs: 0
@@ -59378,11 +59395,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
59378
59395
  }),
59379
59396
  object({
59380
59397
  mode: literal("mired"),
59381
- mireds: number().int().min(50).max(1e3)
59398
+ colorTemperature: number().int().min(50).max(1e3)
59382
59399
  })
59383
59400
  ]);
59384
59401
  var ColorStatusSchema = object({
59385
- /** Active color mode — which of `rgb` / `hsv` / `mireds` reflects
59402
+ /** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
59386
59403
  * the bulb's current state. */
59387
59404
  mode: _enum([
59388
59405
  "rgb",
@@ -59394,7 +59411,7 @@ var ColorStatusSchema = object({
59394
59411
  /** Populated when `mode === 'hsv'`. */
59395
59412
  hsv: HsvTripletSchema.optional(),
59396
59413
  /** Populated when `mode === 'mired'`. */
59397
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
59414
+ colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
59398
59415
  /** Ms epoch of the last operator-driven change. */
59399
59416
  lastChangedAt: number()
59400
59417
  });
@@ -59426,7 +59443,7 @@ onColorChanged: { data: object({
59426
59443
  ]),
59427
59444
  rgb: RgbTripletSchema.optional(),
59428
59445
  hsv: HsvTripletSchema.optional(),
59429
- mireds: number().int().optional(),
59446
+ colorTemperature: number().int().optional(),
59430
59447
  lastChangedAt: number()
59431
59448
  }) } },
59432
59449
  status: {
@@ -60303,11 +60320,11 @@ var DishwasherStatusSchema = object({
60303
60320
  /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
60304
60321
  availablePrograms: array(string()),
60305
60322
  /** Seconds remaining on the active cycle, or null when not running / not known. */
60306
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60323
+ remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60307
60324
  /** Seconds the delayed start is set to (time until the cycle starts), or null. */
60308
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60325
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
60309
60326
  /** Cycle completion 0..100, or null when not applicable. */
60310
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60327
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60311
60328
  /** True when the door is reported open; null when the door state is not known. */
60312
60329
  doorOpen: boolean().nullable(),
60313
60330
  /** True when the door is latched (locked) during a cycle; null when not reported. */
@@ -60526,14 +60543,14 @@ var dishwasherCapability = {
60526
60543
  runtimeState: DishwasherStatusSchema,
60527
60544
  durability: "session",
60528
60545
  history: { fields: {
60529
- progressPercent: {
60546
+ progress: {
60530
60547
  kind: "gauge",
60531
60548
  unit: "%",
60532
60549
  deadband: 2
60533
60550
  },
60534
60551
  state: { kind: "enum" },
60535
60552
  operationState: { kind: "enum" },
60536
- remainingSeconds: {
60553
+ remaining: {
60537
60554
  kind: "gauge",
60538
60555
  unit: "s",
60539
60556
  minIntervalMs: 6e4
@@ -61124,7 +61141,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
61124
61141
  var FanControlStatusSchema = object({
61125
61142
  /** Active speed as 0..100 inclusive. Null when the device has no
61126
61143
  * speed surface (single-speed fan). */
61127
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61144
+ speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61128
61145
  /** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
61129
61146
  * a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
61130
61147
  percentageStep: number().positive().optional().meta(readingMeta("percentage")),
@@ -61151,7 +61168,7 @@ var fanControlCapability = {
61151
61168
  methods: {
61152
61169
  setPercentage: method(object({
61153
61170
  deviceId: number().int().nonnegative(),
61154
- percentage: number().min(0).max(100)
61171
+ speed: number().min(0).max(100)
61155
61172
  }), _void(), {
61156
61173
  kind: "mutation",
61157
61174
  auth: "protected"
@@ -61184,7 +61201,7 @@ var fanControlCapability = {
61184
61201
  },
61185
61202
  /**
61186
61203
  * Runtime-state slice — mirrored by the kernel. UI fan speed
61187
- * sliders read `percentage` for live updates.
61204
+ * sliders read `speed` for live updates.
61188
61205
  */
61189
61206
  runtimeState: FanControlStatusSchema,
61190
61207
  /**
@@ -61198,7 +61215,7 @@ var fanControlCapability = {
61198
61215
  * History (D850): recorded series. Actuator tier: speed keeps every change.
61199
61216
  */
61200
61217
  history: { fields: {
61201
- percentage: {
61218
+ speed: {
61202
61219
  kind: "gauge",
61203
61220
  unit: "%",
61204
61221
  minIntervalMs: 0
@@ -61643,7 +61660,7 @@ var humidifierCapability = {
61643
61660
  */
61644
61661
  var HumiditySensorStatusSchema = object({
61645
61662
  /** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
61646
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
61663
+ humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
61647
61664
  precision: 0,
61648
61665
  label: "Humidity"
61649
61666
  })),
@@ -61672,7 +61689,7 @@ var humiditySensorCapability = {
61672
61689
  /**
61673
61690
  * History (D850): recorded series.
61674
61691
  */
61675
- history: { fields: { percent: {
61692
+ history: { fields: { humidity: {
61676
61693
  kind: "gauge",
61677
61694
  unit: "%",
61678
61695
  deadband: .5
@@ -62312,7 +62329,7 @@ var LawnMowerControlStatusSchema = object({
62312
62329
  batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62313
62330
  /** 0..100 mowing-completion percentage of the current task, or null when no
62314
62331
  * task is active / progress is unavailable. */
62315
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62332
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62316
62333
  /** Current device/event code (dynamic — mostly status, sometimes an error),
62317
62334
  * or null when unknown. */
62318
62335
  currentCode: number().nullable().meta(readingMeta("none")),
@@ -62812,7 +62829,7 @@ var lockControlCapability = {
62812
62829
  volatileStateFields: ["lastChangedAt"]
62813
62830
  };
62814
62831
  /**
62815
- * A monotonic total between resets (D944). Energy uses `power-meter.kwhTotal`
62832
+ * A monotonic total between resets (D944). Energy uses `power-meter.energy`
62816
62833
  * so dashboards keep one series; every other instantaneous reading lands here.
62817
62834
  * `value` is the time integral in the source quantity's accumulated base
62818
62835
  * (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
@@ -62906,10 +62923,10 @@ var MediaPlayerStatusSchema = object({
62906
62923
  currentMedia: MediaInfoSchema.nullable(),
62907
62924
  /** Current playback position in ms. Null when not seekable or
62908
62925
  * nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
62909
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62926
+ position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62910
62927
  /** Total duration of the current media in ms. Null when unknown
62911
62928
  * (live stream) or nothing is playing. */
62912
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62929
+ duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
62913
62930
  /** Shuffle toggle. Null when no shuffle surface.
62914
62931
  * Pair with `DeviceFeature.MediaPlayerShuffle`. */
62915
62932
  shuffle: boolean().nullable(),
@@ -62948,7 +62965,7 @@ var mediaPlayerCapability = {
62948
62965
  }),
62949
62966
  seek: method(object({
62950
62967
  deviceId: number().int().nonnegative(),
62951
- positionMs: number().int().nonnegative()
62968
+ position: number().int().nonnegative()
62952
62969
  }), _void(), {
62953
62970
  kind: "mutation",
62954
62971
  auth: "protected"
@@ -63020,7 +63037,7 @@ var mediaPlayerCapability = {
63020
63037
  /**
63021
63038
  * History (D850): volume (a level an operator or an automation sets; the
63022
63039
  * default 10 s floor folds a slider drag into its end value) and mute.
63023
- * `positionMs` is not recorded: it moves continuously while playing.
63040
+ * `position` is not recorded: it moves continuously while playing.
63024
63041
  */
63025
63042
  history: { fields: {
63026
63043
  volumeLevel: {
@@ -63982,9 +63999,9 @@ var NetworkLinkStatusSchema = object({
63982
63999
  * one whose reading has not landed must not be drawn at 0 %. Consumers
63983
64000
  * SKIP a null rather than coerce it.
63984
64001
  */
63985
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
64002
+ signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
63986
64003
  /** Raw received signal strength in dBm, when the firmware reports one. */
63987
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
64004
+ rssi: number().optional().meta(readingMeta("signal-level")),
63988
64005
  /** Network name of a wireless link, when the firmware reports it. */
63989
64006
  ssid: string().optional(),
63990
64007
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
@@ -64020,7 +64037,7 @@ onStatusChanged: { data: object({
64020
64037
  kind: "push",
64021
64038
  empty: {
64022
64039
  type: "unknown",
64023
- signalPercent: null,
64040
+ signal: null,
64024
64041
  lastUpdated: 0
64025
64042
  }
64026
64043
  },
@@ -64043,13 +64060,13 @@ onStatusChanged: { data: object({
64043
64060
  * History (D850): recorded series.
64044
64061
  */
64045
64062
  history: { fields: {
64046
- signalPercent: {
64063
+ signal: {
64047
64064
  kind: "gauge",
64048
64065
  unit: "%",
64049
64066
  deadband: 3,
64050
64067
  minIntervalMs: 6e4
64051
64068
  },
64052
- rssiDbm: {
64069
+ rssi: {
64053
64070
  kind: "gauge",
64054
64071
  unit: "dBm",
64055
64072
  deadband: 2,
@@ -65369,16 +65386,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
65369
65386
  * in real-world devices.
65370
65387
  */
65371
65388
  var PowerMeterStatusSchema = object({
65372
- /** Instantaneous power draw in watts. */
65373
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
65389
+ /** Instantaneous power draw (watts). */
65390
+ power: number().optional().meta(readingMeta("power", { label: "Power" })),
65374
65391
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
65375
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
65376
- /** Voltage in volts. */
65377
- volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
65392
+ energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
65393
+ /** Voltage (volts). */
65394
+ voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
65378
65395
  /** Current in amperes. */
65379
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
65396
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
65380
65397
  /** Apparent power in volt-amperes. */
65381
- va: number().optional().meta(readingMeta("apparent-power")),
65398
+ apparentPower: number().optional().meta(readingMeta("apparent-power")),
65382
65399
  /** Power factor (0..1) if reported. */
65383
65400
  powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
65384
65401
  /** Ms epoch when the slice was last updated. */
@@ -65436,14 +65453,14 @@ function powerTarget(id, unit) {
65436
65453
  advancedExpression: true
65437
65454
  };
65438
65455
  }
65439
- /** "Power and energy" extension: watts, energy, voltage and current from other devices (D951). */
65456
+ /** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
65440
65457
  var powerMeterCustomize = {
65441
65458
  version: 1,
65442
65459
  targets: [
65443
- powerTarget("watts", "W"),
65444
- powerTarget("kwhTotal", "kWh"),
65445
- powerTarget("volts", "V"),
65446
- powerTarget("amps", "A")
65460
+ powerTarget("power", "W"),
65461
+ powerTarget("energy", "kWh"),
65462
+ powerTarget("voltage", "V"),
65463
+ powerTarget("current", "A")
65447
65464
  ]
65448
65465
  };
65449
65466
  var powerMeterCapability = {
@@ -65459,41 +65476,41 @@ var powerMeterCapability = {
65459
65476
  },
65460
65477
  runtimeState: PowerMeterStatusSchema,
65461
65478
  /**
65462
- * Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
65479
+ * Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
65463
65480
  *
65464
65481
  * See `RuntimeStateDurability`. Enforced by
65465
65482
  * `scripts/check-runtime-state-durability.ts`.
65466
65483
  */
65467
65484
  durability: "restored",
65468
65485
  /**
65469
- * History (D850): recorded series. Gauges are floored at 30 s; `kwhTotal` is the one monotonic meter (counter).
65486
+ * History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
65470
65487
  */
65471
65488
  history: { fields: {
65472
- watts: {
65489
+ power: {
65473
65490
  kind: "gauge",
65474
65491
  unit: "W",
65475
65492
  deadband: 1,
65476
65493
  minIntervalMs: 3e4
65477
65494
  },
65478
- kwhTotal: {
65495
+ energy: {
65479
65496
  kind: "counter",
65480
65497
  unit: "kWh",
65481
65498
  deadband: .01,
65482
65499
  minIntervalMs: 6e4
65483
65500
  },
65484
- volts: {
65501
+ voltage: {
65485
65502
  kind: "gauge",
65486
65503
  unit: "V",
65487
65504
  deadband: 1,
65488
65505
  minIntervalMs: 3e4
65489
65506
  },
65490
- amps: {
65507
+ current: {
65491
65508
  kind: "gauge",
65492
65509
  unit: "A",
65493
65510
  deadband: .05,
65494
65511
  minIntervalMs: 3e4
65495
65512
  },
65496
- va: {
65513
+ apparentPower: {
65497
65514
  kind: "gauge",
65498
65515
  unit: "VA",
65499
65516
  deadband: 1,
@@ -65543,9 +65560,6 @@ var PresenceStatusSchema = object({
65543
65560
  location: string().nullable(),
65544
65561
  /** GPS coordinates when available. Null otherwise. */
65545
65562
  gps: GpsLocationSchema.nullable(),
65546
- /** Optional battery level of the tracking device (0..100). Null
65547
- * when not reported. */
65548
- batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65549
65563
  /** Ms epoch when the slice was last updated. */
65550
65564
  lastChangedAt: number()
65551
65565
  });
@@ -65574,14 +65588,7 @@ var presenceCapability = {
65574
65588
  * `scripts/check-runtime-state-durability.ts`.
65575
65589
  */
65576
65590
  durability: "restored",
65577
- /**
65578
- * History (D850): recorded series.
65579
- */
65580
- history: { fields: { batteryPercent: {
65581
- kind: "gauge",
65582
- unit: "%",
65583
- deadband: 1
65584
- } } },
65591
+ history: "none",
65585
65592
  /** Clock fields: written, but excluded from the compare that decides
65586
65593
  * whether persisting is worth a SQLite commit. */
65587
65594
  volatileStateFields: ["lastChangedAt"]
@@ -65596,7 +65603,7 @@ var presenceCapability = {
65596
65603
  */
65597
65604
  var PressureSensorStatusSchema = object({
65598
65605
  /** Current pressure in hPa. `null` when the sample was refused (D393). */
65599
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
65606
+ pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
65600
65607
  /** Ms epoch when the slice was last updated. */
65601
65608
  lastFetchedAt: number()
65602
65609
  });
@@ -65622,7 +65629,7 @@ var pressureSensorCapability = {
65622
65629
  /**
65623
65630
  * History (D850): recorded series.
65624
65631
  */
65625
- history: { fields: { hpa: {
65632
+ history: { fields: { pressure: {
65626
65633
  kind: "gauge",
65627
65634
  unit: "hPa",
65628
65635
  deadband: .1
@@ -69321,7 +69328,7 @@ var tamperCapability = {
69321
69328
  */
69322
69329
  var TemperatureSensorStatusSchema = object({
69323
69330
  /** Current temperature in Celsius. `null` when the sample was refused (D393). */
69324
- celsius: number().nullable().meta(readingMeta("temperature", {
69331
+ temperature: number().nullable().meta(readingMeta("temperature", {
69325
69332
  precision: 1,
69326
69333
  label: "Temperature"
69327
69334
  })),
@@ -69350,7 +69357,7 @@ var temperatureSensorCapability = {
69350
69357
  /**
69351
69358
  * History (D850): recorded series.
69352
69359
  */
69353
- history: { fields: { celsius: {
69360
+ history: { fields: { temperature: {
69354
69361
  kind: "gauge",
69355
69362
  unit: "°C",
69356
69363
  deadband: .1
@@ -69647,7 +69654,7 @@ var VacuumControlStatusSchema = object({
69647
69654
  /** Speed tokens the hardware accepts — drives the UI selector. */
69648
69655
  availableFanSpeeds: array(string()),
69649
69656
  /** 0..100 cleaning-completion percentage of the current task, or null. */
69650
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
69657
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
69651
69658
  /** Current error code (0 / null = no error). */
69652
69659
  errorCode: number().nullable().meta(readingMeta("none")),
69653
69660
  /** Human label for {@link errorCode}, or null when none / undecodable. */
@@ -71301,7 +71308,7 @@ var BaseDevice = class {
71301
71308
  * `device-local-state.ts`. Drivers access via:
71302
71309
  *
71303
71310
  * `this.state.battery.sleeping = true` // patches the battery slice
71304
- * `const pct = this.state.battery.percentage` // reads the battery slice
71311
+ * `const pct = this.state.battery.level` // reads the battery slice
71305
71312
  * `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
71306
71313
  *
71307
71314
  * Adding a new cap with `runtimeState:` automatically extends this
@@ -71341,7 +71348,7 @@ var BaseDevice = class {
71341
71348
  * shape; drivers don't redeclare it, they just write through.
71342
71349
  *
71343
71350
  * Read: `this.runtimeState.getCapState('battery')` →
71344
- * `{percentage, charging, sleeping, lastUpdated}` for any
71351
+ * `{level, charging, sleeping, lastUpdated}` for any
71345
71352
  * provider that registers `batteryCapability`.
71346
71353
  * Write: `this.runtimeState.setCapState('battery', { … })`.
71347
71354
  *
@@ -82544,7 +82551,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82544
82551
  label: t("Full brightness", "Luminosità massima"),
82545
82552
  phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
82546
82553
  icon: "sun",
82547
- args: { percentage: 100 }
82554
+ args: { level: 100 }
82548
82555
  },
82549
82556
  {
82550
82557
  id: "brightness.half",
@@ -82552,7 +82559,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82552
82559
  label: t("Half brightness", "Luminosità a metà"),
82553
82560
  phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
82554
82561
  icon: "sun-dim",
82555
- args: { percentage: 50 }
82562
+ args: { level: 50 }
82556
82563
  },
82557
82564
  {
82558
82565
  id: "brightness.off",
@@ -82560,16 +82567,16 @@ var ACTUATOR_CAP_VOCABULARY = {
82560
82567
  label: t("Brightness off", "Luminosità a zero"),
82561
82568
  phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
82562
82569
  icon: "lightbulb-off",
82563
- args: { percentage: 0 }
82570
+ args: { level: 0 }
82564
82571
  },
82565
82572
  {
82566
82573
  id: "brightness.set",
82567
82574
  method: "setBrightness",
82568
82575
  label: t("Set brightness", "Imposta la luminosità"),
82569
- phrase: t("Set the brightness of {device} to {percentage}", "Imposta la luminosità di {device} a {percentage}"),
82576
+ phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
82570
82577
  icon: "sun-medium",
82571
82578
  openArgs: [{
82572
- key: "percentage",
82579
+ key: "level",
82573
82580
  label: PERCENT,
82574
82581
  offer: {
82575
82582
  kind: "number",
@@ -82583,13 +82590,13 @@ var ACTUATOR_CAP_VOCABULARY = {
82583
82590
  ],
82584
82591
  state: [{
82585
82592
  kind: "numeric",
82586
- field: "percentage",
82593
+ field: "level",
82587
82594
  quantity: t("the brightness", "la luminosità"),
82588
82595
  label: t("Brightness", "Luminosità"),
82589
82596
  unit: "%",
82590
82597
  icon: "sun"
82591
82598
  }],
82592
- events: { onBrightnessChanged: { notOperatorFacing: "the `percentage` state trigger reads the same change" } }
82599
+ events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
82593
82600
  },
82594
82601
  color: {
82595
82602
  scope: "device",
@@ -82603,7 +82610,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82603
82610
  icon: "sun",
82604
82611
  args: { color: {
82605
82612
  mode: "mired",
82606
- mireds: 370
82613
+ colorTemperature: 370
82607
82614
  } }
82608
82615
  },
82609
82616
  {
@@ -82614,7 +82621,7 @@ var ACTUATOR_CAP_VOCABULARY = {
82614
82621
  icon: "snowflake",
82615
82622
  args: { color: {
82616
82623
  mode: "mired",
82617
- mireds: 200
82624
+ colorTemperature: 200
82618
82625
  } }
82619
82626
  },
82620
82627
  {
@@ -83228,7 +83235,7 @@ var ACTUATOR_CAP_VOCABULARY = {
83228
83235
  label: t("Fan off", "Ventilatore spento"),
83229
83236
  phrase: t("Stop {device}", "Ferma {device}"),
83230
83237
  icon: "power-off",
83231
- args: { percentage: 0 }
83238
+ args: { speed: 0 }
83232
83239
  },
83233
83240
  {
83234
83241
  id: "fan.full",
@@ -83236,16 +83243,16 @@ var ACTUATOR_CAP_VOCABULARY = {
83236
83243
  label: t("Fan full", "Ventilatore al massimo"),
83237
83244
  phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
83238
83245
  icon: "fan",
83239
- args: { percentage: 100 }
83246
+ args: { speed: 100 }
83240
83247
  },
83241
83248
  {
83242
83249
  id: "fan.speed",
83243
83250
  method: "setPercentage",
83244
83251
  label: t("Set speed", "Imposta la velocità"),
83245
- phrase: t("Set the speed of {device} to {percentage}", "Imposta la velocità di {device} al {percentage}"),
83252
+ phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
83246
83253
  icon: "fan",
83247
83254
  openArgs: [{
83248
- key: "percentage",
83255
+ key: "speed",
83249
83256
  label: t("Speed", "Velocità"),
83250
83257
  offer: {
83251
83258
  kind: "number",
@@ -83307,7 +83314,7 @@ var ACTUATOR_CAP_VOCABULARY = {
83307
83314
  ],
83308
83315
  state: [{
83309
83316
  kind: "numeric",
83310
- field: "percentage",
83317
+ field: "speed",
83311
83318
  quantity: t("the speed", "la velocità"),
83312
83319
  label: t("Speed", "Velocità"),
83313
83320
  unit: "%",
@@ -84105,7 +84112,7 @@ var APPLIANCE_CAP_VOCABULARY = {
84105
84112
  },
84106
84113
  {
84107
84114
  kind: "numeric",
84108
- field: "progressPercent",
84115
+ field: "progress",
84109
84116
  quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
84110
84117
  label: t("Progress", "Avanzamento"),
84111
84118
  unit: "%",
@@ -84463,10 +84470,10 @@ var APPLIANCE_CAP_VOCABULARY = {
84463
84470
  id: "media.seek",
84464
84471
  method: "seek",
84465
84472
  label: t("Seek", "Vai al punto"),
84466
- phrase: t("Move {device} to {positionMs}", "Porta {device} al punto {positionMs}"),
84473
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
84467
84474
  icon: "fast-forward",
84468
84475
  openArgs: [{
84469
- key: "positionMs",
84476
+ key: "position",
84470
84477
  label: t("Position", "Posizione"),
84471
84478
  offer: {
84472
84479
  kind: "number",
@@ -85515,7 +85522,7 @@ var SENSOR_CAP_VOCABULARY = {
85515
85522
  state: [
85516
85523
  {
85517
85524
  kind: "numeric",
85518
- field: "co2Ppm",
85525
+ field: "co2",
85519
85526
  quantity: t("the CO₂", "la CO₂"),
85520
85527
  label: t("CO₂", "CO₂"),
85521
85528
  unit: "ppm",
@@ -85523,7 +85530,7 @@ var SENSOR_CAP_VOCABULARY = {
85523
85530
  },
85524
85531
  {
85525
85532
  kind: "numeric",
85526
- field: "vocPpb",
85533
+ field: "voc",
85527
85534
  quantity: t("the VOC level", "il livello di COV"),
85528
85535
  label: t("VOC", "COV"),
85529
85536
  unit: "ppb",
@@ -85559,7 +85566,7 @@ var SENSOR_CAP_VOCABULARY = {
85559
85566
  noun: t("Light level", "Luminosità ambiente"),
85560
85567
  state: [{
85561
85568
  kind: "numeric",
85562
- field: "lux",
85569
+ field: "illuminance",
85563
85570
  quantity: t("the light level", "la luminosità"),
85564
85571
  label: t("Illuminance", "Illuminamento"),
85565
85572
  unit: "lx",
@@ -85762,7 +85769,7 @@ var SENSOR_CAP_VOCABULARY = {
85762
85769
  noun: t("Humidity", "Umidità"),
85763
85770
  state: [{
85764
85771
  kind: "numeric",
85765
- field: "percent",
85772
+ field: "humidity",
85766
85773
  quantity: t("the humidity", "l’umidità"),
85767
85774
  label: t("Humidity", "Umidità"),
85768
85775
  unit: "%",
@@ -85810,7 +85817,7 @@ var SENSOR_CAP_VOCABULARY = {
85810
85817
  state: [
85811
85818
  {
85812
85819
  kind: "numeric",
85813
- field: "watts",
85820
+ field: "power",
85814
85821
  quantity: t("the power draw", "il consumo"),
85815
85822
  label: t("Power", "Potenza"),
85816
85823
  unit: "W",
@@ -85818,7 +85825,7 @@ var SENSOR_CAP_VOCABULARY = {
85818
85825
  },
85819
85826
  {
85820
85827
  kind: "numeric",
85821
- field: "kwhTotal",
85828
+ field: "energy",
85822
85829
  quantity: t("the energy used", "l’energia consumata"),
85823
85830
  label: t("Energy", "Energia"),
85824
85831
  unit: "kWh",
@@ -85826,7 +85833,7 @@ var SENSOR_CAP_VOCABULARY = {
85826
85833
  },
85827
85834
  {
85828
85835
  kind: "numeric",
85829
- field: "volts",
85836
+ field: "voltage",
85830
85837
  quantity: t("the voltage", "la tensione"),
85831
85838
  label: t("Voltage", "Tensione"),
85832
85839
  unit: "V",
@@ -85834,7 +85841,7 @@ var SENSOR_CAP_VOCABULARY = {
85834
85841
  },
85835
85842
  {
85836
85843
  kind: "numeric",
85837
- field: "amps",
85844
+ field: "current",
85838
85845
  quantity: t("the current", "la corrente"),
85839
85846
  label: t("Current", "Corrente"),
85840
85847
  unit: "A",
@@ -85851,13 +85858,6 @@ var SENSOR_CAP_VOCABULARY = {
85851
85858
  label: t("Where", "Posizione"),
85852
85859
  phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
85853
85860
  icon: "map-pin"
85854
- }, {
85855
- kind: "numeric",
85856
- field: "batteryPercent",
85857
- quantity: t("the phone battery", "la batteria del telefono"),
85858
- label: t("Battery", "Batteria"),
85859
- unit: "%",
85860
- icon: "battery"
85861
85861
  }]
85862
85862
  },
85863
85863
  "pressure-sensor": {
@@ -85865,7 +85865,7 @@ var SENSOR_CAP_VOCABULARY = {
85865
85865
  noun: t("Pressure", "Pressione"),
85866
85866
  state: [{
85867
85867
  kind: "numeric",
85868
- field: "hpa",
85868
+ field: "pressure",
85869
85869
  quantity: t("the pressure", "la pressione"),
85870
85870
  label: t("Pressure", "Pressione"),
85871
85871
  unit: "hPa",
@@ -85901,7 +85901,7 @@ var SENSOR_CAP_VOCABULARY = {
85901
85901
  noun: t("Temperature", "Temperatura"),
85902
85902
  state: [{
85903
85903
  kind: "numeric",
85904
- field: "celsius",
85904
+ field: "temperature",
85905
85905
  quantity: t("the temperature", "la temperatura"),
85906
85906
  label: t("Temperature", "Temperatura"),
85907
85907
  unit: "°C",
@@ -85972,7 +85972,7 @@ var SENSOR_CAP_VOCABULARY = {
85972
85972
  state: [
85973
85973
  {
85974
85974
  kind: "numeric",
85975
- field: "percentage",
85975
+ field: "level",
85976
85976
  quantity: t("the battery level", "il livello della batteria"),
85977
85977
  label: t("Battery", "Batteria"),
85978
85978
  unit: "%",
@@ -86014,7 +86014,7 @@ var SENSOR_CAP_VOCABULARY = {
86014
86014
  icon: "battery-charging"
86015
86015
  }
86016
86016
  ],
86017
- events: { onStatusChanged: { notOperatorFacing: "the percentage / sleeping / charging state triggers each read one field of this change" } },
86017
+ events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
86018
86018
  extraEvents: [{
86019
86019
  category: EventCategory.DeviceAwake,
86020
86020
  label: t("Woke up", "Risvegliato"),
@@ -86032,7 +86032,7 @@ var SENSOR_CAP_VOCABULARY = {
86032
86032
  noun: t("Network link", "Collegamento di rete"),
86033
86033
  state: [{
86034
86034
  kind: "numeric",
86035
- field: "signalPercent",
86035
+ field: "signal",
86036
86036
  quantity: t("the signal strength", "l’intensità del segnale"),
86037
86037
  label: t("Signal", "Segnale"),
86038
86038
  unit: "%",
@@ -134747,7 +134747,7 @@ var KNOWN_CAPS = new Set([
134747
134747
  * {@link alexaAccounts}; each `getStatus` prefers the latest decoded live value
134748
134748
  * (via `alexa-state-to-cap`) and falls back to the runtime/cold slice when a
134749
134749
  * property hasn't been polled yet — e.g. PowerController.powerState 'ON' →
134750
- * switch.on, BrightnessController.brightness 0..100 → brightness.percentage,
134750
+ * switch.on, BrightnessController.brightness 0..100 → brightness.level,
134751
134751
  * ContactSensor.detectionState 'DETECTED' → contact.entryOpen.
134752
134752
  *
134753
134753
  * TODO(caps): 'climate-control' (ThermostatController), 'control'
@@ -134831,7 +134831,7 @@ var AlexaDevice = class extends BaseDevice {
134831
134831
  }
134832
134832
  registerBrightness() {
134833
134833
  const COLD = {
134834
- percentage: 0,
134834
+ level: 0,
134835
134835
  lastChangedAt: 0
134836
134836
  };
134837
134837
  this.ctx.registerNativeCap(brightnessCapability, {
@@ -134840,14 +134840,14 @@ var AlexaDevice = class extends BaseDevice {
134840
134840
  const live = decodePercentage(this.liveState("Alexa.BrightnessController", "brightness"));
134841
134841
  return live === null ? cached : {
134842
134842
  ...cached,
134843
- percentage: live
134843
+ level: live
134844
134844
  };
134845
134845
  },
134846
- setBrightness: async ({ percentage }) => {
134846
+ setBrightness: async ({ level: percentage }) => {
134847
134847
  const brightness = Math.round(Math.max(0, Math.min(100, percentage)));
134848
134848
  await this.command("Alexa.BrightnessController", "SetBrightness", { brightness });
134849
134849
  this.runtimeState.setCapState("brightness", {
134850
- percentage,
134850
+ level: percentage,
134851
134851
  lastChangedAt: Date.now()
134852
134852
  });
134853
134853
  }
@@ -135001,7 +135001,7 @@ var AlexaDevice = class extends BaseDevice {
135001
135001
  }
135002
135002
  registerTemperatureSensor() {
135003
135003
  const COLD = {
135004
- celsius: 0,
135004
+ temperature: 0,
135005
135005
  lastFetchedAt: 0
135006
135006
  };
135007
135007
  this.ctx.registerNativeCap(temperatureSensorCapability, { getStatus: async () => {
@@ -135009,14 +135009,14 @@ var AlexaDevice = class extends BaseDevice {
135009
135009
  const live = decodeTemperatureCelsius(this.liveState("Alexa.TemperatureSensor", "temperature"));
135010
135010
  return live === null ? cached : {
135011
135011
  ...cached,
135012
- celsius: live
135012
+ temperature: live
135013
135013
  };
135014
135014
  } });
135015
135015
  this.runtimeState.setCapState("temperature-sensor", COLD);
135016
135016
  }
135017
135017
  registerHumiditySensor() {
135018
135018
  const COLD = {
135019
- percent: 0,
135019
+ humidity: 0,
135020
135020
  lastFetchedAt: 0
135021
135021
  };
135022
135022
  this.ctx.registerNativeCap(humiditySensorCapability, { getStatus: async () => {
@@ -135024,7 +135024,7 @@ var AlexaDevice = class extends BaseDevice {
135024
135024
  const live = decodeHumidityPercent(this.liveState("Alexa.HumiditySensor", "humidity"));
135025
135025
  return live === null ? cached : {
135026
135026
  ...cached,
135027
- percent: live
135027
+ humidity: live
135028
135028
  };
135029
135029
  } });
135030
135030
  this.runtimeState.setCapState("humidity-sensor", COLD);