@camstack/addon-post-analysis 1.2.638 → 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.
- package/dist/{clip-model-registry-B-Dv5y3Z.mjs → clip-model-registry-B1HxbGuP.mjs} +120 -8
- package/dist/{clip-model-registry-DEcrrqRz.js → clip-model-registry-C8xdbChV.js} +120 -8
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/_stub.js +2 -2
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-LOOCKNGE.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-CO5qrMxU.mjs} +2 -2
- 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
- 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
- package/dist/pipeline-analytics/{hostInit-C2kfB4nI.mjs → hostInit-BN2pgAbz.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +216 -85
- package/dist/pipeline-analytics/index.mjs +216 -85
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
- 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
- package/dist/pipeline-analytics/_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-DXlqUmY1.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-
|
|
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-
|
|
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: [
|
|
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-
|
|
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-
|
|
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: [
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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.
|
|
36
|
+
version: "1.2.333",
|
|
37
37
|
scope: ["default"],
|
|
38
38
|
loaded: !1,
|
|
39
39
|
from: "addon_pipeline_analytics_widgets",
|