@camstack/addon-training 0.1.99 → 0.1.100

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.
@@ -5580,7 +5580,7 @@ var ZodIssueCode = {
5580
5580
  var ZodFirstPartyTypeKind;
5581
5581
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5582
5582
  //#endregion
5583
- //#region ../types/dist/sleep-DFaVPxfm.mjs
5583
+ //#region ../types/dist/sleep-Crlmu_tO.mjs
5584
5584
  /**
5585
5585
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5586
5586
  * window to float samples (D455).
@@ -9067,11 +9067,11 @@ var CAP_NAMES = Object.freeze([
9067
9067
  Object.freeze({
9068
9068
  "air-quality-sensor": [
9069
9069
  {
9070
- "path": "co2Ppm",
9070
+ "path": "co2",
9071
9071
  "valueType": "number"
9072
9072
  },
9073
9073
  {
9074
- "path": "vocPpb",
9074
+ "path": "voc",
9075
9075
  "valueType": "number"
9076
9076
  },
9077
9077
  {
@@ -9121,7 +9121,7 @@ Object.freeze({
9121
9121
  }
9122
9122
  ],
9123
9123
  "ambient-light-sensor": [{
9124
- "path": "lux",
9124
+ "path": "illuminance",
9125
9125
  "valueType": "number"
9126
9126
  }],
9127
9127
  "audio-metrics": [
@@ -9182,7 +9182,7 @@ Object.freeze({
9182
9182
  ],
9183
9183
  "battery": [
9184
9184
  {
9185
- "path": "percentage",
9185
+ "path": "level",
9186
9186
  "valueType": "number"
9187
9187
  },
9188
9188
  {
@@ -9204,7 +9204,7 @@ Object.freeze({
9204
9204
  "valueType": "number"
9205
9205
  },
9206
9206
  {
9207
- "path": "volts",
9207
+ "path": "voltage",
9208
9208
  "valueType": "number"
9209
9209
  },
9210
9210
  {
@@ -9225,7 +9225,7 @@ Object.freeze({
9225
9225
  "valueType": "boolean"
9226
9226
  }],
9227
9227
  "brightness": [{
9228
- "path": "percentage",
9228
+ "path": "level",
9229
9229
  "valueType": "number"
9230
9230
  }],
9231
9231
  "broker": [{
@@ -9426,7 +9426,7 @@ Object.freeze({
9426
9426
  "valueType": "number"
9427
9427
  },
9428
9428
  {
9429
- "path": "mireds",
9429
+ "path": "colorTemperature",
9430
9430
  "valueType": "number"
9431
9431
  }
9432
9432
  ],
@@ -9605,15 +9605,15 @@ Object.freeze({
9605
9605
  "valueType": "string"
9606
9606
  },
9607
9607
  {
9608
- "path": "remainingSeconds",
9608
+ "path": "remaining",
9609
9609
  "valueType": "number"
9610
9610
  },
9611
9611
  {
9612
- "path": "delayedStartSeconds",
9612
+ "path": "delayedStart",
9613
9613
  "valueType": "number"
9614
9614
  },
9615
9615
  {
9616
- "path": "progressPercent",
9616
+ "path": "progress",
9617
9617
  "valueType": "number"
9618
9618
  },
9619
9619
  {
@@ -9727,7 +9727,7 @@ Object.freeze({
9727
9727
  ],
9728
9728
  "fan-control": [
9729
9729
  {
9730
- "path": "percentage",
9730
+ "path": "speed",
9731
9731
  "valueType": "number"
9732
9732
  },
9733
9733
  {
@@ -9827,7 +9827,7 @@ Object.freeze({
9827
9827
  }
9828
9828
  ],
9829
9829
  "humidity-sensor": [{
9830
- "path": "percent",
9830
+ "path": "humidity",
9831
9831
  "valueType": "number"
9832
9832
  }],
9833
9833
  "image": [{
@@ -9937,7 +9937,7 @@ Object.freeze({
9937
9937
  "valueType": "number"
9938
9938
  },
9939
9939
  {
9940
- "path": "progressPercent",
9940
+ "path": "progress",
9941
9941
  "valueType": "number"
9942
9942
  },
9943
9943
  {
@@ -10016,11 +10016,11 @@ Object.freeze({
10016
10016
  "valueType": "string"
10017
10017
  },
10018
10018
  {
10019
- "path": "positionMs",
10019
+ "path": "position",
10020
10020
  "valueType": "number"
10021
10021
  },
10022
10022
  {
10023
- "path": "durationMs",
10023
+ "path": "duration",
10024
10024
  "valueType": "number"
10025
10025
  },
10026
10026
  {
@@ -10122,11 +10122,11 @@ Object.freeze({
10122
10122
  ]
10123
10123
  },
10124
10124
  {
10125
- "path": "signalPercent",
10125
+ "path": "signal",
10126
10126
  "valueType": "number"
10127
10127
  },
10128
10128
  {
10129
- "path": "rssiDbm",
10129
+ "path": "rssi",
10130
10130
  "valueType": "number"
10131
10131
  },
10132
10132
  {
@@ -10257,23 +10257,23 @@ Object.freeze({
10257
10257
  ],
10258
10258
  "power-meter": [
10259
10259
  {
10260
- "path": "watts",
10260
+ "path": "power",
10261
10261
  "valueType": "number"
10262
10262
  },
10263
10263
  {
10264
- "path": "kwhTotal",
10264
+ "path": "energy",
10265
10265
  "valueType": "number"
10266
10266
  },
10267
10267
  {
10268
- "path": "volts",
10268
+ "path": "voltage",
10269
10269
  "valueType": "number"
10270
10270
  },
10271
10271
  {
10272
- "path": "amps",
10272
+ "path": "current",
10273
10273
  "valueType": "number"
10274
10274
  },
10275
10275
  {
10276
- "path": "va",
10276
+ "path": "apparentPower",
10277
10277
  "valueType": "number"
10278
10278
  },
10279
10279
  {
@@ -10301,14 +10301,10 @@ Object.freeze({
10301
10301
  {
10302
10302
  "path": "gps.accuracyMeters",
10303
10303
  "valueType": "number"
10304
- },
10305
- {
10306
- "path": "batteryPercent",
10307
- "valueType": "number"
10308
10304
  }
10309
10305
  ],
10310
10306
  "pressure-sensor": [{
10311
- "path": "hpa",
10307
+ "path": "pressure",
10312
10308
  "valueType": "number"
10313
10309
  }],
10314
10310
  "privacy-mask": [{
@@ -10622,7 +10618,7 @@ Object.freeze({
10622
10618
  "valueType": "boolean"
10623
10619
  }],
10624
10620
  "temperature-sensor": [{
10625
- "path": "celsius",
10621
+ "path": "temperature",
10626
10622
  "valueType": "number"
10627
10623
  }],
10628
10624
  "update": [
@@ -10670,7 +10666,7 @@ Object.freeze({
10670
10666
  "valueType": "string"
10671
10667
  },
10672
10668
  {
10673
- "path": "progressPercent",
10669
+ "path": "progress",
10674
10670
  "valueType": "number"
10675
10671
  },
10676
10672
  {
@@ -11145,7 +11141,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
11145
11141
  return DeviceRole;
11146
11142
  }({});
11147
11143
  //#endregion
11148
- //#region ../types/dist/composition-Bb8iwHEJ.mjs
11144
+ //#region ../types/dist/composition-CZImLpOI.mjs
11149
11145
  /**
11150
11146
  * The ffmpeg build every CamStack node downloads, per platform and arch.
11151
11147
  *
@@ -18810,7 +18806,7 @@ var CompositionEventPlanSchema = object({
18810
18806
  stateField: string(),
18811
18807
  fieldKey: string()
18812
18808
  });
18813
- /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
18809
+ /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
18814
18810
  var CompositionProblemSchema = object({
18815
18811
  code: _enum([
18816
18812
  "reserved-variant",
@@ -19129,7 +19125,7 @@ var GROUP_TEMPLATES = [
19129
19125
  summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
19130
19126
  role: DeviceRole.TemperatureSensor,
19131
19127
  outputCap: "temperature-sensor",
19132
- outputField: "celsius",
19128
+ outputField: "temperature",
19133
19129
  quantity: "temperature",
19134
19130
  defaultAggregate: "mean",
19135
19131
  empty: "null",
@@ -19140,7 +19136,7 @@ var GROUP_TEMPLATES = [
19140
19136
  summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
19141
19137
  role: DeviceRole.HumiditySensor,
19142
19138
  outputCap: "humidity-sensor",
19143
- outputField: "percent",
19139
+ outputField: "humidity",
19144
19140
  quantity: "humidity",
19145
19141
  defaultAggregate: "mean",
19146
19142
  empty: "null",
@@ -19151,7 +19147,7 @@ var GROUP_TEMPLATES = [
19151
19147
  summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
19152
19148
  role: DeviceRole.PressureSensor,
19153
19149
  outputCap: "pressure-sensor",
19154
- outputField: "hpa",
19150
+ outputField: "pressure",
19155
19151
  quantity: "pressure",
19156
19152
  defaultAggregate: "mean",
19157
19153
  empty: "null",
@@ -19162,7 +19158,7 @@ var GROUP_TEMPLATES = [
19162
19158
  summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
19163
19159
  role: DeviceRole.AmbientLightSensor,
19164
19160
  outputCap: "ambient-light-sensor",
19165
- outputField: "lux",
19161
+ outputField: "illuminance",
19166
19162
  quantity: "illuminance",
19167
19163
  defaultAggregate: "mean",
19168
19164
  empty: "null",
@@ -19173,7 +19169,7 @@ var GROUP_TEMPLATES = [
19173
19169
  summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
19174
19170
  role: DeviceRole.PowerSensor,
19175
19171
  outputCap: "power-meter",
19176
- outputField: "watts",
19172
+ outputField: "power",
19177
19173
  quantity: "power",
19178
19174
  defaultAggregate: "sum",
19179
19175
  empty: "omit",
@@ -19184,7 +19180,7 @@ var GROUP_TEMPLATES = [
19184
19180
  summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
19185
19181
  role: DeviceRole.EnergySensor,
19186
19182
  outputCap: "power-meter",
19187
- outputField: "kwhTotal",
19183
+ outputField: "energy",
19188
19184
  quantity: "energy",
19189
19185
  defaultAggregate: "sum",
19190
19186
  empty: "omit",
@@ -19195,7 +19191,7 @@ var GROUP_TEMPLATES = [
19195
19191
  summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
19196
19192
  role: DeviceRole.BatterySensor,
19197
19193
  outputCap: "battery",
19198
- outputField: "percentage",
19194
+ outputField: "level",
19199
19195
  quantity: "percentage",
19200
19196
  defaultAggregate: "mean",
19201
19197
  empty: "null",
@@ -57313,9 +57309,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
57313
57309
  }), LogStreamEntrySchema, { kind: "subscription" });
57314
57310
  object({
57315
57311
  /** Carbon dioxide concentration in ppm. */
57316
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
57312
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
57317
57313
  /** Total volatile organic compounds in ppb. */
57318
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
57314
+ voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
57319
57315
  /** Particulate matter ≤ 2.5 μm in µg/m³. */
57320
57316
  pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
57321
57317
  /** Particulate matter ≤ 10 μm in µg/m³. */
@@ -57328,7 +57324,7 @@ object({
57328
57324
  DeviceType.Sensor;
57329
57325
  object({
57330
57326
  /** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
57331
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
57327
+ illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
57332
57328
  precision: 0,
57333
57329
  label: "Illuminance"
57334
57330
  })),
@@ -57556,7 +57552,7 @@ var BatteryStatusSchema = object({
57556
57552
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
57557
57553
  * declines to band a non-finite reading, which is the correct shape.
57558
57554
  */
57559
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
57555
+ level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
57560
57556
  /**
57561
57557
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
57562
57558
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -57566,7 +57562,7 @@ var BatteryStatusSchema = object({
57566
57562
  * `'unknown'` is the absence of an answer: the provider has not read the
57567
57563
  * power fields yet, or the firmware reported neither. Before it existed,
57568
57564
  * two unreadable fields produced `'none'`, and a camera nobody had reached
57569
- * was drawn "on battery alone" — the same D315 defect `percentage` closed
57565
+ * was drawn "on battery alone" — the same D315 defect `level` closed
57570
57566
  * by going nullable. Consumers SKIP it (no charger state published, no
57571
57567
  * glyph, no HomeKit ChargingState) rather than coerce it either way.
57572
57568
  */
@@ -57590,7 +57586,7 @@ var BatteryStatusSchema = object({
57590
57586
  * that only report charge. A second reading on this cap, not a second
57591
57587
  * `numeric-sensor` on the same device.
57592
57588
  */
57593
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
57589
+ voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
57594
57590
  /**
57595
57591
  * Ms epoch of the last time the device PROVED it was reachable — a
57596
57592
  * completed firmware round-trip, an observed wake, or an inbound push
@@ -57624,7 +57620,7 @@ var BatteryStatusSchema = object({
57624
57620
  /**
57625
57621
  * True when the source is a BINARY low-battery indicator (HA
57626
57622
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
57627
- * charge level — `percentage` is then a coarse stand-in (100 = normal,
57623
+ * charge level — `level` is then a coarse stand-in (100 = normal,
57628
57624
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
57629
57625
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
57630
57626
  */
@@ -57650,19 +57646,19 @@ object({
57650
57646
  DeviceType.Sensor;
57651
57647
  object({
57652
57648
  /** Current level as 0..100 inclusive. Firmware-reported. */
57653
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
57649
+ level: number().min(0).max(100).meta(readingMeta("percentage")),
57654
57650
  /** Ms epoch of the last operator-driven change. Useful for UI freshness. */
57655
57651
  lastChangedAt: number()
57656
57652
  });
57657
57653
  DeviceType.Light, method(object({
57658
57654
  deviceId: number().int().nonnegative(),
57659
- percentage: number().min(0).max(100)
57655
+ level: number().min(0).max(100)
57660
57656
  }), _void(), {
57661
57657
  kind: "mutation",
57662
57658
  auth: "protected"
57663
57659
  }), object({
57664
57660
  deviceId: number(),
57665
- percentage: number().min(0).max(100),
57661
+ level: number().min(0).max(100),
57666
57662
  lastChangedAt: number()
57667
57663
  });
57668
57664
  DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
@@ -58163,11 +58159,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
58163
58159
  }),
58164
58160
  object({
58165
58161
  mode: literal("mired"),
58166
- mireds: number().int().min(50).max(1e3)
58162
+ colorTemperature: number().int().min(50).max(1e3)
58167
58163
  })
58168
58164
  ]);
58169
58165
  object({
58170
- /** Active color mode — which of `rgb` / `hsv` / `mireds` reflects
58166
+ /** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
58171
58167
  * the bulb's current state. */
58172
58168
  mode: _enum([
58173
58169
  "rgb",
@@ -58179,7 +58175,7 @@ object({
58179
58175
  /** Populated when `mode === 'hsv'`. */
58180
58176
  hsv: HsvTripletSchema.optional(),
58181
58177
  /** Populated when `mode === 'mired'`. */
58182
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
58178
+ colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
58183
58179
  /** Ms epoch of the last operator-driven change. */
58184
58180
  lastChangedAt: number()
58185
58181
  });
@@ -58198,7 +58194,7 @@ DeviceType.Light, method(object({
58198
58194
  ]),
58199
58195
  rgb: RgbTripletSchema.optional(),
58200
58196
  hsv: HsvTripletSchema.optional(),
58201
- mireds: number().int().optional(),
58197
+ colorTemperature: number().int().optional(),
58202
58198
  lastChangedAt: number()
58203
58199
  });
58204
58200
  var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
@@ -58624,11 +58620,11 @@ object({
58624
58620
  /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
58625
58621
  availablePrograms: array(string()),
58626
58622
  /** Seconds remaining on the active cycle, or null when not running / not known. */
58627
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58623
+ remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58628
58624
  /** Seconds the delayed start is set to (time until the cycle starts), or null. */
58629
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58625
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58630
58626
  /** Cycle completion 0..100, or null when not applicable. */
58631
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
58627
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
58632
58628
  /** True when the door is reported open; null when the door state is not known. */
58633
58629
  doorOpen: boolean().nullable(),
58634
58630
  /** True when the door is latched (locked) during a cycle; null when not reported. */
@@ -59246,7 +59242,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
59246
59242
  object({
59247
59243
  /** Active speed as 0..100 inclusive. Null when the device has no
59248
59244
  * speed surface (single-speed fan). */
59249
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59245
+ speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59250
59246
  /** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
59251
59247
  * a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
59252
59248
  percentageStep: number().positive().optional().meta(readingMeta("percentage")),
@@ -59266,7 +59262,7 @@ object({
59266
59262
  });
59267
59263
  DeviceType.Fan, method(object({
59268
59264
  deviceId: number().int().nonnegative(),
59269
- percentage: number().min(0).max(100)
59265
+ speed: number().min(0).max(100)
59270
59266
  }), _void(), {
59271
59267
  kind: "mutation",
59272
59268
  auth: "protected"
@@ -59449,7 +59445,7 @@ DeviceType.Humidifier, method(object({
59449
59445
  });
59450
59446
  object({
59451
59447
  /** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
59452
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
59448
+ humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
59453
59449
  precision: 0,
59454
59450
  label: "Humidity"
59455
59451
  })),
@@ -59892,7 +59888,7 @@ object({
59892
59888
  batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59893
59889
  /** 0..100 mowing-completion percentage of the current task, or null when no
59894
59890
  * task is active / progress is unavailable. */
59895
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59891
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59896
59892
  /** Current device/event code (dynamic — mostly status, sometimes an error),
59897
59893
  * or null when unknown. */
59898
59894
  currentCode: number().nullable().meta(readingMeta("none")),
@@ -60382,10 +60378,10 @@ object({
60382
60378
  currentMedia: MediaInfoSchema.nullable(),
60383
60379
  /** Current playback position in ms. Null when not seekable or
60384
60380
  * nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
60385
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60381
+ position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60386
60382
  /** Total duration of the current media in ms. Null when unknown
60387
60383
  * (live stream) or nothing is playing. */
60388
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60384
+ duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60389
60385
  /** Shuffle toggle. Null when no shuffle surface.
60390
60386
  * Pair with `DeviceFeature.MediaPlayerShuffle`. */
60391
60387
  shuffle: boolean().nullable(),
@@ -60412,7 +60408,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
60412
60408
  auth: "protected"
60413
60409
  }), method(object({
60414
60410
  deviceId: number().int().nonnegative(),
60415
- positionMs: number().int().nonnegative()
60411
+ position: number().int().nonnegative()
60416
60412
  }), _void(), {
60417
60413
  kind: "mutation",
60418
60414
  auth: "protected"
@@ -61085,9 +61081,9 @@ var NetworkLinkStatusSchema = object({
61085
61081
  * one whose reading has not landed must not be drawn at 0 %. Consumers
61086
61082
  * SKIP a null rather than coerce it.
61087
61083
  */
61088
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61084
+ signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61089
61085
  /** Raw received signal strength in dBm, when the firmware reports one. */
61090
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
61086
+ rssi: number().optional().meta(readingMeta("signal-level")),
61091
61087
  /** Network name of a wireless link, when the firmware reports it. */
61092
61088
  ssid: string().optional(),
61093
61089
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
@@ -62237,16 +62233,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
62237
62233
  auth: "admin"
62238
62234
  });
62239
62235
  object({
62240
- /** Instantaneous power draw in watts. */
62241
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
62236
+ /** Instantaneous power draw (watts). */
62237
+ power: number().optional().meta(readingMeta("power", { label: "Power" })),
62242
62238
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
62243
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
62244
- /** Voltage in volts. */
62245
- volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
62239
+ energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
62240
+ /** Voltage (volts). */
62241
+ voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
62246
62242
  /** Current in amperes. */
62247
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
62243
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
62248
62244
  /** Apparent power in volt-amperes. */
62249
- va: number().optional().meta(readingMeta("apparent-power")),
62245
+ apparentPower: number().optional().meta(readingMeta("apparent-power")),
62250
62246
  /** Power factor (0..1) if reported. */
62251
62247
  powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
62252
62248
  /** Ms epoch when the slice was last updated. */
@@ -62301,16 +62297,13 @@ object({
62301
62297
  location: string().nullable(),
62302
62298
  /** GPS coordinates when available. Null otherwise. */
62303
62299
  gps: GpsLocationSchema.nullable(),
62304
- /** Optional battery level of the tracking device (0..100). Null
62305
- * when not reported. */
62306
- batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62307
62300
  /** Ms epoch when the slice was last updated. */
62308
62301
  lastChangedAt: number()
62309
62302
  });
62310
62303
  DeviceType.Presence;
62311
62304
  object({
62312
62305
  /** Current pressure in hPa. `null` when the sample was refused (D393). */
62313
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
62306
+ pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
62314
62307
  /** Ms epoch when the slice was last updated. */
62315
62308
  lastFetchedAt: number()
62316
62309
  });
@@ -65313,7 +65306,7 @@ object({
65313
65306
  DeviceType.Sensor;
65314
65307
  object({
65315
65308
  /** Current temperature in Celsius. `null` when the sample was refused (D393). */
65316
- celsius: number().nullable().meta(readingMeta("temperature", {
65309
+ temperature: number().nullable().meta(readingMeta("temperature", {
65317
65310
  precision: 1,
65318
65311
  label: "Temperature"
65319
65312
  })),
@@ -65577,7 +65570,7 @@ object({
65577
65570
  /** Speed tokens the hardware accepts — drives the UI selector. */
65578
65571
  availableFanSpeeds: array(string()),
65579
65572
  /** 0..100 cleaning-completion percentage of the current task, or null. */
65580
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65573
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65581
65574
  /** Current error code (0 / null = no error). */
65582
65575
  errorCode: number().nullable().meta(readingMeta("none")),
65583
65576
  /** Human label for {@link errorCode}, or null when none / undecodable. */
@@ -76649,7 +76642,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76649
76642
  label: t("Full brightness", "Luminosità massima"),
76650
76643
  phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
76651
76644
  icon: "sun",
76652
- args: { percentage: 100 }
76645
+ args: { level: 100 }
76653
76646
  },
76654
76647
  {
76655
76648
  id: "brightness.half",
@@ -76657,7 +76650,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76657
76650
  label: t("Half brightness", "Luminosità a metà"),
76658
76651
  phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
76659
76652
  icon: "sun-dim",
76660
- args: { percentage: 50 }
76653
+ args: { level: 50 }
76661
76654
  },
76662
76655
  {
76663
76656
  id: "brightness.off",
@@ -76665,16 +76658,16 @@ var ACTUATOR_CAP_VOCABULARY = {
76665
76658
  label: t("Brightness off", "Luminosità a zero"),
76666
76659
  phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
76667
76660
  icon: "lightbulb-off",
76668
- args: { percentage: 0 }
76661
+ args: { level: 0 }
76669
76662
  },
76670
76663
  {
76671
76664
  id: "brightness.set",
76672
76665
  method: "setBrightness",
76673
76666
  label: t("Set brightness", "Imposta la luminosità"),
76674
- phrase: t("Set the brightness of {device} to {percentage}", "Imposta la luminosità di {device} a {percentage}"),
76667
+ phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
76675
76668
  icon: "sun-medium",
76676
76669
  openArgs: [{
76677
- key: "percentage",
76670
+ key: "level",
76678
76671
  label: PERCENT,
76679
76672
  offer: {
76680
76673
  kind: "number",
@@ -76688,13 +76681,13 @@ var ACTUATOR_CAP_VOCABULARY = {
76688
76681
  ],
76689
76682
  state: [{
76690
76683
  kind: "numeric",
76691
- field: "percentage",
76684
+ field: "level",
76692
76685
  quantity: t("the brightness", "la luminosità"),
76693
76686
  label: t("Brightness", "Luminosità"),
76694
76687
  unit: "%",
76695
76688
  icon: "sun"
76696
76689
  }],
76697
- events: { onBrightnessChanged: { notOperatorFacing: "the `percentage` state trigger reads the same change" } }
76690
+ events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
76698
76691
  },
76699
76692
  color: {
76700
76693
  scope: "device",
@@ -76708,7 +76701,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76708
76701
  icon: "sun",
76709
76702
  args: { color: {
76710
76703
  mode: "mired",
76711
- mireds: 370
76704
+ colorTemperature: 370
76712
76705
  } }
76713
76706
  },
76714
76707
  {
@@ -76719,7 +76712,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76719
76712
  icon: "snowflake",
76720
76713
  args: { color: {
76721
76714
  mode: "mired",
76722
- mireds: 200
76715
+ colorTemperature: 200
76723
76716
  } }
76724
76717
  },
76725
76718
  {
@@ -77333,7 +77326,7 @@ var ACTUATOR_CAP_VOCABULARY = {
77333
77326
  label: t("Fan off", "Ventilatore spento"),
77334
77327
  phrase: t("Stop {device}", "Ferma {device}"),
77335
77328
  icon: "power-off",
77336
- args: { percentage: 0 }
77329
+ args: { speed: 0 }
77337
77330
  },
77338
77331
  {
77339
77332
  id: "fan.full",
@@ -77341,16 +77334,16 @@ var ACTUATOR_CAP_VOCABULARY = {
77341
77334
  label: t("Fan full", "Ventilatore al massimo"),
77342
77335
  phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
77343
77336
  icon: "fan",
77344
- args: { percentage: 100 }
77337
+ args: { speed: 100 }
77345
77338
  },
77346
77339
  {
77347
77340
  id: "fan.speed",
77348
77341
  method: "setPercentage",
77349
77342
  label: t("Set speed", "Imposta la velocità"),
77350
- phrase: t("Set the speed of {device} to {percentage}", "Imposta la velocità di {device} al {percentage}"),
77343
+ phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
77351
77344
  icon: "fan",
77352
77345
  openArgs: [{
77353
- key: "percentage",
77346
+ key: "speed",
77354
77347
  label: t("Speed", "Velocità"),
77355
77348
  offer: {
77356
77349
  kind: "number",
@@ -77412,7 +77405,7 @@ var ACTUATOR_CAP_VOCABULARY = {
77412
77405
  ],
77413
77406
  state: [{
77414
77407
  kind: "numeric",
77415
- field: "percentage",
77408
+ field: "speed",
77416
77409
  quantity: t("the speed", "la velocità"),
77417
77410
  label: t("Speed", "Velocità"),
77418
77411
  unit: "%",
@@ -78210,7 +78203,7 @@ var APPLIANCE_CAP_VOCABULARY = {
78210
78203
  },
78211
78204
  {
78212
78205
  kind: "numeric",
78213
- field: "progressPercent",
78206
+ field: "progress",
78214
78207
  quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
78215
78208
  label: t("Progress", "Avanzamento"),
78216
78209
  unit: "%",
@@ -78568,10 +78561,10 @@ var APPLIANCE_CAP_VOCABULARY = {
78568
78561
  id: "media.seek",
78569
78562
  method: "seek",
78570
78563
  label: t("Seek", "Vai al punto"),
78571
- phrase: t("Move {device} to {positionMs}", "Porta {device} al punto {positionMs}"),
78564
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
78572
78565
  icon: "fast-forward",
78573
78566
  openArgs: [{
78574
- key: "positionMs",
78567
+ key: "position",
78575
78568
  label: t("Position", "Posizione"),
78576
78569
  offer: {
78577
78570
  kind: "number",
@@ -79620,7 +79613,7 @@ var SENSOR_CAP_VOCABULARY = {
79620
79613
  state: [
79621
79614
  {
79622
79615
  kind: "numeric",
79623
- field: "co2Ppm",
79616
+ field: "co2",
79624
79617
  quantity: t("the CO₂", "la CO₂"),
79625
79618
  label: t("CO₂", "CO₂"),
79626
79619
  unit: "ppm",
@@ -79628,7 +79621,7 @@ var SENSOR_CAP_VOCABULARY = {
79628
79621
  },
79629
79622
  {
79630
79623
  kind: "numeric",
79631
- field: "vocPpb",
79624
+ field: "voc",
79632
79625
  quantity: t("the VOC level", "il livello di COV"),
79633
79626
  label: t("VOC", "COV"),
79634
79627
  unit: "ppb",
@@ -79664,7 +79657,7 @@ var SENSOR_CAP_VOCABULARY = {
79664
79657
  noun: t("Light level", "Luminosità ambiente"),
79665
79658
  state: [{
79666
79659
  kind: "numeric",
79667
- field: "lux",
79660
+ field: "illuminance",
79668
79661
  quantity: t("the light level", "la luminosità"),
79669
79662
  label: t("Illuminance", "Illuminamento"),
79670
79663
  unit: "lx",
@@ -79867,7 +79860,7 @@ var SENSOR_CAP_VOCABULARY = {
79867
79860
  noun: t("Humidity", "Umidità"),
79868
79861
  state: [{
79869
79862
  kind: "numeric",
79870
- field: "percent",
79863
+ field: "humidity",
79871
79864
  quantity: t("the humidity", "l’umidità"),
79872
79865
  label: t("Humidity", "Umidità"),
79873
79866
  unit: "%",
@@ -79915,7 +79908,7 @@ var SENSOR_CAP_VOCABULARY = {
79915
79908
  state: [
79916
79909
  {
79917
79910
  kind: "numeric",
79918
- field: "watts",
79911
+ field: "power",
79919
79912
  quantity: t("the power draw", "il consumo"),
79920
79913
  label: t("Power", "Potenza"),
79921
79914
  unit: "W",
@@ -79923,7 +79916,7 @@ var SENSOR_CAP_VOCABULARY = {
79923
79916
  },
79924
79917
  {
79925
79918
  kind: "numeric",
79926
- field: "kwhTotal",
79919
+ field: "energy",
79927
79920
  quantity: t("the energy used", "l’energia consumata"),
79928
79921
  label: t("Energy", "Energia"),
79929
79922
  unit: "kWh",
@@ -79931,7 +79924,7 @@ var SENSOR_CAP_VOCABULARY = {
79931
79924
  },
79932
79925
  {
79933
79926
  kind: "numeric",
79934
- field: "volts",
79927
+ field: "voltage",
79935
79928
  quantity: t("the voltage", "la tensione"),
79936
79929
  label: t("Voltage", "Tensione"),
79937
79930
  unit: "V",
@@ -79939,7 +79932,7 @@ var SENSOR_CAP_VOCABULARY = {
79939
79932
  },
79940
79933
  {
79941
79934
  kind: "numeric",
79942
- field: "amps",
79935
+ field: "current",
79943
79936
  quantity: t("the current", "la corrente"),
79944
79937
  label: t("Current", "Corrente"),
79945
79938
  unit: "A",
@@ -79956,13 +79949,6 @@ var SENSOR_CAP_VOCABULARY = {
79956
79949
  label: t("Where", "Posizione"),
79957
79950
  phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
79958
79951
  icon: "map-pin"
79959
- }, {
79960
- kind: "numeric",
79961
- field: "batteryPercent",
79962
- quantity: t("the phone battery", "la batteria del telefono"),
79963
- label: t("Battery", "Batteria"),
79964
- unit: "%",
79965
- icon: "battery"
79966
79952
  }]
79967
79953
  },
79968
79954
  "pressure-sensor": {
@@ -79970,7 +79956,7 @@ var SENSOR_CAP_VOCABULARY = {
79970
79956
  noun: t("Pressure", "Pressione"),
79971
79957
  state: [{
79972
79958
  kind: "numeric",
79973
- field: "hpa",
79959
+ field: "pressure",
79974
79960
  quantity: t("the pressure", "la pressione"),
79975
79961
  label: t("Pressure", "Pressione"),
79976
79962
  unit: "hPa",
@@ -80006,7 +79992,7 @@ var SENSOR_CAP_VOCABULARY = {
80006
79992
  noun: t("Temperature", "Temperatura"),
80007
79993
  state: [{
80008
79994
  kind: "numeric",
80009
- field: "celsius",
79995
+ field: "temperature",
80010
79996
  quantity: t("the temperature", "la temperatura"),
80011
79997
  label: t("Temperature", "Temperatura"),
80012
79998
  unit: "°C",
@@ -80077,7 +80063,7 @@ var SENSOR_CAP_VOCABULARY = {
80077
80063
  state: [
80078
80064
  {
80079
80065
  kind: "numeric",
80080
- field: "percentage",
80066
+ field: "level",
80081
80067
  quantity: t("the battery level", "il livello della batteria"),
80082
80068
  label: t("Battery", "Batteria"),
80083
80069
  unit: "%",
@@ -80119,7 +80105,7 @@ var SENSOR_CAP_VOCABULARY = {
80119
80105
  icon: "battery-charging"
80120
80106
  }
80121
80107
  ],
80122
- events: { onStatusChanged: { notOperatorFacing: "the percentage / sleeping / charging state triggers each read one field of this change" } },
80108
+ events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
80123
80109
  extraEvents: [{
80124
80110
  category: EventCategory.DeviceAwake,
80125
80111
  label: t("Woke up", "Risvegliato"),
@@ -80137,7 +80123,7 @@ var SENSOR_CAP_VOCABULARY = {
80137
80123
  noun: t("Network link", "Collegamento di rete"),
80138
80124
  state: [{
80139
80125
  kind: "numeric",
80140
- field: "signalPercent",
80126
+ field: "signal",
80141
80127
  quantity: t("the signal strength", "l’intensità del segnale"),
80142
80128
  label: t("Signal", "Segnale"),
80143
80129
  unit: "%",