@camstack/addon-post-analysis 1.2.639 → 1.2.640

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 (15) hide show
  1. package/dist/{clip-model-registry-B-Dv5y3Z.mjs → clip-model-registry-B1HxbGuP.mjs} +120 -8
  2. package/dist/{clip-model-registry-DEcrrqRz.js → clip-model-registry-C8xdbChV.js} +120 -8
  3. package/dist/embedding-encoder/index.js +1 -1
  4. package/dist/embedding-encoder/index.mjs +1 -1
  5. package/dist/pipeline-analytics/_stub.js +2 -2
  6. package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DRZLmZDb.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CO5qrMxU.mjs} +2 -2
  7. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CENVyAAQ.mjs +26 -0
  8. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DIbQ2FJ4.mjs +26 -0
  9. package/dist/pipeline-analytics/{hostInit-B07ueo2X.mjs → hostInit-BN2pgAbz.mjs} +2 -2
  10. package/dist/pipeline-analytics/index.js +2 -2
  11. package/dist/pipeline-analytics/index.mjs +2 -2
  12. package/dist/pipeline-analytics/remoteEntry.js +1 -1
  13. package/package.json +1 -1
  14. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D4TYbuPV.mjs +0 -26
  15. package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Cc4lAtK3.mjs +0 -26
@@ -11026,7 +11026,7 @@ function sleep(ms) {
11026
11026
  return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
11027
11027
  }
11028
11028
  //#endregion
11029
- //#region ../types/dist/err-msg-BXKzRBwg.mjs
11029
+ //#region ../types/dist/err-msg-DIorGYeC.mjs
11030
11030
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
11031
11031
  DeviceType["Camera"] = "camera";
11032
11032
  DeviceType["Hub"] = "hub";
@@ -11120,8 +11120,14 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
11120
11120
  DeviceType["PetFeeder"] = "pet-feeder";
11121
11121
  /** Built-in dishwasher — program lifecycle, door / remote-start gates,
11122
11122
  * salt and rinse-aid levels. Installed with the `dishwasher` cap.
11123
- * Sources: native Bosch Home Connect, reusable by similar integrations. */
11123
+ * Sources: native Bosch Home Connect, reusable by similar integrations.
11124
+ * A plug-built dishwasher carries running-state and power instead. */
11124
11125
  DeviceType["Dishwasher"] = "dishwasher";
11126
+ /** Washing machine. A plug-built one is running while its power stays
11127
+ * above a threshold. No program cap — that surface is the dishwasher's. */
11128
+ DeviceType["Washer"] = "washer";
11129
+ /** Tumble dryer. Same plug-built running surface as {@link Washer}. */
11130
+ DeviceType["Dryer"] = "dryer";
11125
11131
  return DeviceType;
11126
11132
  }({});
11127
11133
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -11379,7 +11385,7 @@ function errMsg(err) {
11379
11385
  return String(err);
11380
11386
  }
11381
11387
  //#endregion
11382
- //#region ../types/dist/composition-OhpuespA.mjs
11388
+ //#region ../types/dist/composition-B2rw5L29.mjs
11383
11389
  /**
11384
11390
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
11385
11391
  * canonical form sorts object keys alphabetically at every depth so two
@@ -12295,6 +12301,26 @@ function validateExpressionSource(src) {
12295
12301
  return null;
12296
12302
  }
12297
12303
  /**
12304
+ * One power reading becomes a washer, dryer or dishwasher (D944 helper).
12305
+ *
12306
+ * Standby of the control board is under 5 W; a motor or a heater is far
12307
+ * above that, so 5 W is the line. A door lock or a short pump spike is not
12308
+ * a cycle, so running starts only after 30 s above the line.
12309
+ *
12310
+ * A wash, dry or dishwasher pause (soak, heat-wait, heater off between
12311
+ * bursts) lasts several minutes. Ending the cycle on the first dip would
12312
+ * report "finished" in the middle of the program, so the stop dwell is
12313
+ * 10 minutes on every type. The number is stored per type so one machine
12314
+ * can move later without moving the others.
12315
+ */
12316
+ var APPLIANCE_TEMPLATE_ID = "appliance";
12317
+ var APPLIANCE_KINDS = [
12318
+ "washer",
12319
+ "dryer",
12320
+ "dishwasher"
12321
+ ];
12322
+ DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
12323
+ /**
12298
12324
  * A composition source identity: `(addonId, stableId)`, never a numeric device
12299
12325
  * id. Split out so helper schemas can name it without a cycle through
12300
12326
  * `composition.ts` (D659).
@@ -12357,6 +12383,14 @@ var HelperSpecSchema = discriminatedUnion("kind", [object({
12357
12383
  members: array(HelperMemberSchema).min(1).max(64),
12358
12384
  /** Actuator groups only. Readings leave this unset. */
12359
12385
  active: ActiveCriterionSchema.optional()
12386
+ }), object({
12387
+ kind: literal("appliance"),
12388
+ templateId: literal(APPLIANCE_TEMPLATE_ID),
12389
+ appliance: _enum(APPLIANCE_KINDS),
12390
+ thresholdWatts: number().positive(),
12391
+ startDwellMs: number().int().nonnegative(),
12392
+ stopDwellMs: number().int().nonnegative(),
12393
+ member: HelperMemberSchema
12360
12394
  })]);
12361
12395
  /** A composed device's stableId is this prefix plus the block id. */
12362
12396
  var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
@@ -67531,7 +67565,12 @@ var powerMeterCapability = {
67531
67565
  scope: "device",
67532
67566
  deviceNative: true,
67533
67567
  mode: "singleton",
67534
- deviceTypes: [DeviceType.Sensor],
67568
+ deviceTypes: [
67569
+ DeviceType.Sensor,
67570
+ DeviceType.Washer,
67571
+ DeviceType.Dryer,
67572
+ DeviceType.Dishwasher
67573
+ ],
67535
67574
  methods: {},
67536
67575
  status: {
67537
67576
  schema: PowerMeterStatusSchema,
@@ -68269,6 +68308,8 @@ var runningCustomize = {
68269
68308
  stateField: "running"
68270
68309
  },
68271
68310
  deviceTypes: [
68311
+ DeviceType.Washer,
68312
+ DeviceType.Dryer,
68272
68313
  DeviceType.Dishwasher,
68273
68314
  DeviceType.Vacuum,
68274
68315
  DeviceType.LawnMower,
@@ -73022,7 +73063,7 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
73022
73063
  auth: "admin"
73023
73064
  });
73024
73065
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
73025
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
73066
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
73026
73067
  String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
73027
73068
  DeviceRole.BinarySensor, DeviceRole.MotionSensor;
73028
73069
  new Set(CAP_NAMES);
@@ -74191,7 +74232,7 @@ var DeclaredDevices = class {
74191
74232
  return removed;
74192
74233
  }
74193
74234
  };
74194
- 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;
74235
+ 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, DeviceType.Washer, DeviceType.Dryer;
74195
74236
  new Set(Object.values(DeviceType));
74196
74237
  Object.freeze({
74197
74238
  "accessories.getStatus": {
@@ -86478,7 +86519,39 @@ var APPLIANCE_CAP_VOCABULARY = {
86478
86519
  phrase: t("When {device} finishes", "Quando {device} finisce"),
86479
86520
  icon: "square"
86480
86521
  }
86481
- }
86522
+ },
86523
+ overrides: { byType: {
86524
+ [DeviceType.Washer]: {
86525
+ state: { running: {
86526
+ whenTrue: t("When the washing machine starts", "Quando la lavatrice inizia"),
86527
+ whenFalse: t("When the washing machine has finished", "Quando la lavatrice ha finito")
86528
+ } },
86529
+ events: {
86530
+ onStarted: { phrase: t("When the washing machine starts", "Quando la lavatrice inizia") },
86531
+ onFinished: { phrase: t("When the washing machine has finished", "Quando la lavatrice ha finito") }
86532
+ }
86533
+ },
86534
+ [DeviceType.Dryer]: {
86535
+ state: { running: {
86536
+ whenTrue: t("When the dryer starts", "Quando l'asciugatrice inizia"),
86537
+ whenFalse: t("When the dryer has finished", "Quando l'asciugatrice ha finito")
86538
+ } },
86539
+ events: {
86540
+ onStarted: { phrase: t("When the dryer starts", "Quando l'asciugatrice inizia") },
86541
+ onFinished: { phrase: t("When the dryer has finished", "Quando l'asciugatrice ha finito") }
86542
+ }
86543
+ },
86544
+ [DeviceType.Dishwasher]: {
86545
+ state: { running: {
86546
+ whenTrue: t("When the dishwasher starts", "Quando la lavastoviglie inizia"),
86547
+ whenFalse: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito")
86548
+ } },
86549
+ events: {
86550
+ onStarted: { phrase: t("When the dishwasher starts", "Quando la lavastoviglie inizia") },
86551
+ onFinished: { phrase: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito") }
86552
+ }
86553
+ }
86554
+ } }
86482
86555
  },
86483
86556
  update: {
86484
86557
  scope: "device",
@@ -87778,8 +87851,47 @@ function projectAction(cap, action) {
87778
87851
  };
87779
87852
  }
87780
87853
  Object.entries(CAP_VOCABULARY_BY_NAME).flatMap(([cap, entry]) => entry.scope === "device" ? (entry.actions ?? []).map((a) => projectAction(cap, a)) : []);
87781
- 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;
87854
+ 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, DeviceType.Washer, DeviceType.Dryer;
87782
87855
  DeviceFeature.BatteryOperated;
87856
+ DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
87857
+ var HA_AS = "a power sensor (device_class power). Home Assistant has no laundry domain. running-state stays unexported until a null reading can be published as unavailable.";
87858
+ var HOMEKIT_REASON = "HomeKit has no laundry-appliance service. The export tab would pair an accessory with nothing on it: running-state is withheld until a null reading can be unavailable, and power is not a HomeKit service this export honours.";
87859
+ var ALEXA_REASON = "Alexa has no laundry category in this export, and neither power nor running has an Alexa interface.";
87860
+ var GOOGLE_REASON = "Google WASHER, DRYER and DISHWASHER require RunCycle. A power threshold is not that trait, and this export does not publish RunCycle.";
87861
+ var MATTER_REASON = "No Matter export is built. The closest device types are Laundry Washer (0x0073) and Laundry Dryer (0x0074); a power threshold is not the Laundry Washer Mode cluster.";
87862
+ function withheld(reason) {
87863
+ return {
87864
+ [DeviceType.Washer]: {
87865
+ exported: false,
87866
+ reason
87867
+ },
87868
+ [DeviceType.Dryer]: {
87869
+ exported: false,
87870
+ reason
87871
+ },
87872
+ [DeviceType.Dishwasher]: {
87873
+ exported: false,
87874
+ reason
87875
+ }
87876
+ };
87877
+ }
87878
+ function offered(received) {
87879
+ return {
87880
+ [DeviceType.Washer]: {
87881
+ exported: true,
87882
+ as: received
87883
+ },
87884
+ [DeviceType.Dryer]: {
87885
+ exported: true,
87886
+ as: received
87887
+ },
87888
+ [DeviceType.Dishwasher]: {
87889
+ exported: true,
87890
+ as: received
87891
+ }
87892
+ };
87893
+ }
87894
+ offered(HA_AS), withheld(HOMEKIT_REASON), withheld(ALEXA_REASON), withheld(GOOGLE_REASON), withheld(MATTER_REASON);
87783
87895
  Object.freeze({
87784
87896
  "accessories.getStatus": [{
87785
87897
  name: "deviceId",
@@ -11057,7 +11057,7 @@ function sleep(ms) {
11057
11057
  return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
11058
11058
  }
11059
11059
  //#endregion
11060
- //#region ../types/dist/err-msg-BXKzRBwg.mjs
11060
+ //#region ../types/dist/err-msg-DIorGYeC.mjs
11061
11061
  var DeviceType = /* @__PURE__ */ function(DeviceType) {
11062
11062
  DeviceType["Camera"] = "camera";
11063
11063
  DeviceType["Hub"] = "hub";
@@ -11151,8 +11151,14 @@ var DeviceType = /* @__PURE__ */ function(DeviceType) {
11151
11151
  DeviceType["PetFeeder"] = "pet-feeder";
11152
11152
  /** Built-in dishwasher — program lifecycle, door / remote-start gates,
11153
11153
  * salt and rinse-aid levels. Installed with the `dishwasher` cap.
11154
- * Sources: native Bosch Home Connect, reusable by similar integrations. */
11154
+ * Sources: native Bosch Home Connect, reusable by similar integrations.
11155
+ * A plug-built dishwasher carries running-state and power instead. */
11155
11156
  DeviceType["Dishwasher"] = "dishwasher";
11157
+ /** Washing machine. A plug-built one is running while its power stays
11158
+ * above a threshold. No program cap — that surface is the dishwasher's. */
11159
+ DeviceType["Washer"] = "washer";
11160
+ /** Tumble dryer. Same plug-built running surface as {@link Washer}. */
11161
+ DeviceType["Dryer"] = "dryer";
11156
11162
  return DeviceType;
11157
11163
  }({});
11158
11164
  var DeviceFeature = /* @__PURE__ */ function(DeviceFeature) {
@@ -11410,7 +11416,7 @@ function errMsg(err) {
11410
11416
  return String(err);
11411
11417
  }
11412
11418
  //#endregion
11413
- //#region ../types/dist/composition-OhpuespA.mjs
11419
+ //#region ../types/dist/composition-B2rw5L29.mjs
11414
11420
  /**
11415
11421
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
11416
11422
  * canonical form sorts object keys alphabetically at every depth so two
@@ -12326,6 +12332,26 @@ function validateExpressionSource(src) {
12326
12332
  return null;
12327
12333
  }
12328
12334
  /**
12335
+ * One power reading becomes a washer, dryer or dishwasher (D944 helper).
12336
+ *
12337
+ * Standby of the control board is under 5 W; a motor or a heater is far
12338
+ * above that, so 5 W is the line. A door lock or a short pump spike is not
12339
+ * a cycle, so running starts only after 30 s above the line.
12340
+ *
12341
+ * A wash, dry or dishwasher pause (soak, heat-wait, heater off between
12342
+ * bursts) lasts several minutes. Ending the cycle on the first dip would
12343
+ * report "finished" in the middle of the program, so the stop dwell is
12344
+ * 10 minutes on every type. The number is stored per type so one machine
12345
+ * can move later without moving the others.
12346
+ */
12347
+ var APPLIANCE_TEMPLATE_ID = "appliance";
12348
+ var APPLIANCE_KINDS = [
12349
+ "washer",
12350
+ "dryer",
12351
+ "dishwasher"
12352
+ ];
12353
+ DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
12354
+ /**
12329
12355
  * A composition source identity: `(addonId, stableId)`, never a numeric device
12330
12356
  * id. Split out so helper schemas can name it without a cycle through
12331
12357
  * `composition.ts` (D659).
@@ -12388,6 +12414,14 @@ var HelperSpecSchema = discriminatedUnion("kind", [object({
12388
12414
  members: array(HelperMemberSchema).min(1).max(64),
12389
12415
  /** Actuator groups only. Readings leave this unset. */
12390
12416
  active: ActiveCriterionSchema.optional()
12417
+ }), object({
12418
+ kind: literal("appliance"),
12419
+ templateId: literal(APPLIANCE_TEMPLATE_ID),
12420
+ appliance: _enum(APPLIANCE_KINDS),
12421
+ thresholdWatts: number().positive(),
12422
+ startDwellMs: number().int().nonnegative(),
12423
+ stopDwellMs: number().int().nonnegative(),
12424
+ member: HelperMemberSchema
12391
12425
  })]);
12392
12426
  /** A composed device's stableId is this prefix plus the block id. */
12393
12427
  var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
@@ -67562,7 +67596,12 @@ var powerMeterCapability = {
67562
67596
  scope: "device",
67563
67597
  deviceNative: true,
67564
67598
  mode: "singleton",
67565
- deviceTypes: [DeviceType.Sensor],
67599
+ deviceTypes: [
67600
+ DeviceType.Sensor,
67601
+ DeviceType.Washer,
67602
+ DeviceType.Dryer,
67603
+ DeviceType.Dishwasher
67604
+ ],
67566
67605
  methods: {},
67567
67606
  status: {
67568
67607
  schema: PowerMeterStatusSchema,
@@ -68300,6 +68339,8 @@ var runningCustomize = {
68300
68339
  stateField: "running"
68301
68340
  },
68302
68341
  deviceTypes: [
68342
+ DeviceType.Washer,
68343
+ DeviceType.Dryer,
68303
68344
  DeviceType.Dishwasher,
68304
68345
  DeviceType.Vacuum,
68305
68346
  DeviceType.LawnMower,
@@ -73053,7 +73094,7 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
73053
73094
  auth: "admin"
73054
73095
  });
73055
73096
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
73056
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Camera, DeviceType.Camera, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
73097
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, 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, DeviceType.Washer, DeviceType.Dryer, DeviceType.Camera, DeviceType.Camera, DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
73057
73098
  String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
73058
73099
  DeviceRole.BinarySensor, DeviceRole.MotionSensor;
73059
73100
  new Set(CAP_NAMES);
@@ -74222,7 +74263,7 @@ var DeclaredDevices = class {
74222
74263
  return removed;
74223
74264
  }
74224
74265
  };
74225
- 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;
74266
+ 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, DeviceType.Washer, DeviceType.Dryer;
74226
74267
  new Set(Object.values(DeviceType));
74227
74268
  Object.freeze({
74228
74269
  "accessories.getStatus": {
@@ -86509,7 +86550,39 @@ var APPLIANCE_CAP_VOCABULARY = {
86509
86550
  phrase: t("When {device} finishes", "Quando {device} finisce"),
86510
86551
  icon: "square"
86511
86552
  }
86512
- }
86553
+ },
86554
+ overrides: { byType: {
86555
+ [DeviceType.Washer]: {
86556
+ state: { running: {
86557
+ whenTrue: t("When the washing machine starts", "Quando la lavatrice inizia"),
86558
+ whenFalse: t("When the washing machine has finished", "Quando la lavatrice ha finito")
86559
+ } },
86560
+ events: {
86561
+ onStarted: { phrase: t("When the washing machine starts", "Quando la lavatrice inizia") },
86562
+ onFinished: { phrase: t("When the washing machine has finished", "Quando la lavatrice ha finito") }
86563
+ }
86564
+ },
86565
+ [DeviceType.Dryer]: {
86566
+ state: { running: {
86567
+ whenTrue: t("When the dryer starts", "Quando l'asciugatrice inizia"),
86568
+ whenFalse: t("When the dryer has finished", "Quando l'asciugatrice ha finito")
86569
+ } },
86570
+ events: {
86571
+ onStarted: { phrase: t("When the dryer starts", "Quando l'asciugatrice inizia") },
86572
+ onFinished: { phrase: t("When the dryer has finished", "Quando l'asciugatrice ha finito") }
86573
+ }
86574
+ },
86575
+ [DeviceType.Dishwasher]: {
86576
+ state: { running: {
86577
+ whenTrue: t("When the dishwasher starts", "Quando la lavastoviglie inizia"),
86578
+ whenFalse: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito")
86579
+ } },
86580
+ events: {
86581
+ onStarted: { phrase: t("When the dishwasher starts", "Quando la lavastoviglie inizia") },
86582
+ onFinished: { phrase: t("When the dishwasher has finished", "Quando la lavastoviglie ha finito") }
86583
+ }
86584
+ }
86585
+ } }
86513
86586
  },
86514
86587
  update: {
86515
86588
  scope: "device",
@@ -87809,8 +87882,47 @@ function projectAction(cap, action) {
87809
87882
  };
87810
87883
  }
87811
87884
  Object.entries(CAP_VOCABULARY_BY_NAME).flatMap(([cap, entry]) => entry.scope === "device" ? (entry.actions ?? []).map((a) => projectAction(cap, a)) : []);
87812
- 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;
87885
+ 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, DeviceType.Washer, DeviceType.Dryer;
87813
87886
  DeviceFeature.BatteryOperated;
87887
+ DeviceType.Washer, DeviceType.Dryer, DeviceType.Dishwasher;
87888
+ var HA_AS = "a power sensor (device_class power). Home Assistant has no laundry domain. running-state stays unexported until a null reading can be published as unavailable.";
87889
+ var HOMEKIT_REASON = "HomeKit has no laundry-appliance service. The export tab would pair an accessory with nothing on it: running-state is withheld until a null reading can be unavailable, and power is not a HomeKit service this export honours.";
87890
+ var ALEXA_REASON = "Alexa has no laundry category in this export, and neither power nor running has an Alexa interface.";
87891
+ var GOOGLE_REASON = "Google WASHER, DRYER and DISHWASHER require RunCycle. A power threshold is not that trait, and this export does not publish RunCycle.";
87892
+ var MATTER_REASON = "No Matter export is built. The closest device types are Laundry Washer (0x0073) and Laundry Dryer (0x0074); a power threshold is not the Laundry Washer Mode cluster.";
87893
+ function withheld(reason) {
87894
+ return {
87895
+ [DeviceType.Washer]: {
87896
+ exported: false,
87897
+ reason
87898
+ },
87899
+ [DeviceType.Dryer]: {
87900
+ exported: false,
87901
+ reason
87902
+ },
87903
+ [DeviceType.Dishwasher]: {
87904
+ exported: false,
87905
+ reason
87906
+ }
87907
+ };
87908
+ }
87909
+ function offered(received) {
87910
+ return {
87911
+ [DeviceType.Washer]: {
87912
+ exported: true,
87913
+ as: received
87914
+ },
87915
+ [DeviceType.Dryer]: {
87916
+ exported: true,
87917
+ as: received
87918
+ },
87919
+ [DeviceType.Dishwasher]: {
87920
+ exported: true,
87921
+ as: received
87922
+ }
87923
+ };
87924
+ }
87925
+ offered(HA_AS), withheld(HOMEKIT_REASON), withheld(ALEXA_REASON), withheld(GOOGLE_REASON), withheld(MATTER_REASON);
87814
87926
  Object.freeze({
87815
87927
  "accessories.getStatus": [{
87816
87928
  name: "deviceId",
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_clip_model_registry = require("../clip-model-registry-DEcrrqRz.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-C8xdbChV.js");
6
6
  let node_fs = require("node:fs");
7
7
  node_fs = require_clip_model_registry.__toESM(node_fs);
8
8
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Qi as BaseAddon, _r as embeddingRequirementsUnavailableError, a as CLIP_EMBEDDING_STEP_ID, da as normalizeNodeId, gi as resolvePoolMemoryPolicy, gr as embeddingRequirementsFailedError, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, mr as embeddingModelFailedError, n as DEFAULT_CLIP_MODEL, ni as parseProcStatus, pr as embeddingEncoderCapability, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, tn as PoolMemoryWatchdog } from "../clip-model-registry-B-Dv5y3Z.mjs";
1
+ import { Qi as BaseAddon, _r as embeddingRequirementsUnavailableError, a as CLIP_EMBEDDING_STEP_ID, da as normalizeNodeId, gi as resolvePoolMemoryPolicy, gr as embeddingRequirementsFailedError, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, mr as embeddingModelFailedError, n as DEFAULT_CLIP_MODEL, ni as parseProcStatus, pr as embeddingEncoderCapability, r as CLIP_IMAGE_MODELS, t as BUILTIN_CLIP_MODELS, tn as PoolMemoryWatchdog } from "../clip-model-registry-B1HxbGuP.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -1,8 +1,8 @@
1
1
  import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react__loadShare__.js-Cx9AsA5q.mjs";
2
2
  import { t as o } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-B3Wx5J80.mjs";
3
- import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Cc4lAtK3.mjs";
3
+ import { a as s, c, d as l, f as u, i as d, l as f, m as p, n as m, o as h, p as g, r as _, s as v, t as y, u as b } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DIbQ2FJ4.mjs";
4
4
  import { n as x, t as S } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-CkwmHEi0.mjs";
5
- import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D4TYbuPV.mjs";
5
+ import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CENVyAAQ.mjs";
6
6
  //#region ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
7
7
  var w = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), T = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), E = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), D = (e) => {
8
8
  let t = E(e);
@@ -18,7 +18,7 @@ var e = {
18
18
  },
19
19
  "@camstack/types": {
20
20
  name: "@camstack/types",
21
- version: "1.2.419",
21
+ version: "1.2.421",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",
@@ -33,7 +33,7 @@ var e = {
33
33
  },
34
34
  "@camstack/ui-library": {
35
35
  name: "@camstack/ui-library",
36
- version: "1.2.331",
36
+ version: "1.2.333",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",