@camstack/addon-model-studio 1.1.313 → 1.1.314

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.
@@ -5842,7 +5842,7 @@ var ZodIssueCode = {
5842
5842
  var ZodFirstPartyTypeKind;
5843
5843
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5844
5844
  //#endregion
5845
- //#region ../types/dist/sleep-DFaVPxfm.mjs
5845
+ //#region ../types/dist/sleep-Crlmu_tO.mjs
5846
5846
  /**
5847
5847
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5848
5848
  * window to float samples (D455).
@@ -9162,11 +9162,11 @@ var CAP_NAMES = Object.freeze([
9162
9162
  Object.freeze({
9163
9163
  "air-quality-sensor": [
9164
9164
  {
9165
- "path": "co2Ppm",
9165
+ "path": "co2",
9166
9166
  "valueType": "number"
9167
9167
  },
9168
9168
  {
9169
- "path": "vocPpb",
9169
+ "path": "voc",
9170
9170
  "valueType": "number"
9171
9171
  },
9172
9172
  {
@@ -9216,7 +9216,7 @@ Object.freeze({
9216
9216
  }
9217
9217
  ],
9218
9218
  "ambient-light-sensor": [{
9219
- "path": "lux",
9219
+ "path": "illuminance",
9220
9220
  "valueType": "number"
9221
9221
  }],
9222
9222
  "audio-metrics": [
@@ -9277,7 +9277,7 @@ Object.freeze({
9277
9277
  ],
9278
9278
  "battery": [
9279
9279
  {
9280
- "path": "percentage",
9280
+ "path": "level",
9281
9281
  "valueType": "number"
9282
9282
  },
9283
9283
  {
@@ -9299,7 +9299,7 @@ Object.freeze({
9299
9299
  "valueType": "number"
9300
9300
  },
9301
9301
  {
9302
- "path": "volts",
9302
+ "path": "voltage",
9303
9303
  "valueType": "number"
9304
9304
  },
9305
9305
  {
@@ -9320,7 +9320,7 @@ Object.freeze({
9320
9320
  "valueType": "boolean"
9321
9321
  }],
9322
9322
  "brightness": [{
9323
- "path": "percentage",
9323
+ "path": "level",
9324
9324
  "valueType": "number"
9325
9325
  }],
9326
9326
  "broker": [{
@@ -9521,7 +9521,7 @@ Object.freeze({
9521
9521
  "valueType": "number"
9522
9522
  },
9523
9523
  {
9524
- "path": "mireds",
9524
+ "path": "colorTemperature",
9525
9525
  "valueType": "number"
9526
9526
  }
9527
9527
  ],
@@ -9700,15 +9700,15 @@ Object.freeze({
9700
9700
  "valueType": "string"
9701
9701
  },
9702
9702
  {
9703
- "path": "remainingSeconds",
9703
+ "path": "remaining",
9704
9704
  "valueType": "number"
9705
9705
  },
9706
9706
  {
9707
- "path": "delayedStartSeconds",
9707
+ "path": "delayedStart",
9708
9708
  "valueType": "number"
9709
9709
  },
9710
9710
  {
9711
- "path": "progressPercent",
9711
+ "path": "progress",
9712
9712
  "valueType": "number"
9713
9713
  },
9714
9714
  {
@@ -9822,7 +9822,7 @@ Object.freeze({
9822
9822
  ],
9823
9823
  "fan-control": [
9824
9824
  {
9825
- "path": "percentage",
9825
+ "path": "speed",
9826
9826
  "valueType": "number"
9827
9827
  },
9828
9828
  {
@@ -9922,7 +9922,7 @@ Object.freeze({
9922
9922
  }
9923
9923
  ],
9924
9924
  "humidity-sensor": [{
9925
- "path": "percent",
9925
+ "path": "humidity",
9926
9926
  "valueType": "number"
9927
9927
  }],
9928
9928
  "image": [{
@@ -10032,7 +10032,7 @@ Object.freeze({
10032
10032
  "valueType": "number"
10033
10033
  },
10034
10034
  {
10035
- "path": "progressPercent",
10035
+ "path": "progress",
10036
10036
  "valueType": "number"
10037
10037
  },
10038
10038
  {
@@ -10111,11 +10111,11 @@ Object.freeze({
10111
10111
  "valueType": "string"
10112
10112
  },
10113
10113
  {
10114
- "path": "positionMs",
10114
+ "path": "position",
10115
10115
  "valueType": "number"
10116
10116
  },
10117
10117
  {
10118
- "path": "durationMs",
10118
+ "path": "duration",
10119
10119
  "valueType": "number"
10120
10120
  },
10121
10121
  {
@@ -10217,11 +10217,11 @@ Object.freeze({
10217
10217
  ]
10218
10218
  },
10219
10219
  {
10220
- "path": "signalPercent",
10220
+ "path": "signal",
10221
10221
  "valueType": "number"
10222
10222
  },
10223
10223
  {
10224
- "path": "rssiDbm",
10224
+ "path": "rssi",
10225
10225
  "valueType": "number"
10226
10226
  },
10227
10227
  {
@@ -10352,23 +10352,23 @@ Object.freeze({
10352
10352
  ],
10353
10353
  "power-meter": [
10354
10354
  {
10355
- "path": "watts",
10355
+ "path": "power",
10356
10356
  "valueType": "number"
10357
10357
  },
10358
10358
  {
10359
- "path": "kwhTotal",
10359
+ "path": "energy",
10360
10360
  "valueType": "number"
10361
10361
  },
10362
10362
  {
10363
- "path": "volts",
10363
+ "path": "voltage",
10364
10364
  "valueType": "number"
10365
10365
  },
10366
10366
  {
10367
- "path": "amps",
10367
+ "path": "current",
10368
10368
  "valueType": "number"
10369
10369
  },
10370
10370
  {
10371
- "path": "va",
10371
+ "path": "apparentPower",
10372
10372
  "valueType": "number"
10373
10373
  },
10374
10374
  {
@@ -10396,14 +10396,10 @@ Object.freeze({
10396
10396
  {
10397
10397
  "path": "gps.accuracyMeters",
10398
10398
  "valueType": "number"
10399
- },
10400
- {
10401
- "path": "batteryPercent",
10402
- "valueType": "number"
10403
10399
  }
10404
10400
  ],
10405
10401
  "pressure-sensor": [{
10406
- "path": "hpa",
10402
+ "path": "pressure",
10407
10403
  "valueType": "number"
10408
10404
  }],
10409
10405
  "privacy-mask": [{
@@ -10717,7 +10713,7 @@ Object.freeze({
10717
10713
  "valueType": "boolean"
10718
10714
  }],
10719
10715
  "temperature-sensor": [{
10720
- "path": "celsius",
10716
+ "path": "temperature",
10721
10717
  "valueType": "number"
10722
10718
  }],
10723
10719
  "update": [
@@ -10765,7 +10761,7 @@ Object.freeze({
10765
10761
  "valueType": "string"
10766
10762
  },
10767
10763
  {
10768
- "path": "progressPercent",
10764
+ "path": "progress",
10769
10765
  "valueType": "number"
10770
10766
  },
10771
10767
  {
@@ -11240,7 +11236,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
11240
11236
  return DeviceRole;
11241
11237
  }({});
11242
11238
  //#endregion
11243
- //#region ../types/dist/composition-Bb8iwHEJ.mjs
11239
+ //#region ../types/dist/composition-CZImLpOI.mjs
11244
11240
  /**
11245
11241
  * The ffmpeg build every CamStack node downloads, per platform and arch.
11246
11242
  *
@@ -19026,7 +19022,7 @@ var CompositionEventPlanSchema = object({
19026
19022
  stateField: string(),
19027
19023
  fieldKey: string()
19028
19024
  });
19029
- /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
19025
+ /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
19030
19026
  var CompositionProblemSchema = object({
19031
19027
  code: _enum([
19032
19028
  "reserved-variant",
@@ -19345,7 +19341,7 @@ var GROUP_TEMPLATES = [
19345
19341
  summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
19346
19342
  role: DeviceRole.TemperatureSensor,
19347
19343
  outputCap: "temperature-sensor",
19348
- outputField: "celsius",
19344
+ outputField: "temperature",
19349
19345
  quantity: "temperature",
19350
19346
  defaultAggregate: "mean",
19351
19347
  empty: "null",
@@ -19356,7 +19352,7 @@ var GROUP_TEMPLATES = [
19356
19352
  summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
19357
19353
  role: DeviceRole.HumiditySensor,
19358
19354
  outputCap: "humidity-sensor",
19359
- outputField: "percent",
19355
+ outputField: "humidity",
19360
19356
  quantity: "humidity",
19361
19357
  defaultAggregate: "mean",
19362
19358
  empty: "null",
@@ -19367,7 +19363,7 @@ var GROUP_TEMPLATES = [
19367
19363
  summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
19368
19364
  role: DeviceRole.PressureSensor,
19369
19365
  outputCap: "pressure-sensor",
19370
- outputField: "hpa",
19366
+ outputField: "pressure",
19371
19367
  quantity: "pressure",
19372
19368
  defaultAggregate: "mean",
19373
19369
  empty: "null",
@@ -19378,7 +19374,7 @@ var GROUP_TEMPLATES = [
19378
19374
  summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
19379
19375
  role: DeviceRole.AmbientLightSensor,
19380
19376
  outputCap: "ambient-light-sensor",
19381
- outputField: "lux",
19377
+ outputField: "illuminance",
19382
19378
  quantity: "illuminance",
19383
19379
  defaultAggregate: "mean",
19384
19380
  empty: "null",
@@ -19389,7 +19385,7 @@ var GROUP_TEMPLATES = [
19389
19385
  summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
19390
19386
  role: DeviceRole.PowerSensor,
19391
19387
  outputCap: "power-meter",
19392
- outputField: "watts",
19388
+ outputField: "power",
19393
19389
  quantity: "power",
19394
19390
  defaultAggregate: "sum",
19395
19391
  empty: "omit",
@@ -19400,7 +19396,7 @@ var GROUP_TEMPLATES = [
19400
19396
  summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
19401
19397
  role: DeviceRole.EnergySensor,
19402
19398
  outputCap: "power-meter",
19403
- outputField: "kwhTotal",
19399
+ outputField: "energy",
19404
19400
  quantity: "energy",
19405
19401
  defaultAggregate: "sum",
19406
19402
  empty: "omit",
@@ -19411,7 +19407,7 @@ var GROUP_TEMPLATES = [
19411
19407
  summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
19412
19408
  role: DeviceRole.BatterySensor,
19413
19409
  outputCap: "battery",
19414
- outputField: "percentage",
19410
+ outputField: "level",
19415
19411
  quantity: "percentage",
19416
19412
  defaultAggregate: "mean",
19417
19413
  empty: "null",
@@ -57563,9 +57559,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
57563
57559
  }), LogStreamEntrySchema, { kind: "subscription" });
57564
57560
  object({
57565
57561
  /** Carbon dioxide concentration in ppm. */
57566
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
57562
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
57567
57563
  /** Total volatile organic compounds in ppb. */
57568
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
57564
+ voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
57569
57565
  /** Particulate matter ≤ 2.5 μm in µg/m³. */
57570
57566
  pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
57571
57567
  /** Particulate matter ≤ 10 μm in µg/m³. */
@@ -57578,7 +57574,7 @@ object({
57578
57574
  DeviceType.Sensor;
57579
57575
  object({
57580
57576
  /** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
57581
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
57577
+ illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
57582
57578
  precision: 0,
57583
57579
  label: "Illuminance"
57584
57580
  })),
@@ -57806,7 +57802,7 @@ var BatteryStatusSchema = object({
57806
57802
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
57807
57803
  * declines to band a non-finite reading, which is the correct shape.
57808
57804
  */
57809
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
57805
+ level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
57810
57806
  /**
57811
57807
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
57812
57808
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -57816,7 +57812,7 @@ var BatteryStatusSchema = object({
57816
57812
  * `'unknown'` is the absence of an answer: the provider has not read the
57817
57813
  * power fields yet, or the firmware reported neither. Before it existed,
57818
57814
  * two unreadable fields produced `'none'`, and a camera nobody had reached
57819
- * was drawn "on battery alone" — the same D315 defect `percentage` closed
57815
+ * was drawn "on battery alone" — the same D315 defect `level` closed
57820
57816
  * by going nullable. Consumers SKIP it (no charger state published, no
57821
57817
  * glyph, no HomeKit ChargingState) rather than coerce it either way.
57822
57818
  */
@@ -57840,7 +57836,7 @@ var BatteryStatusSchema = object({
57840
57836
  * that only report charge. A second reading on this cap, not a second
57841
57837
  * `numeric-sensor` on the same device.
57842
57838
  */
57843
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
57839
+ voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
57844
57840
  /**
57845
57841
  * Ms epoch of the last time the device PROVED it was reachable — a
57846
57842
  * completed firmware round-trip, an observed wake, or an inbound push
@@ -57874,7 +57870,7 @@ var BatteryStatusSchema = object({
57874
57870
  /**
57875
57871
  * True when the source is a BINARY low-battery indicator (HA
57876
57872
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
57877
- * charge level — `percentage` is then a coarse stand-in (100 = normal,
57873
+ * charge level — `level` is then a coarse stand-in (100 = normal,
57878
57874
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
57879
57875
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
57880
57876
  */
@@ -57900,19 +57896,19 @@ object({
57900
57896
  DeviceType.Sensor;
57901
57897
  object({
57902
57898
  /** Current level as 0..100 inclusive. Firmware-reported. */
57903
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
57899
+ level: number().min(0).max(100).meta(readingMeta("percentage")),
57904
57900
  /** Ms epoch of the last operator-driven change. Useful for UI freshness. */
57905
57901
  lastChangedAt: number()
57906
57902
  });
57907
57903
  DeviceType.Light, method(object({
57908
57904
  deviceId: number().int().nonnegative(),
57909
- percentage: number().min(0).max(100)
57905
+ level: number().min(0).max(100)
57910
57906
  }), _void(), {
57911
57907
  kind: "mutation",
57912
57908
  auth: "protected"
57913
57909
  }), object({
57914
57910
  deviceId: number(),
57915
- percentage: number().min(0).max(100),
57911
+ level: number().min(0).max(100),
57916
57912
  lastChangedAt: number()
57917
57913
  });
57918
57914
  DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
@@ -58413,11 +58409,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
58413
58409
  }),
58414
58410
  object({
58415
58411
  mode: literal("mired"),
58416
- mireds: number().int().min(50).max(1e3)
58412
+ colorTemperature: number().int().min(50).max(1e3)
58417
58413
  })
58418
58414
  ]);
58419
58415
  object({
58420
- /** Active color mode — which of `rgb` / `hsv` / `mireds` reflects
58416
+ /** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
58421
58417
  * the bulb's current state. */
58422
58418
  mode: _enum([
58423
58419
  "rgb",
@@ -58429,7 +58425,7 @@ object({
58429
58425
  /** Populated when `mode === 'hsv'`. */
58430
58426
  hsv: HsvTripletSchema.optional(),
58431
58427
  /** Populated when `mode === 'mired'`. */
58432
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
58428
+ colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
58433
58429
  /** Ms epoch of the last operator-driven change. */
58434
58430
  lastChangedAt: number()
58435
58431
  });
@@ -58448,7 +58444,7 @@ DeviceType.Light, method(object({
58448
58444
  ]),
58449
58445
  rgb: RgbTripletSchema.optional(),
58450
58446
  hsv: HsvTripletSchema.optional(),
58451
- mireds: number().int().optional(),
58447
+ colorTemperature: number().int().optional(),
58452
58448
  lastChangedAt: number()
58453
58449
  });
58454
58450
  var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
@@ -58874,11 +58870,11 @@ object({
58874
58870
  /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
58875
58871
  availablePrograms: array(string()),
58876
58872
  /** Seconds remaining on the active cycle, or null when not running / not known. */
58877
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58873
+ remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58878
58874
  /** Seconds the delayed start is set to (time until the cycle starts), or null. */
58879
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58875
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58880
58876
  /** Cycle completion 0..100, or null when not applicable. */
58881
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
58877
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
58882
58878
  /** True when the door is reported open; null when the door state is not known. */
58883
58879
  doorOpen: boolean().nullable(),
58884
58880
  /** True when the door is latched (locked) during a cycle; null when not reported. */
@@ -59496,7 +59492,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
59496
59492
  object({
59497
59493
  /** Active speed as 0..100 inclusive. Null when the device has no
59498
59494
  * speed surface (single-speed fan). */
59499
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59495
+ speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59500
59496
  /** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
59501
59497
  * a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
59502
59498
  percentageStep: number().positive().optional().meta(readingMeta("percentage")),
@@ -59516,7 +59512,7 @@ object({
59516
59512
  });
59517
59513
  DeviceType.Fan, method(object({
59518
59514
  deviceId: number().int().nonnegative(),
59519
- percentage: number().min(0).max(100)
59515
+ speed: number().min(0).max(100)
59520
59516
  }), _void(), {
59521
59517
  kind: "mutation",
59522
59518
  auth: "protected"
@@ -59699,7 +59695,7 @@ DeviceType.Humidifier, method(object({
59699
59695
  });
59700
59696
  object({
59701
59697
  /** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
59702
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
59698
+ humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
59703
59699
  precision: 0,
59704
59700
  label: "Humidity"
59705
59701
  })),
@@ -60142,7 +60138,7 @@ object({
60142
60138
  batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60143
60139
  /** 0..100 mowing-completion percentage of the current task, or null when no
60144
60140
  * task is active / progress is unavailable. */
60145
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60141
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60146
60142
  /** Current device/event code (dynamic — mostly status, sometimes an error),
60147
60143
  * or null when unknown. */
60148
60144
  currentCode: number().nullable().meta(readingMeta("none")),
@@ -60632,10 +60628,10 @@ object({
60632
60628
  currentMedia: MediaInfoSchema.nullable(),
60633
60629
  /** Current playback position in ms. Null when not seekable or
60634
60630
  * nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
60635
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60631
+ position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60636
60632
  /** Total duration of the current media in ms. Null when unknown
60637
60633
  * (live stream) or nothing is playing. */
60638
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60634
+ duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60639
60635
  /** Shuffle toggle. Null when no shuffle surface.
60640
60636
  * Pair with `DeviceFeature.MediaPlayerShuffle`. */
60641
60637
  shuffle: boolean().nullable(),
@@ -60662,7 +60658,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
60662
60658
  auth: "protected"
60663
60659
  }), method(object({
60664
60660
  deviceId: number().int().nonnegative(),
60665
- positionMs: number().int().nonnegative()
60661
+ position: number().int().nonnegative()
60666
60662
  }), _void(), {
60667
60663
  kind: "mutation",
60668
60664
  auth: "protected"
@@ -61335,9 +61331,9 @@ var NetworkLinkStatusSchema = object({
61335
61331
  * one whose reading has not landed must not be drawn at 0 %. Consumers
61336
61332
  * SKIP a null rather than coerce it.
61337
61333
  */
61338
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61334
+ signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61339
61335
  /** Raw received signal strength in dBm, when the firmware reports one. */
61340
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
61336
+ rssi: number().optional().meta(readingMeta("signal-level")),
61341
61337
  /** Network name of a wireless link, when the firmware reports it. */
61342
61338
  ssid: string().optional(),
61343
61339
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
@@ -62487,16 +62483,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
62487
62483
  auth: "admin"
62488
62484
  });
62489
62485
  object({
62490
- /** Instantaneous power draw in watts. */
62491
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
62486
+ /** Instantaneous power draw (watts). */
62487
+ power: number().optional().meta(readingMeta("power", { label: "Power" })),
62492
62488
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
62493
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
62494
- /** Voltage in volts. */
62495
- volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
62489
+ energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
62490
+ /** Voltage (volts). */
62491
+ voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
62496
62492
  /** Current in amperes. */
62497
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
62493
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
62498
62494
  /** Apparent power in volt-amperes. */
62499
- va: number().optional().meta(readingMeta("apparent-power")),
62495
+ apparentPower: number().optional().meta(readingMeta("apparent-power")),
62500
62496
  /** Power factor (0..1) if reported. */
62501
62497
  powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
62502
62498
  /** Ms epoch when the slice was last updated. */
@@ -62551,16 +62547,13 @@ object({
62551
62547
  location: string().nullable(),
62552
62548
  /** GPS coordinates when available. Null otherwise. */
62553
62549
  gps: GpsLocationSchema.nullable(),
62554
- /** Optional battery level of the tracking device (0..100). Null
62555
- * when not reported. */
62556
- batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62557
62550
  /** Ms epoch when the slice was last updated. */
62558
62551
  lastChangedAt: number()
62559
62552
  });
62560
62553
  DeviceType.Presence;
62561
62554
  object({
62562
62555
  /** Current pressure in hPa. `null` when the sample was refused (D393). */
62563
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
62556
+ pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
62564
62557
  /** Ms epoch when the slice was last updated. */
62565
62558
  lastFetchedAt: number()
62566
62559
  });
@@ -65563,7 +65556,7 @@ object({
65563
65556
  DeviceType.Sensor;
65564
65557
  object({
65565
65558
  /** Current temperature in Celsius. `null` when the sample was refused (D393). */
65566
- celsius: number().nullable().meta(readingMeta("temperature", {
65559
+ temperature: number().nullable().meta(readingMeta("temperature", {
65567
65560
  precision: 1,
65568
65561
  label: "Temperature"
65569
65562
  })),
@@ -65827,7 +65820,7 @@ object({
65827
65820
  /** Speed tokens the hardware accepts — drives the UI selector. */
65828
65821
  availableFanSpeeds: array(string()),
65829
65822
  /** 0..100 cleaning-completion percentage of the current task, or null. */
65830
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65823
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65831
65824
  /** Current error code (0 / null = no error). */
65832
65825
  errorCode: number().nullable().meta(readingMeta("none")),
65833
65826
  /** Human label for {@link errorCode}, or null when none / undecodable. */
@@ -76895,7 +76888,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76895
76888
  label: t("Full brightness", "Luminosità massima"),
76896
76889
  phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
76897
76890
  icon: "sun",
76898
- args: { percentage: 100 }
76891
+ args: { level: 100 }
76899
76892
  },
76900
76893
  {
76901
76894
  id: "brightness.half",
@@ -76903,7 +76896,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76903
76896
  label: t("Half brightness", "Luminosità a metà"),
76904
76897
  phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
76905
76898
  icon: "sun-dim",
76906
- args: { percentage: 50 }
76899
+ args: { level: 50 }
76907
76900
  },
76908
76901
  {
76909
76902
  id: "brightness.off",
@@ -76911,16 +76904,16 @@ var ACTUATOR_CAP_VOCABULARY = {
76911
76904
  label: t("Brightness off", "Luminosità a zero"),
76912
76905
  phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
76913
76906
  icon: "lightbulb-off",
76914
- args: { percentage: 0 }
76907
+ args: { level: 0 }
76915
76908
  },
76916
76909
  {
76917
76910
  id: "brightness.set",
76918
76911
  method: "setBrightness",
76919
76912
  label: t("Set brightness", "Imposta la luminosità"),
76920
- phrase: t("Set the brightness of {device} to {percentage}", "Imposta la luminosità di {device} a {percentage}"),
76913
+ phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
76921
76914
  icon: "sun-medium",
76922
76915
  openArgs: [{
76923
- key: "percentage",
76916
+ key: "level",
76924
76917
  label: PERCENT,
76925
76918
  offer: {
76926
76919
  kind: "number",
@@ -76934,13 +76927,13 @@ var ACTUATOR_CAP_VOCABULARY = {
76934
76927
  ],
76935
76928
  state: [{
76936
76929
  kind: "numeric",
76937
- field: "percentage",
76930
+ field: "level",
76938
76931
  quantity: t("the brightness", "la luminosità"),
76939
76932
  label: t("Brightness", "Luminosità"),
76940
76933
  unit: "%",
76941
76934
  icon: "sun"
76942
76935
  }],
76943
- events: { onBrightnessChanged: { notOperatorFacing: "the `percentage` state trigger reads the same change" } }
76936
+ events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
76944
76937
  },
76945
76938
  color: {
76946
76939
  scope: "device",
@@ -76954,7 +76947,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76954
76947
  icon: "sun",
76955
76948
  args: { color: {
76956
76949
  mode: "mired",
76957
- mireds: 370
76950
+ colorTemperature: 370
76958
76951
  } }
76959
76952
  },
76960
76953
  {
@@ -76965,7 +76958,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76965
76958
  icon: "snowflake",
76966
76959
  args: { color: {
76967
76960
  mode: "mired",
76968
- mireds: 200
76961
+ colorTemperature: 200
76969
76962
  } }
76970
76963
  },
76971
76964
  {
@@ -77579,7 +77572,7 @@ var ACTUATOR_CAP_VOCABULARY = {
77579
77572
  label: t("Fan off", "Ventilatore spento"),
77580
77573
  phrase: t("Stop {device}", "Ferma {device}"),
77581
77574
  icon: "power-off",
77582
- args: { percentage: 0 }
77575
+ args: { speed: 0 }
77583
77576
  },
77584
77577
  {
77585
77578
  id: "fan.full",
@@ -77587,16 +77580,16 @@ var ACTUATOR_CAP_VOCABULARY = {
77587
77580
  label: t("Fan full", "Ventilatore al massimo"),
77588
77581
  phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
77589
77582
  icon: "fan",
77590
- args: { percentage: 100 }
77583
+ args: { speed: 100 }
77591
77584
  },
77592
77585
  {
77593
77586
  id: "fan.speed",
77594
77587
  method: "setPercentage",
77595
77588
  label: t("Set speed", "Imposta la velocità"),
77596
- phrase: t("Set the speed of {device} to {percentage}", "Imposta la velocità di {device} al {percentage}"),
77589
+ phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
77597
77590
  icon: "fan",
77598
77591
  openArgs: [{
77599
- key: "percentage",
77592
+ key: "speed",
77600
77593
  label: t("Speed", "Velocità"),
77601
77594
  offer: {
77602
77595
  kind: "number",
@@ -77658,7 +77651,7 @@ var ACTUATOR_CAP_VOCABULARY = {
77658
77651
  ],
77659
77652
  state: [{
77660
77653
  kind: "numeric",
77661
- field: "percentage",
77654
+ field: "speed",
77662
77655
  quantity: t("the speed", "la velocità"),
77663
77656
  label: t("Speed", "Velocità"),
77664
77657
  unit: "%",
@@ -78456,7 +78449,7 @@ var APPLIANCE_CAP_VOCABULARY = {
78456
78449
  },
78457
78450
  {
78458
78451
  kind: "numeric",
78459
- field: "progressPercent",
78452
+ field: "progress",
78460
78453
  quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
78461
78454
  label: t("Progress", "Avanzamento"),
78462
78455
  unit: "%",
@@ -78814,10 +78807,10 @@ var APPLIANCE_CAP_VOCABULARY = {
78814
78807
  id: "media.seek",
78815
78808
  method: "seek",
78816
78809
  label: t("Seek", "Vai al punto"),
78817
- phrase: t("Move {device} to {positionMs}", "Porta {device} al punto {positionMs}"),
78810
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
78818
78811
  icon: "fast-forward",
78819
78812
  openArgs: [{
78820
- key: "positionMs",
78813
+ key: "position",
78821
78814
  label: t("Position", "Posizione"),
78822
78815
  offer: {
78823
78816
  kind: "number",
@@ -79866,7 +79859,7 @@ var SENSOR_CAP_VOCABULARY = {
79866
79859
  state: [
79867
79860
  {
79868
79861
  kind: "numeric",
79869
- field: "co2Ppm",
79862
+ field: "co2",
79870
79863
  quantity: t("the CO₂", "la CO₂"),
79871
79864
  label: t("CO₂", "CO₂"),
79872
79865
  unit: "ppm",
@@ -79874,7 +79867,7 @@ var SENSOR_CAP_VOCABULARY = {
79874
79867
  },
79875
79868
  {
79876
79869
  kind: "numeric",
79877
- field: "vocPpb",
79870
+ field: "voc",
79878
79871
  quantity: t("the VOC level", "il livello di COV"),
79879
79872
  label: t("VOC", "COV"),
79880
79873
  unit: "ppb",
@@ -79910,7 +79903,7 @@ var SENSOR_CAP_VOCABULARY = {
79910
79903
  noun: t("Light level", "Luminosità ambiente"),
79911
79904
  state: [{
79912
79905
  kind: "numeric",
79913
- field: "lux",
79906
+ field: "illuminance",
79914
79907
  quantity: t("the light level", "la luminosità"),
79915
79908
  label: t("Illuminance", "Illuminamento"),
79916
79909
  unit: "lx",
@@ -80113,7 +80106,7 @@ var SENSOR_CAP_VOCABULARY = {
80113
80106
  noun: t("Humidity", "Umidità"),
80114
80107
  state: [{
80115
80108
  kind: "numeric",
80116
- field: "percent",
80109
+ field: "humidity",
80117
80110
  quantity: t("the humidity", "l’umidità"),
80118
80111
  label: t("Humidity", "Umidità"),
80119
80112
  unit: "%",
@@ -80161,7 +80154,7 @@ var SENSOR_CAP_VOCABULARY = {
80161
80154
  state: [
80162
80155
  {
80163
80156
  kind: "numeric",
80164
- field: "watts",
80157
+ field: "power",
80165
80158
  quantity: t("the power draw", "il consumo"),
80166
80159
  label: t("Power", "Potenza"),
80167
80160
  unit: "W",
@@ -80169,7 +80162,7 @@ var SENSOR_CAP_VOCABULARY = {
80169
80162
  },
80170
80163
  {
80171
80164
  kind: "numeric",
80172
- field: "kwhTotal",
80165
+ field: "energy",
80173
80166
  quantity: t("the energy used", "l’energia consumata"),
80174
80167
  label: t("Energy", "Energia"),
80175
80168
  unit: "kWh",
@@ -80177,7 +80170,7 @@ var SENSOR_CAP_VOCABULARY = {
80177
80170
  },
80178
80171
  {
80179
80172
  kind: "numeric",
80180
- field: "volts",
80173
+ field: "voltage",
80181
80174
  quantity: t("the voltage", "la tensione"),
80182
80175
  label: t("Voltage", "Tensione"),
80183
80176
  unit: "V",
@@ -80185,7 +80178,7 @@ var SENSOR_CAP_VOCABULARY = {
80185
80178
  },
80186
80179
  {
80187
80180
  kind: "numeric",
80188
- field: "amps",
80181
+ field: "current",
80189
80182
  quantity: t("the current", "la corrente"),
80190
80183
  label: t("Current", "Corrente"),
80191
80184
  unit: "A",
@@ -80202,13 +80195,6 @@ var SENSOR_CAP_VOCABULARY = {
80202
80195
  label: t("Where", "Posizione"),
80203
80196
  phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
80204
80197
  icon: "map-pin"
80205
- }, {
80206
- kind: "numeric",
80207
- field: "batteryPercent",
80208
- quantity: t("the phone battery", "la batteria del telefono"),
80209
- label: t("Battery", "Batteria"),
80210
- unit: "%",
80211
- icon: "battery"
80212
80198
  }]
80213
80199
  },
80214
80200
  "pressure-sensor": {
@@ -80216,7 +80202,7 @@ var SENSOR_CAP_VOCABULARY = {
80216
80202
  noun: t("Pressure", "Pressione"),
80217
80203
  state: [{
80218
80204
  kind: "numeric",
80219
- field: "hpa",
80205
+ field: "pressure",
80220
80206
  quantity: t("the pressure", "la pressione"),
80221
80207
  label: t("Pressure", "Pressione"),
80222
80208
  unit: "hPa",
@@ -80252,7 +80238,7 @@ var SENSOR_CAP_VOCABULARY = {
80252
80238
  noun: t("Temperature", "Temperatura"),
80253
80239
  state: [{
80254
80240
  kind: "numeric",
80255
- field: "celsius",
80241
+ field: "temperature",
80256
80242
  quantity: t("the temperature", "la temperatura"),
80257
80243
  label: t("Temperature", "Temperatura"),
80258
80244
  unit: "°C",
@@ -80323,7 +80309,7 @@ var SENSOR_CAP_VOCABULARY = {
80323
80309
  state: [
80324
80310
  {
80325
80311
  kind: "numeric",
80326
- field: "percentage",
80312
+ field: "level",
80327
80313
  quantity: t("the battery level", "il livello della batteria"),
80328
80314
  label: t("Battery", "Batteria"),
80329
80315
  unit: "%",
@@ -80365,7 +80351,7 @@ var SENSOR_CAP_VOCABULARY = {
80365
80351
  icon: "battery-charging"
80366
80352
  }
80367
80353
  ],
80368
- events: { onStatusChanged: { notOperatorFacing: "the percentage / sleeping / charging state triggers each read one field of this change" } },
80354
+ events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
80369
80355
  extraEvents: [{
80370
80356
  category: EventCategory.DeviceAwake,
80371
80357
  label: t("Woke up", "Risvegliato"),
@@ -80383,7 +80369,7 @@ var SENSOR_CAP_VOCABULARY = {
80383
80369
  noun: t("Network link", "Collegamento di rete"),
80384
80370
  state: [{
80385
80371
  kind: "numeric",
80386
- field: "signalPercent",
80372
+ field: "signal",
80387
80373
  quantity: t("the signal strength", "l’intensità del segnale"),
80388
80374
  label: t("Signal", "Segnale"),
80389
80375
  unit: "%",