@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.
@@ -5816,7 +5816,7 @@ var ZodIssueCode = {
5816
5816
  var ZodFirstPartyTypeKind;
5817
5817
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5818
5818
  //#endregion
5819
- //#region ../types/dist/sleep-DFaVPxfm.mjs
5819
+ //#region ../types/dist/sleep-Crlmu_tO.mjs
5820
5820
  /**
5821
5821
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5822
5822
  * window to float samples (D455).
@@ -9136,11 +9136,11 @@ var CAP_NAMES = Object.freeze([
9136
9136
  Object.freeze({
9137
9137
  "air-quality-sensor": [
9138
9138
  {
9139
- "path": "co2Ppm",
9139
+ "path": "co2",
9140
9140
  "valueType": "number"
9141
9141
  },
9142
9142
  {
9143
- "path": "vocPpb",
9143
+ "path": "voc",
9144
9144
  "valueType": "number"
9145
9145
  },
9146
9146
  {
@@ -9190,7 +9190,7 @@ Object.freeze({
9190
9190
  }
9191
9191
  ],
9192
9192
  "ambient-light-sensor": [{
9193
- "path": "lux",
9193
+ "path": "illuminance",
9194
9194
  "valueType": "number"
9195
9195
  }],
9196
9196
  "audio-metrics": [
@@ -9251,7 +9251,7 @@ Object.freeze({
9251
9251
  ],
9252
9252
  "battery": [
9253
9253
  {
9254
- "path": "percentage",
9254
+ "path": "level",
9255
9255
  "valueType": "number"
9256
9256
  },
9257
9257
  {
@@ -9273,7 +9273,7 @@ Object.freeze({
9273
9273
  "valueType": "number"
9274
9274
  },
9275
9275
  {
9276
- "path": "volts",
9276
+ "path": "voltage",
9277
9277
  "valueType": "number"
9278
9278
  },
9279
9279
  {
@@ -9294,7 +9294,7 @@ Object.freeze({
9294
9294
  "valueType": "boolean"
9295
9295
  }],
9296
9296
  "brightness": [{
9297
- "path": "percentage",
9297
+ "path": "level",
9298
9298
  "valueType": "number"
9299
9299
  }],
9300
9300
  "broker": [{
@@ -9495,7 +9495,7 @@ Object.freeze({
9495
9495
  "valueType": "number"
9496
9496
  },
9497
9497
  {
9498
- "path": "mireds",
9498
+ "path": "colorTemperature",
9499
9499
  "valueType": "number"
9500
9500
  }
9501
9501
  ],
@@ -9674,15 +9674,15 @@ Object.freeze({
9674
9674
  "valueType": "string"
9675
9675
  },
9676
9676
  {
9677
- "path": "remainingSeconds",
9677
+ "path": "remaining",
9678
9678
  "valueType": "number"
9679
9679
  },
9680
9680
  {
9681
- "path": "delayedStartSeconds",
9681
+ "path": "delayedStart",
9682
9682
  "valueType": "number"
9683
9683
  },
9684
9684
  {
9685
- "path": "progressPercent",
9685
+ "path": "progress",
9686
9686
  "valueType": "number"
9687
9687
  },
9688
9688
  {
@@ -9796,7 +9796,7 @@ Object.freeze({
9796
9796
  ],
9797
9797
  "fan-control": [
9798
9798
  {
9799
- "path": "percentage",
9799
+ "path": "speed",
9800
9800
  "valueType": "number"
9801
9801
  },
9802
9802
  {
@@ -9896,7 +9896,7 @@ Object.freeze({
9896
9896
  }
9897
9897
  ],
9898
9898
  "humidity-sensor": [{
9899
- "path": "percent",
9899
+ "path": "humidity",
9900
9900
  "valueType": "number"
9901
9901
  }],
9902
9902
  "image": [{
@@ -10006,7 +10006,7 @@ Object.freeze({
10006
10006
  "valueType": "number"
10007
10007
  },
10008
10008
  {
10009
- "path": "progressPercent",
10009
+ "path": "progress",
10010
10010
  "valueType": "number"
10011
10011
  },
10012
10012
  {
@@ -10085,11 +10085,11 @@ Object.freeze({
10085
10085
  "valueType": "string"
10086
10086
  },
10087
10087
  {
10088
- "path": "positionMs",
10088
+ "path": "position",
10089
10089
  "valueType": "number"
10090
10090
  },
10091
10091
  {
10092
- "path": "durationMs",
10092
+ "path": "duration",
10093
10093
  "valueType": "number"
10094
10094
  },
10095
10095
  {
@@ -10191,11 +10191,11 @@ Object.freeze({
10191
10191
  ]
10192
10192
  },
10193
10193
  {
10194
- "path": "signalPercent",
10194
+ "path": "signal",
10195
10195
  "valueType": "number"
10196
10196
  },
10197
10197
  {
10198
- "path": "rssiDbm",
10198
+ "path": "rssi",
10199
10199
  "valueType": "number"
10200
10200
  },
10201
10201
  {
@@ -10326,23 +10326,23 @@ Object.freeze({
10326
10326
  ],
10327
10327
  "power-meter": [
10328
10328
  {
10329
- "path": "watts",
10329
+ "path": "power",
10330
10330
  "valueType": "number"
10331
10331
  },
10332
10332
  {
10333
- "path": "kwhTotal",
10333
+ "path": "energy",
10334
10334
  "valueType": "number"
10335
10335
  },
10336
10336
  {
10337
- "path": "volts",
10337
+ "path": "voltage",
10338
10338
  "valueType": "number"
10339
10339
  },
10340
10340
  {
10341
- "path": "amps",
10341
+ "path": "current",
10342
10342
  "valueType": "number"
10343
10343
  },
10344
10344
  {
10345
- "path": "va",
10345
+ "path": "apparentPower",
10346
10346
  "valueType": "number"
10347
10347
  },
10348
10348
  {
@@ -10370,14 +10370,10 @@ Object.freeze({
10370
10370
  {
10371
10371
  "path": "gps.accuracyMeters",
10372
10372
  "valueType": "number"
10373
- },
10374
- {
10375
- "path": "batteryPercent",
10376
- "valueType": "number"
10377
10373
  }
10378
10374
  ],
10379
10375
  "pressure-sensor": [{
10380
- "path": "hpa",
10376
+ "path": "pressure",
10381
10377
  "valueType": "number"
10382
10378
  }],
10383
10379
  "privacy-mask": [{
@@ -10691,7 +10687,7 @@ Object.freeze({
10691
10687
  "valueType": "boolean"
10692
10688
  }],
10693
10689
  "temperature-sensor": [{
10694
- "path": "celsius",
10690
+ "path": "temperature",
10695
10691
  "valueType": "number"
10696
10692
  }],
10697
10693
  "update": [
@@ -10739,7 +10735,7 @@ Object.freeze({
10739
10735
  "valueType": "string"
10740
10736
  },
10741
10737
  {
10742
- "path": "progressPercent",
10738
+ "path": "progress",
10743
10739
  "valueType": "number"
10744
10740
  },
10745
10741
  {
@@ -11214,7 +11210,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
11214
11210
  return DeviceRole;
11215
11211
  }({});
11216
11212
  //#endregion
11217
- //#region ../types/dist/composition-Bb8iwHEJ.mjs
11213
+ //#region ../types/dist/composition-CZImLpOI.mjs
11218
11214
  /**
11219
11215
  * The ffmpeg build every CamStack node downloads, per platform and arch.
11220
11216
  *
@@ -19000,7 +18996,7 @@ var CompositionEventPlanSchema = object({
19000
18996
  stateField: string(),
19001
18997
  fieldKey: string()
19002
18998
  });
19003
- /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
18999
+ /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
19004
19000
  var CompositionProblemSchema = object({
19005
19001
  code: _enum([
19006
19002
  "reserved-variant",
@@ -19319,7 +19315,7 @@ var GROUP_TEMPLATES = [
19319
19315
  summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
19320
19316
  role: DeviceRole.TemperatureSensor,
19321
19317
  outputCap: "temperature-sensor",
19322
- outputField: "celsius",
19318
+ outputField: "temperature",
19323
19319
  quantity: "temperature",
19324
19320
  defaultAggregate: "mean",
19325
19321
  empty: "null",
@@ -19330,7 +19326,7 @@ var GROUP_TEMPLATES = [
19330
19326
  summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
19331
19327
  role: DeviceRole.HumiditySensor,
19332
19328
  outputCap: "humidity-sensor",
19333
- outputField: "percent",
19329
+ outputField: "humidity",
19334
19330
  quantity: "humidity",
19335
19331
  defaultAggregate: "mean",
19336
19332
  empty: "null",
@@ -19341,7 +19337,7 @@ var GROUP_TEMPLATES = [
19341
19337
  summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
19342
19338
  role: DeviceRole.PressureSensor,
19343
19339
  outputCap: "pressure-sensor",
19344
- outputField: "hpa",
19340
+ outputField: "pressure",
19345
19341
  quantity: "pressure",
19346
19342
  defaultAggregate: "mean",
19347
19343
  empty: "null",
@@ -19352,7 +19348,7 @@ var GROUP_TEMPLATES = [
19352
19348
  summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
19353
19349
  role: DeviceRole.AmbientLightSensor,
19354
19350
  outputCap: "ambient-light-sensor",
19355
- outputField: "lux",
19351
+ outputField: "illuminance",
19356
19352
  quantity: "illuminance",
19357
19353
  defaultAggregate: "mean",
19358
19354
  empty: "null",
@@ -19363,7 +19359,7 @@ var GROUP_TEMPLATES = [
19363
19359
  summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
19364
19360
  role: DeviceRole.PowerSensor,
19365
19361
  outputCap: "power-meter",
19366
- outputField: "watts",
19362
+ outputField: "power",
19367
19363
  quantity: "power",
19368
19364
  defaultAggregate: "sum",
19369
19365
  empty: "omit",
@@ -19374,7 +19370,7 @@ var GROUP_TEMPLATES = [
19374
19370
  summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
19375
19371
  role: DeviceRole.EnergySensor,
19376
19372
  outputCap: "power-meter",
19377
- outputField: "kwhTotal",
19373
+ outputField: "energy",
19378
19374
  quantity: "energy",
19379
19375
  defaultAggregate: "sum",
19380
19376
  empty: "omit",
@@ -19385,7 +19381,7 @@ var GROUP_TEMPLATES = [
19385
19381
  summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
19386
19382
  role: DeviceRole.BatterySensor,
19387
19383
  outputCap: "battery",
19388
- outputField: "percentage",
19384
+ outputField: "level",
19389
19385
  quantity: "percentage",
19390
19386
  defaultAggregate: "mean",
19391
19387
  empty: "null",
@@ -57537,9 +57533,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
57537
57533
  }), LogStreamEntrySchema, { kind: "subscription" });
57538
57534
  object({
57539
57535
  /** Carbon dioxide concentration in ppm. */
57540
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
57536
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
57541
57537
  /** Total volatile organic compounds in ppb. */
57542
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
57538
+ voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
57543
57539
  /** Particulate matter ≤ 2.5 μm in µg/m³. */
57544
57540
  pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
57545
57541
  /** Particulate matter ≤ 10 μm in µg/m³. */
@@ -57552,7 +57548,7 @@ object({
57552
57548
  DeviceType.Sensor;
57553
57549
  object({
57554
57550
  /** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
57555
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
57551
+ illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
57556
57552
  precision: 0,
57557
57553
  label: "Illuminance"
57558
57554
  })),
@@ -57780,7 +57776,7 @@ var BatteryStatusSchema = object({
57780
57776
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
57781
57777
  * declines to band a non-finite reading, which is the correct shape.
57782
57778
  */
57783
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
57779
+ level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
57784
57780
  /**
57785
57781
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
57786
57782
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -57790,7 +57786,7 @@ var BatteryStatusSchema = object({
57790
57786
  * `'unknown'` is the absence of an answer: the provider has not read the
57791
57787
  * power fields yet, or the firmware reported neither. Before it existed,
57792
57788
  * two unreadable fields produced `'none'`, and a camera nobody had reached
57793
- * was drawn "on battery alone" — the same D315 defect `percentage` closed
57789
+ * was drawn "on battery alone" — the same D315 defect `level` closed
57794
57790
  * by going nullable. Consumers SKIP it (no charger state published, no
57795
57791
  * glyph, no HomeKit ChargingState) rather than coerce it either way.
57796
57792
  */
@@ -57814,7 +57810,7 @@ var BatteryStatusSchema = object({
57814
57810
  * that only report charge. A second reading on this cap, not a second
57815
57811
  * `numeric-sensor` on the same device.
57816
57812
  */
57817
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
57813
+ voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
57818
57814
  /**
57819
57815
  * Ms epoch of the last time the device PROVED it was reachable — a
57820
57816
  * completed firmware round-trip, an observed wake, or an inbound push
@@ -57848,7 +57844,7 @@ var BatteryStatusSchema = object({
57848
57844
  /**
57849
57845
  * True when the source is a BINARY low-battery indicator (HA
57850
57846
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
57851
- * charge level — `percentage` is then a coarse stand-in (100 = normal,
57847
+ * charge level — `level` is then a coarse stand-in (100 = normal,
57852
57848
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
57853
57849
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
57854
57850
  */
@@ -57874,19 +57870,19 @@ object({
57874
57870
  DeviceType.Sensor;
57875
57871
  object({
57876
57872
  /** Current level as 0..100 inclusive. Firmware-reported. */
57877
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
57873
+ level: number().min(0).max(100).meta(readingMeta("percentage")),
57878
57874
  /** Ms epoch of the last operator-driven change. Useful for UI freshness. */
57879
57875
  lastChangedAt: number()
57880
57876
  });
57881
57877
  DeviceType.Light, method(object({
57882
57878
  deviceId: number().int().nonnegative(),
57883
- percentage: number().min(0).max(100)
57879
+ level: number().min(0).max(100)
57884
57880
  }), _void(), {
57885
57881
  kind: "mutation",
57886
57882
  auth: "protected"
57887
57883
  }), object({
57888
57884
  deviceId: number(),
57889
- percentage: number().min(0).max(100),
57885
+ level: number().min(0).max(100),
57890
57886
  lastChangedAt: number()
57891
57887
  });
57892
57888
  DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
@@ -58387,11 +58383,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
58387
58383
  }),
58388
58384
  object({
58389
58385
  mode: literal("mired"),
58390
- mireds: number().int().min(50).max(1e3)
58386
+ colorTemperature: number().int().min(50).max(1e3)
58391
58387
  })
58392
58388
  ]);
58393
58389
  object({
58394
- /** Active color mode — which of `rgb` / `hsv` / `mireds` reflects
58390
+ /** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
58395
58391
  * the bulb's current state. */
58396
58392
  mode: _enum([
58397
58393
  "rgb",
@@ -58403,7 +58399,7 @@ object({
58403
58399
  /** Populated when `mode === 'hsv'`. */
58404
58400
  hsv: HsvTripletSchema.optional(),
58405
58401
  /** Populated when `mode === 'mired'`. */
58406
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
58402
+ colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
58407
58403
  /** Ms epoch of the last operator-driven change. */
58408
58404
  lastChangedAt: number()
58409
58405
  });
@@ -58422,7 +58418,7 @@ DeviceType.Light, method(object({
58422
58418
  ]),
58423
58419
  rgb: RgbTripletSchema.optional(),
58424
58420
  hsv: HsvTripletSchema.optional(),
58425
- mireds: number().int().optional(),
58421
+ colorTemperature: number().int().optional(),
58426
58422
  lastChangedAt: number()
58427
58423
  });
58428
58424
  var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
@@ -58848,11 +58844,11 @@ object({
58848
58844
  /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
58849
58845
  availablePrograms: array(string()),
58850
58846
  /** Seconds remaining on the active cycle, or null when not running / not known. */
58851
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58847
+ remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58852
58848
  /** Seconds the delayed start is set to (time until the cycle starts), or null. */
58853
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58849
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
58854
58850
  /** Cycle completion 0..100, or null when not applicable. */
58855
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
58851
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
58856
58852
  /** True when the door is reported open; null when the door state is not known. */
58857
58853
  doorOpen: boolean().nullable(),
58858
58854
  /** True when the door is latched (locked) during a cycle; null when not reported. */
@@ -59470,7 +59466,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
59470
59466
  object({
59471
59467
  /** Active speed as 0..100 inclusive. Null when the device has no
59472
59468
  * speed surface (single-speed fan). */
59473
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59469
+ speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
59474
59470
  /** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
59475
59471
  * a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
59476
59472
  percentageStep: number().positive().optional().meta(readingMeta("percentage")),
@@ -59490,7 +59486,7 @@ object({
59490
59486
  });
59491
59487
  DeviceType.Fan, method(object({
59492
59488
  deviceId: number().int().nonnegative(),
59493
- percentage: number().min(0).max(100)
59489
+ speed: number().min(0).max(100)
59494
59490
  }), _void(), {
59495
59491
  kind: "mutation",
59496
59492
  auth: "protected"
@@ -59673,7 +59669,7 @@ DeviceType.Humidifier, method(object({
59673
59669
  });
59674
59670
  object({
59675
59671
  /** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
59676
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
59672
+ humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
59677
59673
  precision: 0,
59678
59674
  label: "Humidity"
59679
59675
  })),
@@ -60116,7 +60112,7 @@ object({
60116
60112
  batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60117
60113
  /** 0..100 mowing-completion percentage of the current task, or null when no
60118
60114
  * task is active / progress is unavailable. */
60119
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60115
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
60120
60116
  /** Current device/event code (dynamic — mostly status, sometimes an error),
60121
60117
  * or null when unknown. */
60122
60118
  currentCode: number().nullable().meta(readingMeta("none")),
@@ -60606,10 +60602,10 @@ object({
60606
60602
  currentMedia: MediaInfoSchema.nullable(),
60607
60603
  /** Current playback position in ms. Null when not seekable or
60608
60604
  * nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
60609
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60605
+ position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60610
60606
  /** Total duration of the current media in ms. Null when unknown
60611
60607
  * (live stream) or nothing is playing. */
60612
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60608
+ duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
60613
60609
  /** Shuffle toggle. Null when no shuffle surface.
60614
60610
  * Pair with `DeviceFeature.MediaPlayerShuffle`. */
60615
60611
  shuffle: boolean().nullable(),
@@ -60636,7 +60632,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
60636
60632
  auth: "protected"
60637
60633
  }), method(object({
60638
60634
  deviceId: number().int().nonnegative(),
60639
- positionMs: number().int().nonnegative()
60635
+ position: number().int().nonnegative()
60640
60636
  }), _void(), {
60641
60637
  kind: "mutation",
60642
60638
  auth: "protected"
@@ -61309,9 +61305,9 @@ var NetworkLinkStatusSchema = object({
61309
61305
  * one whose reading has not landed must not be drawn at 0 %. Consumers
61310
61306
  * SKIP a null rather than coerce it.
61311
61307
  */
61312
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61308
+ signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
61313
61309
  /** Raw received signal strength in dBm, when the firmware reports one. */
61314
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
61310
+ rssi: number().optional().meta(readingMeta("signal-level")),
61315
61311
  /** Network name of a wireless link, when the firmware reports it. */
61316
61312
  ssid: string().optional(),
61317
61313
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
@@ -62461,16 +62457,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
62461
62457
  auth: "admin"
62462
62458
  });
62463
62459
  object({
62464
- /** Instantaneous power draw in watts. */
62465
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
62460
+ /** Instantaneous power draw (watts). */
62461
+ power: number().optional().meta(readingMeta("power", { label: "Power" })),
62466
62462
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
62467
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
62468
- /** Voltage in volts. */
62469
- volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
62463
+ energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
62464
+ /** Voltage (volts). */
62465
+ voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
62470
62466
  /** Current in amperes. */
62471
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
62467
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
62472
62468
  /** Apparent power in volt-amperes. */
62473
- va: number().optional().meta(readingMeta("apparent-power")),
62469
+ apparentPower: number().optional().meta(readingMeta("apparent-power")),
62474
62470
  /** Power factor (0..1) if reported. */
62475
62471
  powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
62476
62472
  /** Ms epoch when the slice was last updated. */
@@ -62525,16 +62521,13 @@ object({
62525
62521
  location: string().nullable(),
62526
62522
  /** GPS coordinates when available. Null otherwise. */
62527
62523
  gps: GpsLocationSchema.nullable(),
62528
- /** Optional battery level of the tracking device (0..100). Null
62529
- * when not reported. */
62530
- batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
62531
62524
  /** Ms epoch when the slice was last updated. */
62532
62525
  lastChangedAt: number()
62533
62526
  });
62534
62527
  DeviceType.Presence;
62535
62528
  object({
62536
62529
  /** Current pressure in hPa. `null` when the sample was refused (D393). */
62537
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
62530
+ pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
62538
62531
  /** Ms epoch when the slice was last updated. */
62539
62532
  lastFetchedAt: number()
62540
62533
  });
@@ -65537,7 +65530,7 @@ object({
65537
65530
  DeviceType.Sensor;
65538
65531
  object({
65539
65532
  /** Current temperature in Celsius. `null` when the sample was refused (D393). */
65540
- celsius: number().nullable().meta(readingMeta("temperature", {
65533
+ temperature: number().nullable().meta(readingMeta("temperature", {
65541
65534
  precision: 1,
65542
65535
  label: "Temperature"
65543
65536
  })),
@@ -65801,7 +65794,7 @@ object({
65801
65794
  /** Speed tokens the hardware accepts — drives the UI selector. */
65802
65795
  availableFanSpeeds: array(string()),
65803
65796
  /** 0..100 cleaning-completion percentage of the current task, or null. */
65804
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65797
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65805
65798
  /** Current error code (0 / null = no error). */
65806
65799
  errorCode: number().nullable().meta(readingMeta("none")),
65807
65800
  /** Human label for {@link errorCode}, or null when none / undecodable. */
@@ -76869,7 +76862,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76869
76862
  label: t("Full brightness", "Luminosità massima"),
76870
76863
  phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
76871
76864
  icon: "sun",
76872
- args: { percentage: 100 }
76865
+ args: { level: 100 }
76873
76866
  },
76874
76867
  {
76875
76868
  id: "brightness.half",
@@ -76877,7 +76870,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76877
76870
  label: t("Half brightness", "Luminosità a metà"),
76878
76871
  phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
76879
76872
  icon: "sun-dim",
76880
- args: { percentage: 50 }
76873
+ args: { level: 50 }
76881
76874
  },
76882
76875
  {
76883
76876
  id: "brightness.off",
@@ -76885,16 +76878,16 @@ var ACTUATOR_CAP_VOCABULARY = {
76885
76878
  label: t("Brightness off", "Luminosità a zero"),
76886
76879
  phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
76887
76880
  icon: "lightbulb-off",
76888
- args: { percentage: 0 }
76881
+ args: { level: 0 }
76889
76882
  },
76890
76883
  {
76891
76884
  id: "brightness.set",
76892
76885
  method: "setBrightness",
76893
76886
  label: t("Set brightness", "Imposta la luminosità"),
76894
- phrase: t("Set the brightness of {device} to {percentage}", "Imposta la luminosità di {device} a {percentage}"),
76887
+ phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
76895
76888
  icon: "sun-medium",
76896
76889
  openArgs: [{
76897
- key: "percentage",
76890
+ key: "level",
76898
76891
  label: PERCENT,
76899
76892
  offer: {
76900
76893
  kind: "number",
@@ -76908,13 +76901,13 @@ var ACTUATOR_CAP_VOCABULARY = {
76908
76901
  ],
76909
76902
  state: [{
76910
76903
  kind: "numeric",
76911
- field: "percentage",
76904
+ field: "level",
76912
76905
  quantity: t("the brightness", "la luminosità"),
76913
76906
  label: t("Brightness", "Luminosità"),
76914
76907
  unit: "%",
76915
76908
  icon: "sun"
76916
76909
  }],
76917
- events: { onBrightnessChanged: { notOperatorFacing: "the `percentage` state trigger reads the same change" } }
76910
+ events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
76918
76911
  },
76919
76912
  color: {
76920
76913
  scope: "device",
@@ -76928,7 +76921,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76928
76921
  icon: "sun",
76929
76922
  args: { color: {
76930
76923
  mode: "mired",
76931
- mireds: 370
76924
+ colorTemperature: 370
76932
76925
  } }
76933
76926
  },
76934
76927
  {
@@ -76939,7 +76932,7 @@ var ACTUATOR_CAP_VOCABULARY = {
76939
76932
  icon: "snowflake",
76940
76933
  args: { color: {
76941
76934
  mode: "mired",
76942
- mireds: 200
76935
+ colorTemperature: 200
76943
76936
  } }
76944
76937
  },
76945
76938
  {
@@ -77553,7 +77546,7 @@ var ACTUATOR_CAP_VOCABULARY = {
77553
77546
  label: t("Fan off", "Ventilatore spento"),
77554
77547
  phrase: t("Stop {device}", "Ferma {device}"),
77555
77548
  icon: "power-off",
77556
- args: { percentage: 0 }
77549
+ args: { speed: 0 }
77557
77550
  },
77558
77551
  {
77559
77552
  id: "fan.full",
@@ -77561,16 +77554,16 @@ var ACTUATOR_CAP_VOCABULARY = {
77561
77554
  label: t("Fan full", "Ventilatore al massimo"),
77562
77555
  phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
77563
77556
  icon: "fan",
77564
- args: { percentage: 100 }
77557
+ args: { speed: 100 }
77565
77558
  },
77566
77559
  {
77567
77560
  id: "fan.speed",
77568
77561
  method: "setPercentage",
77569
77562
  label: t("Set speed", "Imposta la velocità"),
77570
- phrase: t("Set the speed of {device} to {percentage}", "Imposta la velocità di {device} al {percentage}"),
77563
+ phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
77571
77564
  icon: "fan",
77572
77565
  openArgs: [{
77573
- key: "percentage",
77566
+ key: "speed",
77574
77567
  label: t("Speed", "Velocità"),
77575
77568
  offer: {
77576
77569
  kind: "number",
@@ -77632,7 +77625,7 @@ var ACTUATOR_CAP_VOCABULARY = {
77632
77625
  ],
77633
77626
  state: [{
77634
77627
  kind: "numeric",
77635
- field: "percentage",
77628
+ field: "speed",
77636
77629
  quantity: t("the speed", "la velocità"),
77637
77630
  label: t("Speed", "Velocità"),
77638
77631
  unit: "%",
@@ -78430,7 +78423,7 @@ var APPLIANCE_CAP_VOCABULARY = {
78430
78423
  },
78431
78424
  {
78432
78425
  kind: "numeric",
78433
- field: "progressPercent",
78426
+ field: "progress",
78434
78427
  quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
78435
78428
  label: t("Progress", "Avanzamento"),
78436
78429
  unit: "%",
@@ -78788,10 +78781,10 @@ var APPLIANCE_CAP_VOCABULARY = {
78788
78781
  id: "media.seek",
78789
78782
  method: "seek",
78790
78783
  label: t("Seek", "Vai al punto"),
78791
- phrase: t("Move {device} to {positionMs}", "Porta {device} al punto {positionMs}"),
78784
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
78792
78785
  icon: "fast-forward",
78793
78786
  openArgs: [{
78794
- key: "positionMs",
78787
+ key: "position",
78795
78788
  label: t("Position", "Posizione"),
78796
78789
  offer: {
78797
78790
  kind: "number",
@@ -79840,7 +79833,7 @@ var SENSOR_CAP_VOCABULARY = {
79840
79833
  state: [
79841
79834
  {
79842
79835
  kind: "numeric",
79843
- field: "co2Ppm",
79836
+ field: "co2",
79844
79837
  quantity: t("the CO₂", "la CO₂"),
79845
79838
  label: t("CO₂", "CO₂"),
79846
79839
  unit: "ppm",
@@ -79848,7 +79841,7 @@ var SENSOR_CAP_VOCABULARY = {
79848
79841
  },
79849
79842
  {
79850
79843
  kind: "numeric",
79851
- field: "vocPpb",
79844
+ field: "voc",
79852
79845
  quantity: t("the VOC level", "il livello di COV"),
79853
79846
  label: t("VOC", "COV"),
79854
79847
  unit: "ppb",
@@ -79884,7 +79877,7 @@ var SENSOR_CAP_VOCABULARY = {
79884
79877
  noun: t("Light level", "Luminosità ambiente"),
79885
79878
  state: [{
79886
79879
  kind: "numeric",
79887
- field: "lux",
79880
+ field: "illuminance",
79888
79881
  quantity: t("the light level", "la luminosità"),
79889
79882
  label: t("Illuminance", "Illuminamento"),
79890
79883
  unit: "lx",
@@ -80087,7 +80080,7 @@ var SENSOR_CAP_VOCABULARY = {
80087
80080
  noun: t("Humidity", "Umidità"),
80088
80081
  state: [{
80089
80082
  kind: "numeric",
80090
- field: "percent",
80083
+ field: "humidity",
80091
80084
  quantity: t("the humidity", "l’umidità"),
80092
80085
  label: t("Humidity", "Umidità"),
80093
80086
  unit: "%",
@@ -80135,7 +80128,7 @@ var SENSOR_CAP_VOCABULARY = {
80135
80128
  state: [
80136
80129
  {
80137
80130
  kind: "numeric",
80138
- field: "watts",
80131
+ field: "power",
80139
80132
  quantity: t("the power draw", "il consumo"),
80140
80133
  label: t("Power", "Potenza"),
80141
80134
  unit: "W",
@@ -80143,7 +80136,7 @@ var SENSOR_CAP_VOCABULARY = {
80143
80136
  },
80144
80137
  {
80145
80138
  kind: "numeric",
80146
- field: "kwhTotal",
80139
+ field: "energy",
80147
80140
  quantity: t("the energy used", "l’energia consumata"),
80148
80141
  label: t("Energy", "Energia"),
80149
80142
  unit: "kWh",
@@ -80151,7 +80144,7 @@ var SENSOR_CAP_VOCABULARY = {
80151
80144
  },
80152
80145
  {
80153
80146
  kind: "numeric",
80154
- field: "volts",
80147
+ field: "voltage",
80155
80148
  quantity: t("the voltage", "la tensione"),
80156
80149
  label: t("Voltage", "Tensione"),
80157
80150
  unit: "V",
@@ -80159,7 +80152,7 @@ var SENSOR_CAP_VOCABULARY = {
80159
80152
  },
80160
80153
  {
80161
80154
  kind: "numeric",
80162
- field: "amps",
80155
+ field: "current",
80163
80156
  quantity: t("the current", "la corrente"),
80164
80157
  label: t("Current", "Corrente"),
80165
80158
  unit: "A",
@@ -80176,13 +80169,6 @@ var SENSOR_CAP_VOCABULARY = {
80176
80169
  label: t("Where", "Posizione"),
80177
80170
  phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
80178
80171
  icon: "map-pin"
80179
- }, {
80180
- kind: "numeric",
80181
- field: "batteryPercent",
80182
- quantity: t("the phone battery", "la batteria del telefono"),
80183
- label: t("Battery", "Batteria"),
80184
- unit: "%",
80185
- icon: "battery"
80186
80172
  }]
80187
80173
  },
80188
80174
  "pressure-sensor": {
@@ -80190,7 +80176,7 @@ var SENSOR_CAP_VOCABULARY = {
80190
80176
  noun: t("Pressure", "Pressione"),
80191
80177
  state: [{
80192
80178
  kind: "numeric",
80193
- field: "hpa",
80179
+ field: "pressure",
80194
80180
  quantity: t("the pressure", "la pressione"),
80195
80181
  label: t("Pressure", "Pressione"),
80196
80182
  unit: "hPa",
@@ -80226,7 +80212,7 @@ var SENSOR_CAP_VOCABULARY = {
80226
80212
  noun: t("Temperature", "Temperatura"),
80227
80213
  state: [{
80228
80214
  kind: "numeric",
80229
- field: "celsius",
80215
+ field: "temperature",
80230
80216
  quantity: t("the temperature", "la temperatura"),
80231
80217
  label: t("Temperature", "Temperatura"),
80232
80218
  unit: "°C",
@@ -80297,7 +80283,7 @@ var SENSOR_CAP_VOCABULARY = {
80297
80283
  state: [
80298
80284
  {
80299
80285
  kind: "numeric",
80300
- field: "percentage",
80286
+ field: "level",
80301
80287
  quantity: t("the battery level", "il livello della batteria"),
80302
80288
  label: t("Battery", "Batteria"),
80303
80289
  unit: "%",
@@ -80339,7 +80325,7 @@ var SENSOR_CAP_VOCABULARY = {
80339
80325
  icon: "battery-charging"
80340
80326
  }
80341
80327
  ],
80342
- events: { onStatusChanged: { notOperatorFacing: "the percentage / sleeping / charging state triggers each read one field of this change" } },
80328
+ events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
80343
80329
  extraEvents: [{
80344
80330
  category: EventCategory.DeviceAwake,
80345
80331
  label: t("Woke up", "Risvegliato"),
@@ -80357,7 +80343,7 @@ var SENSOR_CAP_VOCABULARY = {
80357
80343
  noun: t("Network link", "Collegamento di rete"),
80358
80344
  state: [{
80359
80345
  kind: "numeric",
80360
- field: "signalPercent",
80346
+ field: "signal",
80361
80347
  quantity: t("the signal strength", "l’intensità del segnale"),
80362
80348
  label: t("Signal", "Segnale"),
80363
80349
  unit: "%",