@camstack/addon-pipeline 1.2.601 → 1.2.602

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/audio-analyzer/index.js +3 -3
  2. package/dist/audio-analyzer/index.mjs +3 -3
  3. package/dist/{custom-model-catalog-CK9GK3N5.mjs → custom-model-catalog--ms2wSDI.mjs} +2 -2
  4. package/dist/{custom-model-catalog-DgyafyuW.js → custom-model-catalog-CVvdKnH2.js} +2 -2
  5. package/dist/detection-pipeline/index.js +4 -4
  6. package/dist/detection-pipeline/index.mjs +4 -4
  7. package/dist/{dist-BqI10eLV.js → dist-B4HyxJe1.js} +308 -8
  8. package/dist/{dist-BaHsDOWa.mjs → dist-BmSyTuy4.mjs} +308 -8
  9. package/dist/{model-catalogs-DhGVt_sH.js → model-catalogs-Bj0f2Obs.js} +1 -1
  10. package/dist/{model-catalogs-DM5sVj1T.mjs → model-catalogs-OnXVUgQY.mjs} +1 -1
  11. package/dist/motion-wasm/index.js +1 -1
  12. package/dist/motion-wasm/index.mjs +1 -1
  13. package/dist/{node-B0a0dXhg.mjs → node--4HtlkFo.mjs} +1 -1
  14. package/dist/{node-CgwqjGz0.js → node-DfuKhWUZ.js} +1 -1
  15. package/dist/pipeline-runner/index.js +3 -3
  16. package/dist/pipeline-runner/index.mjs +3 -3
  17. package/dist/{process-memory-C0zbWvwD.js → process-memory-BZ1_q3g3.js} +1 -1
  18. package/dist/{process-memory-sfdcLVkW.mjs → process-memory-uf7ZfkSz.mjs} +1 -1
  19. package/dist/recorder/index.js +115 -14
  20. package/dist/recorder/index.mjs +115 -14
  21. package/dist/{segment-demux-js-B9lL2VCC.js → segment-demux-js-C7fMqBGZ.js} +1 -1
  22. package/dist/{segment-demux-js-BB4CUAB5.mjs → segment-demux-js-CURD3CEv.mjs} +1 -1
  23. package/dist/stream-broker/_stub.js +2 -2
  24. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CbN9DjoK.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Cd6rjANN.mjs} +3 -3
  25. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DUPQbxcH.mjs +26 -0
  26. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CGcD3ujP.mjs +26 -0
  27. package/dist/stream-broker/demux-worker-child.js +1 -1
  28. package/dist/stream-broker/demux-worker-child.mjs +1 -1
  29. package/dist/stream-broker/{hostInit-BSYHAfPt.mjs → hostInit-CV-FMXnr.mjs} +3 -3
  30. package/dist/stream-broker/index.js +3 -3
  31. package/dist/stream-broker/index.mjs +3 -3
  32. package/dist/stream-broker/remoteEntry.js +1 -1
  33. package/package.json +1 -1
  34. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Boq8JqyD.mjs +0 -26
  35. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-B25q1OKG.mjs +0 -26
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BqI10eLV.js");
7
- const require_model_catalogs = require("../model-catalogs-DhGVt_sH.js");
8
- const require_process_memory = require("../process-memory-C0zbWvwD.js");
6
+ const require_dist = require("../dist-B4HyxJe1.js");
7
+ const require_model_catalogs = require("../model-catalogs-Bj0f2Obs.js");
8
+ const require_process_memory = require("../process-memory-BZ1_q3g3.js");
9
9
  let node_fs = require("node:fs");
10
10
  node_fs = require_chunk.__toESM(node_fs);
11
11
  let node_path = require("node:path");
@@ -1,7 +1,7 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $ as audioAnalyzerCapability, An as errMsg, F as PoolMemoryWatchdog, Hn as expandAudioChunkToF32le, Ln as audioChunkBytesPerSample, Lt as mapAudioLabelToMacro, Mn as BaseAddon, Q as audioAnalysisCapability, Wn as hydrateSchema, Xn as nodePin, cn as resolvePoolMemoryPolicy, h as DEFAULT_AUDIO_ANALYZER_CONFIG, pr as EventCategory, r as AUDIO_BACKEND_CHOICES } from "../dist-BaHsDOWa.mjs";
3
- import { n as AUDIO_CLASSIFIER_MODELS } from "../model-catalogs-DM5sVj1T.mjs";
4
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-sfdcLVkW.mjs";
2
+ import { $ as audioAnalyzerCapability, An as errMsg, F as PoolMemoryWatchdog, Hn as expandAudioChunkToF32le, Ln as audioChunkBytesPerSample, Lt as mapAudioLabelToMacro, Mn as BaseAddon, Q as audioAnalysisCapability, Wn as hydrateSchema, Xn as nodePin, cn as resolvePoolMemoryPolicy, h as DEFAULT_AUDIO_ANALYZER_CONFIG, pr as EventCategory, r as AUDIO_BACKEND_CHOICES } from "../dist-BmSyTuy4.mjs";
3
+ import { n as AUDIO_CLASSIFIER_MODELS } from "../model-catalogs-OnXVUgQY.mjs";
4
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-uf7ZfkSz.mjs";
5
5
  import * as fs from "node:fs";
6
6
  import * as path$1 from "node:path";
7
7
  import { ensureModel } from "@camstack/system/addon-utils";
@@ -1,5 +1,5 @@
1
- import { b as DEVICE_BACKEND_TO_FORMAT, et as audioKindId, f as COCO_80_LABELS, i as AUDIO_MACRO_LABELS, jt as inferModelProvider, k as LABEL_SUPPLY_VOCABULARIES, p as COCO_TO_MACRO, pn as stepModelRunsOnFormat } from "./dist-BaHsDOWa.mjs";
2
- import { a as FACE_DETECTION_MODELS, c as OBJECT_DETECTION_MODELS, d as PLATE_OCR_MODELS, f as SEGMENTATION_REFINER_MODELS, i as CLIP_EMBEDDING_MODELS, l as PACKAGE_DETECTION_MODELS, n as AUDIO_CLASSIFIER_MODELS, o as FACE_EMBEDDING_MODELS, p as VEHICLE_CLASSIFIER_MODELS, r as BIRD_CLASSIFIER_MODELS, s as INSTANCE_SEGMENTATION_MODELS, t as ANIMAL_CLASSIFIER_MODELS, u as PLATE_DETECTION_MODELS } from "./model-catalogs-DM5sVj1T.mjs";
1
+ import { b as DEVICE_BACKEND_TO_FORMAT, et as audioKindId, f as COCO_80_LABELS, i as AUDIO_MACRO_LABELS, jt as inferModelProvider, k as LABEL_SUPPLY_VOCABULARIES, p as COCO_TO_MACRO, pn as stepModelRunsOnFormat } from "./dist-BmSyTuy4.mjs";
2
+ import { a as FACE_DETECTION_MODELS, c as OBJECT_DETECTION_MODELS, d as PLATE_OCR_MODELS, f as SEGMENTATION_REFINER_MODELS, i as CLIP_EMBEDDING_MODELS, l as PACKAGE_DETECTION_MODELS, n as AUDIO_CLASSIFIER_MODELS, o as FACE_EMBEDDING_MODELS, p as VEHICLE_CLASSIFIER_MODELS, r as BIRD_CLASSIFIER_MODELS, s as INSTANCE_SEGMENTATION_MODELS, t as ANIMAL_CLASSIFIER_MODELS, u as PLATE_DETECTION_MODELS } from "./model-catalogs-OnXVUgQY.mjs";
3
3
  import { t as isWorkerReply } from "./worker-protocol-D_NzPcnh.mjs";
4
4
  import { randomUUID } from "node:crypto";
5
5
  //#region src/detection-pipeline/registry/effective-confidence.ts
@@ -1,5 +1,5 @@
1
- const require_dist = require("./dist-BqI10eLV.js");
2
- const require_model_catalogs = require("./model-catalogs-DhGVt_sH.js");
1
+ const require_dist = require("./dist-B4HyxJe1.js");
2
+ const require_model_catalogs = require("./model-catalogs-Bj0f2Obs.js");
3
3
  const require_worker_protocol = require("./worker-protocol-C-G8qmye.js");
4
4
  let node_crypto = require("node:crypto");
5
5
  //#region src/detection-pipeline/registry/effective-confidence.ts
@@ -3,11 +3,11 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BqI10eLV.js");
7
- const require_node = require("../node-CgwqjGz0.js");
8
- const require_custom_model_catalog = require("../custom-model-catalog-DgyafyuW.js");
6
+ const require_dist = require("../dist-B4HyxJe1.js");
7
+ const require_node = require("../node-DfuKhWUZ.js");
8
+ const require_custom_model_catalog = require("../custom-model-catalog-CVvdKnH2.js");
9
9
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
10
- const require_process_memory = require("../process-memory-C0zbWvwD.js");
10
+ const require_process_memory = require("../process-memory-BZ1_q3g3.js");
11
11
  let node_os = require("node:os");
12
12
  node_os = require_chunk.__toESM(node_os);
13
13
  let node_fs = require("node:fs");
@@ -1,9 +1,9 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { $n as sleep, An as errMsg$1, F as PoolMemoryWatchdog, Ft as loadContributionCapability, Gt as overlayClusterStepSettings, Mn as BaseAddon, Nt as linkedLabelStepId, O as LABEL_SUPPLY_MACRO, Rn as createEvent, St as evaluateZoneRules, Un as hfModelUrl, Ut as modelBindingKey, Wn as hydrateSchema, X as applyModelBoundSettings, Xn as nodePin, Xt as pipelineExecutorCapability, _t as detectionPipelineCapability, cn as resolvePoolMemoryPolicy, cr as object, ct as containingParentIndex, d as CLUSTER_MODEL_SCOPED_STEPS, dn as rootSuppliesOf, dr as string, fn as runtimeDevices$1, fr as union, ft as defaultDeviceFor$1, g as DEFAULT_CLUSTER_STEP_SETTINGS, n as APPLE_SA_TO_MACRO, nr as array, pn as stepModelRunsOnFormat, pr as EventCategory, q as YAMNET_TO_MACRO, qt as pickClusterStepSettings, rn as resolveClusterStepModelId, st as collectModelBoundKeys, vn as supportedRuntimes$1, xt as enumerateInferenceDevices } from "../dist-BaHsDOWa.mjs";
3
- import { c as readProcessCost } from "../node-B0a0dXhg.mjs";
4
- import { C as resolveModelDefaultConfidence, S as landmarkPrecisionVerdict, _ as ALL_STEPS, b as getStepDefinition, f as localFrameRegistry, g as ALL_PIPELINE_STEPS, l as resolveDefaultDetectionModel, n as mergeCustomModels, o as deviceKeyOf, r as buildSubtreeCanRun, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, v as getDefaultModelForFormat, x as resolveModelForFormat, y as getStep } from "../custom-model-catalog-CK9GK3N5.mjs";
2
+ import { $n as sleep, An as errMsg$1, F as PoolMemoryWatchdog, Ft as loadContributionCapability, Gt as overlayClusterStepSettings, Mn as BaseAddon, Nt as linkedLabelStepId, O as LABEL_SUPPLY_MACRO, Rn as createEvent, St as evaluateZoneRules, Un as hfModelUrl, Ut as modelBindingKey, Wn as hydrateSchema, X as applyModelBoundSettings, Xn as nodePin, Xt as pipelineExecutorCapability, _t as detectionPipelineCapability, cn as resolvePoolMemoryPolicy, cr as object, ct as containingParentIndex, d as CLUSTER_MODEL_SCOPED_STEPS, dn as rootSuppliesOf, dr as string, fn as runtimeDevices$1, fr as union, ft as defaultDeviceFor$1, g as DEFAULT_CLUSTER_STEP_SETTINGS, n as APPLE_SA_TO_MACRO, nr as array, pn as stepModelRunsOnFormat, pr as EventCategory, q as YAMNET_TO_MACRO, qt as pickClusterStepSettings, rn as resolveClusterStepModelId, st as collectModelBoundKeys, vn as supportedRuntimes$1, xt as enumerateInferenceDevices } from "../dist-BmSyTuy4.mjs";
3
+ import { c as readProcessCost } from "../node--4HtlkFo.mjs";
4
+ import { C as resolveModelDefaultConfidence, S as landmarkPrecisionVerdict, _ as ALL_STEPS, b as getStepDefinition, f as localFrameRegistry, g as ALL_PIPELINE_STEPS, l as resolveDefaultDetectionModel, n as mergeCustomModels, o as deviceKeyOf, r as buildSubtreeCanRun, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, v as getDefaultModelForFormat, x as resolveModelForFormat, y as getStep } from "../custom-model-catalog--ms2wSDI.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
6
- import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-sfdcLVkW.mjs";
6
+ import { n as pickNodePlatformArch, t as readProcessMemory } from "../process-memory-uf7ZfkSz.mjs";
7
7
  import * as os$1 from "node:os";
8
8
  import * as fs from "node:fs";
9
9
  import * as path$1 from "node:path";
@@ -5538,7 +5538,7 @@ var ZodIssueCode = {
5538
5538
  var ZodFirstPartyTypeKind;
5539
5539
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5540
5540
  //#endregion
5541
- //#region ../types/dist/sleep-bZIhUvjd.mjs
5541
+ //#region ../types/dist/sleep-BegKjwUu.mjs
5542
5542
  /**
5543
5543
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5544
5544
  * window to float samples (D455).
@@ -9049,7 +9049,7 @@ function sleep(ms) {
9049
9049
  return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
9050
9050
  }
9051
9051
  //#endregion
9052
- //#region ../types/dist/err-msg--2RrYiLO.mjs
9052
+ //#region ../types/dist/err-msg-BXKzRBwg.mjs
9053
9053
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
9054
9054
  DeviceType["Camera"] = "camera";
9055
9055
  DeviceType["Hub"] = "hub";
@@ -9141,6 +9141,10 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
9141
9141
  * native PetKit (`nodepetkit` `FeederDevice`), reusable by other feeder
9142
9142
  * integrations sharing the same food/desiccant/hopper surface. */
9143
9143
  DeviceType["PetFeeder"] = "pet-feeder";
9144
+ /** Built-in dishwasher — program lifecycle, door / remote-start gates,
9145
+ * salt and rinse-aid levels. Installed with the `dishwasher` cap.
9146
+ * Sources: native Bosch Home Connect, reusable by similar integrations. */
9147
+ DeviceType["Dishwasher"] = "dishwasher";
9144
9148
  return DeviceType;
9145
9149
  }({});
9146
9150
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -9398,7 +9402,7 @@ function errMsg(err) {
9398
9402
  return String(err);
9399
9403
  }
9400
9404
  //#endregion
9401
- //#region ../types/dist/composition-DOwQB_Ua.mjs
9405
+ //#region ../types/dist/composition-CB6PMT9p.mjs
9402
9406
  var AUDIO_ENCODER_BY_CODEC = {
9403
9407
  opus: "libopus",
9404
9408
  aac: "aac",
@@ -15960,8 +15964,13 @@ var AlertSeveritySchema = _enum([
15960
15964
  "info",
15961
15965
  "success",
15962
15966
  "warning",
15963
- "error"
15967
+ "error",
15968
+ "critical"
15964
15969
  ]);
15970
+ var AlertActionSchema = object({
15971
+ label: string(),
15972
+ href: string().optional()
15973
+ });
15965
15974
  var AlertStatusSchema = _enum([
15966
15975
  "active",
15967
15976
  "in-progress",
@@ -15979,6 +15988,7 @@ var AlertSchema = object({
15979
15988
  severity: AlertSeveritySchema,
15980
15989
  title: string(),
15981
15990
  message: string(),
15991
+ action: AlertActionSchema.optional(),
15982
15992
  status: AlertStatusSchema,
15983
15993
  progress: number().optional(),
15984
15994
  read: boolean(),
@@ -20607,7 +20617,11 @@ DeviceType.Hub, DeviceDiscoveryStatusSchema.extend({ lastFetchedAt: number().int
20607
20617
  });
20608
20618
  /**
20609
20619
  * `device-adoption` — generic discovery + adoption surface,
20610
- * system-scoped singleton. The de-HA-ified successor to `ha-discovery`:
20620
+ * system-scoped collection (one provider per integration addon), routed
20621
+ * by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
20622
+ * pin model as `connection-test`. The admin UI keeps using
20623
+ * `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
20624
+ * successor to `ha-discovery`:
20611
20625
  * keyed by `integrationId` (the addon resolves integrationId → broker
20612
20626
  * internally) rather than a connection-specific `brokerId`, and it
20613
20627
  * REUSES the shared `DiscoveredChildDevice` candidate type from
@@ -57691,7 +57705,8 @@ var batteryCapability = {
57691
57705
  DeviceType.Button,
57692
57706
  DeviceType.Switch,
57693
57707
  DeviceType.PetFeeder,
57694
- DeviceType.Container
57708
+ DeviceType.Container,
57709
+ DeviceType.Thermostat
57695
57710
  ],
57696
57711
  methods: {
57697
57712
  /**
@@ -58645,6 +58660,130 @@ object({
58645
58660
  deviceId: number(),
58646
58661
  status: DeviceStatusSchema
58647
58662
  });
58663
+ /**
58664
+ * Smart-dishwasher cap — program lifecycle, door / remote-start gates,
58665
+ * consumable levels (salt, rinse aid) and common program options.
58666
+ *
58667
+ * Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
58668
+ * by any integration that exposes the same program / option surface.
58669
+ *
58670
+ * `kind: 'poll'` — cloud REST APIs typically have no push channel; the
58671
+ * provider refreshes the slice on an interval and eagerly after commands.
58672
+ */
58673
+ var DishwasherStateSchema = _enum([
58674
+ "idle",
58675
+ "running",
58676
+ "paused",
58677
+ "finished",
58678
+ "error",
58679
+ "unavailable"
58680
+ ]);
58681
+ var DishwasherConsumableLevelSchema = _enum([
58682
+ "ok",
58683
+ "low",
58684
+ "empty"
58685
+ ]);
58686
+ object({
58687
+ state: DishwasherStateSchema,
58688
+ /** Active program id/name, or null when none selected / unknown. */
58689
+ program: string().nullable(),
58690
+ /** Program tokens the hardware accepts — drives the UI selector. */
58691
+ availablePrograms: array(string()),
58692
+ /** Minutes remaining on the active cycle, or null when not running. */
58693
+ remainingMinutes: number().int().nonnegative().nullable(),
58694
+ /** Cycle completion 0..100, or null when not applicable. */
58695
+ progressPercent: number().min(0).max(100).nullable(),
58696
+ /** True when the door is reported open. */
58697
+ doorOpen: boolean(),
58698
+ /** True when remote start is allowed (door closed, power on, etc.). */
58699
+ remoteStartAllowed: boolean(),
58700
+ /** Main power / switched-on state. */
58701
+ powerOn: boolean(),
58702
+ saltLevel: DishwasherConsumableLevelSchema.nullable(),
58703
+ rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
58704
+ halfLoad: boolean(),
58705
+ hygienePlus: boolean(),
58706
+ /** Extra dry option when the appliance exposes it. */
58707
+ extraDry: boolean(),
58708
+ /** Intensive zone (lower basket) when the appliance exposes it. */
58709
+ intensiveZone: boolean(),
58710
+ /** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
58711
+ varioSpeedPlus: boolean(),
58712
+ /** Child lock (controls disabled on the appliance). */
58713
+ childLock: boolean(),
58714
+ errorCode: number().nullable(),
58715
+ errorLabel: string().nullable(),
58716
+ lastFetchedAt: number()
58717
+ });
58718
+ DeviceType.Dishwasher, method(object({ deviceId: number().int().nonnegative() }), _void(), {
58719
+ kind: "mutation",
58720
+ auth: "protected"
58721
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
58722
+ kind: "mutation",
58723
+ auth: "protected"
58724
+ }), method(object({ deviceId: number().int().nonnegative() }), _void(), {
58725
+ kind: "mutation",
58726
+ auth: "protected"
58727
+ }), method(object({
58728
+ deviceId: number().int().nonnegative(),
58729
+ program: string().min(1)
58730
+ }), _void(), {
58731
+ kind: "mutation",
58732
+ auth: "protected"
58733
+ }), method(object({
58734
+ deviceId: number().int().nonnegative(),
58735
+ on: boolean()
58736
+ }), _void(), {
58737
+ kind: "mutation",
58738
+ auth: "protected"
58739
+ }), method(object({
58740
+ deviceId: number().int().nonnegative(),
58741
+ on: boolean()
58742
+ }), _void(), {
58743
+ kind: "mutation",
58744
+ auth: "protected"
58745
+ }), method(object({
58746
+ deviceId: number().int().nonnegative(),
58747
+ on: boolean()
58748
+ }), _void(), {
58749
+ kind: "mutation",
58750
+ auth: "protected"
58751
+ }), method(object({
58752
+ deviceId: number().int().nonnegative(),
58753
+ on: boolean()
58754
+ }), _void(), {
58755
+ kind: "mutation",
58756
+ auth: "protected"
58757
+ }), method(object({
58758
+ deviceId: number().int().nonnegative(),
58759
+ on: boolean()
58760
+ }), _void(), {
58761
+ kind: "mutation",
58762
+ auth: "protected"
58763
+ }), method(object({
58764
+ deviceId: number().int().nonnegative(),
58765
+ on: boolean()
58766
+ }), _void(), {
58767
+ kind: "mutation",
58768
+ auth: "protected"
58769
+ }), method(object({
58770
+ deviceId: number().int().nonnegative(),
58771
+ on: boolean()
58772
+ }), _void(), {
58773
+ kind: "mutation",
58774
+ auth: "protected"
58775
+ }), method(object({
58776
+ deviceId: number().int().nonnegative(),
58777
+ key: string().min(1),
58778
+ value: union([
58779
+ boolean(),
58780
+ string(),
58781
+ number()
58782
+ ])
58783
+ }), _void(), {
58784
+ kind: "mutation",
58785
+ auth: "protected"
58786
+ });
58648
58787
  object({
58649
58788
  /** Ms epoch of the last press. null = never observed since this provider started. */
58650
58789
  lastPressedAt: number().nullable(),
@@ -59210,6 +59349,13 @@ object({
59210
59349
  lastChangedAt: number()
59211
59350
  });
59212
59351
  DeviceType.Sensor;
59352
+ object({
59353
+ /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
59354
+ position: number().min(0).max(100).nullable(),
59355
+ /** Ms epoch when the slice was last updated (push or poll). */
59356
+ lastFetchedAt: number()
59357
+ });
59358
+ DeviceType.Thermostat;
59213
59359
  object({
59214
59360
  /** Whether the humidifier is currently on. */
59215
59361
  on: boolean(),
@@ -66818,7 +66964,7 @@ function deriveBatteryPresence(input) {
66818
66964
  const budget = input.unreachableAfterMs ?? 216e5;
66819
66965
  return input.nowMs - lastContactAt > budget ? "unreachable" : "sleeping";
66820
66966
  }
66821
- DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
66967
+ DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Camera, DeviceType.Hub, DeviceType.Switch, DeviceType.Siren, DeviceType.Light, DeviceType.Fan, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
66822
66968
  new Set(Object.values(DeviceType));
66823
66969
  Object.freeze({
66824
66970
  "accessories.getStatus": {
@@ -69239,6 +69385,84 @@ Object.freeze({
69239
69385
  addonId: null,
69240
69386
  access: "view"
69241
69387
  },
69388
+ "dishwasher.getStatus": {
69389
+ capName: "dishwasher",
69390
+ capScope: "device",
69391
+ addonId: null,
69392
+ access: "view"
69393
+ },
69394
+ "dishwasher.pause": {
69395
+ capName: "dishwasher",
69396
+ capScope: "device",
69397
+ addonId: null,
69398
+ access: "create"
69399
+ },
69400
+ "dishwasher.setChildLock": {
69401
+ capName: "dishwasher",
69402
+ capScope: "device",
69403
+ addonId: null,
69404
+ access: "create"
69405
+ },
69406
+ "dishwasher.setExtraDry": {
69407
+ capName: "dishwasher",
69408
+ capScope: "device",
69409
+ addonId: null,
69410
+ access: "create"
69411
+ },
69412
+ "dishwasher.setHalfLoad": {
69413
+ capName: "dishwasher",
69414
+ capScope: "device",
69415
+ addonId: null,
69416
+ access: "create"
69417
+ },
69418
+ "dishwasher.setHygienePlus": {
69419
+ capName: "dishwasher",
69420
+ capScope: "device",
69421
+ addonId: null,
69422
+ access: "create"
69423
+ },
69424
+ "dishwasher.setIntensiveZone": {
69425
+ capName: "dishwasher",
69426
+ capScope: "device",
69427
+ addonId: null,
69428
+ access: "create"
69429
+ },
69430
+ "dishwasher.setOption": {
69431
+ capName: "dishwasher",
69432
+ capScope: "device",
69433
+ addonId: null,
69434
+ access: "create"
69435
+ },
69436
+ "dishwasher.setPower": {
69437
+ capName: "dishwasher",
69438
+ capScope: "device",
69439
+ addonId: null,
69440
+ access: "create"
69441
+ },
69442
+ "dishwasher.setProgram": {
69443
+ capName: "dishwasher",
69444
+ capScope: "device",
69445
+ addonId: null,
69446
+ access: "create"
69447
+ },
69448
+ "dishwasher.setVarioSpeedPlus": {
69449
+ capName: "dishwasher",
69450
+ capScope: "device",
69451
+ addonId: null,
69452
+ access: "create"
69453
+ },
69454
+ "dishwasher.start": {
69455
+ capName: "dishwasher",
69456
+ capScope: "device",
69457
+ addonId: null,
69458
+ access: "create"
69459
+ },
69460
+ "dishwasher.stop": {
69461
+ capName: "dishwasher",
69462
+ capScope: "device",
69463
+ addonId: null,
69464
+ access: "create"
69465
+ },
69242
69466
  "doorbell.getStatus": {
69243
69467
  capName: "doorbell",
69244
69468
  capScope: "device",
@@ -69449,6 +69673,12 @@ Object.freeze({
69449
69673
  addonId: null,
69450
69674
  access: "view"
69451
69675
  },
69676
+ "heatingValve.getStatus": {
69677
+ capName: "heating-valve",
69678
+ capScope: "device",
69679
+ addonId: null,
69680
+ access: "view"
69681
+ },
69452
69682
  "humidifier.getStatus": {
69453
69683
  capName: "humidifier",
69454
69684
  capScope: "device",
@@ -75036,7 +75266,7 @@ Object.freeze({
75036
75266
  access: "create"
75037
75267
  }
75038
75268
  });
75039
- DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder;
75269
+ DeviceType.Camera, DeviceType.Hub, DeviceType.Light, DeviceType.Siren, DeviceType.Switch, DeviceType.Sensor, DeviceType.Thermostat, DeviceType.Climate, DeviceType.Button, DeviceType.EventEmitter, DeviceType.Update, DeviceType.Generic, DeviceType.Notifier, DeviceType.Script, DeviceType.Automation, DeviceType.Lock, DeviceType.Cover, DeviceType.Valve, DeviceType.Humidifier, DeviceType.WaterHeater, DeviceType.Fan, DeviceType.MediaPlayer, DeviceType.AlarmPanel, DeviceType.Control, DeviceType.Presence, DeviceType.Weather, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.Container, DeviceType.Image, DeviceType.PetFeeder, DeviceType.Dishwasher;
75040
75270
  DeviceFeature.BatteryOperated;
75041
75271
  Object.freeze({
75042
75272
  "accessories.getStatus": [{
@@ -75860,6 +76090,71 @@ Object.freeze({
75860
76090
  form: "single",
75861
76091
  optional: false
75862
76092
  }],
76093
+ "dishwasher.getStatus": [{
76094
+ name: "deviceId",
76095
+ form: "single",
76096
+ optional: false
76097
+ }],
76098
+ "dishwasher.pause": [{
76099
+ name: "deviceId",
76100
+ form: "single",
76101
+ optional: false
76102
+ }],
76103
+ "dishwasher.setChildLock": [{
76104
+ name: "deviceId",
76105
+ form: "single",
76106
+ optional: false
76107
+ }],
76108
+ "dishwasher.setExtraDry": [{
76109
+ name: "deviceId",
76110
+ form: "single",
76111
+ optional: false
76112
+ }],
76113
+ "dishwasher.setHalfLoad": [{
76114
+ name: "deviceId",
76115
+ form: "single",
76116
+ optional: false
76117
+ }],
76118
+ "dishwasher.setHygienePlus": [{
76119
+ name: "deviceId",
76120
+ form: "single",
76121
+ optional: false
76122
+ }],
76123
+ "dishwasher.setIntensiveZone": [{
76124
+ name: "deviceId",
76125
+ form: "single",
76126
+ optional: false
76127
+ }],
76128
+ "dishwasher.setOption": [{
76129
+ name: "deviceId",
76130
+ form: "single",
76131
+ optional: false
76132
+ }],
76133
+ "dishwasher.setPower": [{
76134
+ name: "deviceId",
76135
+ form: "single",
76136
+ optional: false
76137
+ }],
76138
+ "dishwasher.setProgram": [{
76139
+ name: "deviceId",
76140
+ form: "single",
76141
+ optional: false
76142
+ }],
76143
+ "dishwasher.setVarioSpeedPlus": [{
76144
+ name: "deviceId",
76145
+ form: "single",
76146
+ optional: false
76147
+ }],
76148
+ "dishwasher.start": [{
76149
+ name: "deviceId",
76150
+ form: "single",
76151
+ optional: false
76152
+ }],
76153
+ "dishwasher.stop": [{
76154
+ name: "deviceId",
76155
+ form: "single",
76156
+ optional: false
76157
+ }],
75863
76158
  "doorbell.getStatus": [{
75864
76159
  name: "deviceId",
75865
76160
  form: "single",
@@ -75929,6 +76224,11 @@ Object.freeze({
75929
76224
  form: "single",
75930
76225
  optional: false
75931
76226
  }],
76227
+ "heatingValve.getStatus": [{
76228
+ name: "deviceId",
76229
+ form: "single",
76230
+ optional: false
76231
+ }],
75932
76232
  "humidifier.getStatus": [{
75933
76233
  name: "deviceId",
75934
76234
  form: "single",