@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
@@ -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",
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-BqI10eLV.js");
1
+ const require_dist = require("./dist-B4HyxJe1.js");
2
2
  //#region src/detection-pipeline/registry/model-licenses.ts
3
3
  var COCO_DATA = {
4
4
  name: "COCO 2017",
@@ -1,4 +1,4 @@
1
- import { Un as hfModelUrl } from "./dist-BaHsDOWa.mjs";
1
+ import { Un as hfModelUrl } from "./dist-BmSyTuy4.mjs";
2
2
  //#region src/detection-pipeline/registry/model-licenses.ts
3
3
  var COCO_DATA = {
4
4
  name: "COCO 2017",
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_dist = require("../dist-BqI10eLV.js");
5
+ const require_dist = require("../dist-B4HyxJe1.js");
6
6
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Mn as BaseAddon, St as evaluateZoneRules, Wn as hydrateSchema, Wt as motionDetectionCapability, kn as DeviceType } from "../dist-BaHsDOWa.mjs";
1
+ import { Mn as BaseAddon, St as evaluateZoneRules, Wn as hydrateSchema, Wt as motionDetectionCapability, kn as DeviceType } from "../dist-BmSyTuy4.mjs";
2
2
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { An as errMsg, Cn as Fmp4BoxSplitter, Dn as isSoftwareDecode, wn as buildFfmpegArgs } from "./dist-BaHsDOWa.mjs";
1
+ import { An as errMsg, Cn as Fmp4BoxSplitter, Dn as isSoftwareDecode, wn as buildFfmpegArgs } from "./dist-BmSyTuy4.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { realpathSync } from "node:fs";
4
4
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-BqI10eLV.js");
2
+ const require_dist = require("./dist-B4HyxJe1.js");
3
3
  require("node:os");
4
4
  let node_crypto = require("node:crypto");
5
5
  let node_fs = require("node:fs");
@@ -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_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_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
10
10
  const require_lazy_sharp = require("../lazy-sharp-BuwKlQLR.js");
11
11
  const require_restream_intent = require("../restream-intent-7uDNqMKs.js");
@@ -1,6 +1,6 @@
1
- import { A as NativeLeaseAdmissionSchema, An as errMsg, Bn as defineCustomActions, E as FailureCounters, Et as failureContributionCapability, Ft as loadContributionCapability, In as MODEL_FORMATS, Jt as pickDetailCropConvention, M as NodeBenchRunnerInputSchema, Mn as BaseAddon, P as PIPELINE_RAMP, Pt as linkedStepOf, Rn as createEvent, V as ROOT_SUPPLIABLE_STEP_IDS, Xn as nodePin, Y as allowedSuppliedEffect, Yt as pickNativeLeaseOverride, Zt as pipelineRunnerCapability, _ as DEFAULT_DETAIL_CROP_CONVENTION, a as BackgroundRunRegistry, ar as lazy, cr as object, dn as rootSuppliesOf, dr as string, gt as deriveRootFaceRefineRect, j as NativeLeaseSettingsSchema, m as CROP_SUPPLY_SOURCES, mt as deriveDetailCropRect, nr as array, nt as buildBenchStepTree, or as literal, pr as EventCategory, rr as boolean, rt as cameraOwnsMotionViaSensor, sn as resolveModelBoundSetting, sr as number, tr as _enum, un as resolveRootSupply, x as DEVICE_RAMP, y as DEFAULT_NATIVE_LEASE_SETTINGS, zn as customAction } from "../dist-BaHsDOWa.mjs";
2
- import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node-B0a0dXhg.mjs";
3
- import { a as stepsForElectedPool, b as getStepDefinition, d as rootObjectGate, f as localFrameRegistry, h as resolveFrameViewGeometry, i as placeDetailStep, l as resolveDefaultDetectionModel, m as createSessionDecodeCoordinator, p as isSessionDecodeReadGone, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, y as getStep } from "../custom-model-catalog-CK9GK3N5.mjs";
1
+ import { A as NativeLeaseAdmissionSchema, An as errMsg, Bn as defineCustomActions, E as FailureCounters, Et as failureContributionCapability, Ft as loadContributionCapability, In as MODEL_FORMATS, Jt as pickDetailCropConvention, M as NodeBenchRunnerInputSchema, Mn as BaseAddon, P as PIPELINE_RAMP, Pt as linkedStepOf, Rn as createEvent, V as ROOT_SUPPLIABLE_STEP_IDS, Xn as nodePin, Y as allowedSuppliedEffect, Yt as pickNativeLeaseOverride, Zt as pipelineRunnerCapability, _ as DEFAULT_DETAIL_CROP_CONVENTION, a as BackgroundRunRegistry, ar as lazy, cr as object, dn as rootSuppliesOf, dr as string, gt as deriveRootFaceRefineRect, j as NativeLeaseSettingsSchema, m as CROP_SUPPLY_SOURCES, mt as deriveDetailCropRect, nr as array, nt as buildBenchStepTree, or as literal, pr as EventCategory, rr as boolean, rt as cameraOwnsMotionViaSensor, sn as resolveModelBoundSetting, sr as number, tr as _enum, un as resolveRootSupply, x as DEVICE_RAMP, y as DEFAULT_NATIVE_LEASE_SETTINGS, zn as customAction } from "../dist-BmSyTuy4.mjs";
2
+ import { i as NO_COST_CLAIM, t as ChildCostRegistry } from "../node--4HtlkFo.mjs";
3
+ import { a as stepsForElectedPool, b as getStepDefinition, d as rootObjectGate, f as localFrameRegistry, h as resolveFrameViewGeometry, i as placeDetailStep, l as resolveDefaultDetectionModel, m as createSessionDecodeCoordinator, p as isSessionDecodeReadGone, s as resolveDeviceEngine, t as CustomModelCatalog, u as macroGateVerdict, y as getStep } from "../custom-model-catalog--ms2wSDI.mjs";
4
4
  import { t as resolveHubHostname } from "../hub-hostname-cCknRYKj.mjs";
5
5
  import { t as getSharp } from "../lazy-sharp-DXsqwpph.mjs";
6
6
  import { c as withDetectionIntent, o as preRollRequestOf, t as DETECTION_PRE_ROLL_REQUEST_MS } from "../restream-intent-DyGmLAU9.mjs";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-emK7D4bc.js");
2
- const require_dist = require("./dist-BqI10eLV.js");
2
+ const require_dist = require("./dist-B4HyxJe1.js");
3
3
  let node_fs = require("node:fs");
4
4
  node_fs = require_chunk.__toESM(node_fs);
5
5
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { Kt as parseProcStatus } from "./dist-BaHsDOWa.mjs";
1
+ import { Kt as parseProcStatus } from "./dist-BmSyTuy4.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile } from "node:child_process";
4
4
  //#region src/shared/node-topology-platform.ts
@@ -3,8 +3,8 @@ 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");
6
+ const require_dist = require("../dist-B4HyxJe1.js");
7
+ const require_node = require("../node-DfuKhWUZ.js");
8
8
  const require_hub_hostname = require("../hub-hostname-DAJXlOgV.js");
9
9
  const require_restream_intent = require("../restream-intent-7uDNqMKs.js");
10
10
  let node_crypto = require("node:crypto");
@@ -6736,6 +6736,94 @@ Object.freeze({
6736
6736
  "path": "online",
6737
6737
  "valueType": "boolean"
6738
6738
  }],
6739
+ "dishwasher": [
6740
+ {
6741
+ "path": "state",
6742
+ "valueType": "enum",
6743
+ "enumValues": [
6744
+ "idle",
6745
+ "running",
6746
+ "paused",
6747
+ "finished",
6748
+ "error",
6749
+ "unavailable"
6750
+ ]
6751
+ },
6752
+ {
6753
+ "path": "program",
6754
+ "valueType": "string"
6755
+ },
6756
+ {
6757
+ "path": "remainingMinutes",
6758
+ "valueType": "number"
6759
+ },
6760
+ {
6761
+ "path": "progressPercent",
6762
+ "valueType": "number"
6763
+ },
6764
+ {
6765
+ "path": "doorOpen",
6766
+ "valueType": "boolean"
6767
+ },
6768
+ {
6769
+ "path": "remoteStartAllowed",
6770
+ "valueType": "boolean"
6771
+ },
6772
+ {
6773
+ "path": "powerOn",
6774
+ "valueType": "boolean"
6775
+ },
6776
+ {
6777
+ "path": "saltLevel",
6778
+ "valueType": "enum",
6779
+ "enumValues": [
6780
+ "ok",
6781
+ "low",
6782
+ "empty"
6783
+ ]
6784
+ },
6785
+ {
6786
+ "path": "rinseAidLevel",
6787
+ "valueType": "enum",
6788
+ "enumValues": [
6789
+ "ok",
6790
+ "low",
6791
+ "empty"
6792
+ ]
6793
+ },
6794
+ {
6795
+ "path": "halfLoad",
6796
+ "valueType": "boolean"
6797
+ },
6798
+ {
6799
+ "path": "hygienePlus",
6800
+ "valueType": "boolean"
6801
+ },
6802
+ {
6803
+ "path": "extraDry",
6804
+ "valueType": "boolean"
6805
+ },
6806
+ {
6807
+ "path": "intensiveZone",
6808
+ "valueType": "boolean"
6809
+ },
6810
+ {
6811
+ "path": "varioSpeedPlus",
6812
+ "valueType": "boolean"
6813
+ },
6814
+ {
6815
+ "path": "childLock",
6816
+ "valueType": "boolean"
6817
+ },
6818
+ {
6819
+ "path": "errorCode",
6820
+ "valueType": "number"
6821
+ },
6822
+ {
6823
+ "path": "errorLabel",
6824
+ "valueType": "string"
6825
+ }
6826
+ ],
6739
6827
  "doorbell": [{
6740
6828
  "path": "lastPressedAt",
6741
6829
  "valueType": "number"
@@ -6826,6 +6914,10 @@ Object.freeze({
6826
6914
  "path": "detected",
6827
6915
  "valueType": "boolean"
6828
6916
  }],
6917
+ "heating-valve": [{
6918
+ "path": "position",
6919
+ "valueType": "number"
6920
+ }],
6829
6921
  "humidifier": [
6830
6922
  {
6831
6923
  "path": "on",
@@ -11755,13 +11847,10 @@ var DurableLedger = class {
11755
11847
  const body = this.spec.toValue(row);
11756
11848
  if (this.spec.writeMode === "write-behind") {
11757
11849
  this.mirror.set(key, row);
11758
- await this.persistRow(key, body);
11850
+ await this.persistRow(key, body, row);
11759
11851
  return;
11760
11852
  }
11761
- await this.kind.put({
11762
- id: key,
11763
- data: body
11764
- });
11853
+ await this.kind.put(this.buildPut(key, body, row));
11765
11854
  this.mirror.set(key, row);
11766
11855
  }
11767
11856
  /**
@@ -11862,15 +11951,27 @@ var DurableLedger = class {
11862
11951
  */
11863
11952
  persist(row) {
11864
11953
  const key = this.spec.keyOf(row);
11865
- this.persistRow(key, this.spec.toValue(row));
11954
+ this.persistRow(key, this.spec.toValue(row), row);
11955
+ }
11956
+ buildPut(key, body, row) {
11957
+ const deviceId = this.resolveRecordDeviceId(row, body);
11958
+ return {
11959
+ id: key,
11960
+ data: body,
11961
+ ...deviceId !== void 0 ? { deviceId } : {}
11962
+ };
11866
11963
  }
11867
- async persistRow(key, body) {
11868
- const deviceId = this.deviceIdFromBody(body);
11964
+ resolveRecordDeviceId(row, body) {
11965
+ if (row !== void 0) {
11966
+ const fromSpec = this.spec.deviceIdOf?.(row);
11967
+ if (fromSpec !== void 0 && Number.isFinite(fromSpec)) return fromSpec;
11968
+ }
11969
+ return this.deviceIdFromBody(body);
11970
+ }
11971
+ async persistRow(key, body, row) {
11972
+ const deviceId = this.resolveRecordDeviceId(row, body);
11869
11973
  try {
11870
- await this.kind.put({
11871
- id: key,
11872
- data: body
11873
- });
11974
+ await this.kind.put(this.buildPut(key, body, row));
11874
11975
  } catch (err) {
11875
11976
  this.logger.warn("durable persist failed — this key may re-seed on boot", {
11876
11977
  ...deviceId !== void 0 ? { tags: { deviceId } } : {},