@camstack/addon-post-analysis 1.2.658 → 1.2.660

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.
@@ -11863,7 +11863,7 @@ function sleep(ms) {
11863
11863
  return new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
11864
11864
  }
11865
11865
  //#endregion
11866
- //#region ../types/dist/composition-BBzVf2xd.mjs
11866
+ //#region ../types/dist/composition-BiKWlUCc.mjs
11867
11867
  /**
11868
11868
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
11869
11869
  * canonical form sorts object keys alphabetically at every depth so two
@@ -12956,7 +12956,15 @@ var HelperSpecSchema = discriminatedUnion("kind", [
12956
12956
  thresholdWatts: number().positive(),
12957
12957
  startDwellMs: number().int().nonnegative(),
12958
12958
  stopDwellMs: number().int().nonnegative(),
12959
- member: HelperMemberSchema
12959
+ member: HelperMemberSchema,
12960
+ /**
12961
+ * The plug that powers the appliance (`switch.on`). Optional: when set, the
12962
+ * composition carries a `power-source` feature, so the hub can cut and restore
12963
+ * that plug (power-source link of a NEW-target composition).
12964
+ */
12965
+ powerSwitch: HelperMemberSchema.optional(),
12966
+ /** How long a forced restart keeps the plug off; the cap's default when unset. */
12967
+ offSeconds: number().optional()
12960
12968
  }),
12961
12969
  object({
12962
12970
  kind: literal("statistic"),
@@ -47748,6 +47756,117 @@ function actuator(input) {
47748
47756
  };
47749
47757
  }
47750
47758
  new Map(GROUP_TEMPLATES.map((template) => [template.id, template]));
47759
+ var PowerSourceRefusalReasonSchema = _enum([
47760
+ "no-power-source",
47761
+ "switch-missing",
47762
+ "switch-offline",
47763
+ "switch-unknown",
47764
+ "restart-in-progress",
47765
+ "switch-call-failed"
47766
+ ]);
47767
+ var PowerSourceActionResultSchema = discriminatedUnion("accepted", [object({ accepted: literal(true) }), object({
47768
+ accepted: literal(false),
47769
+ reason: PowerSourceRefusalReasonSchema,
47770
+ /** One line for the operator, naming the switch. */
47771
+ message: string()
47772
+ })]);
47773
+ var PowerSourceInfoSchema = object({
47774
+ /** False when the device has no power source linked; the rest is then empty. */
47775
+ linked: boolean(),
47776
+ switchDeviceId: number().nullable(),
47777
+ switchName: string().nullable(),
47778
+ /** The switch's on/off state, or null when it is unknown. Never false for unknown (D393). */
47779
+ switchOn: boolean().nullable(),
47780
+ switchOnline: boolean().nullable(),
47781
+ restartInProgress: boolean(),
47782
+ offSeconds: number().int()
47783
+ });
47784
+ /** The composed slice: the switch state the link mirrors, plus the stored off time. */
47785
+ var PowerSourceStateSchema = object({
47786
+ /** Null while the switch has not reported: unknown is never `false` (D393). */
47787
+ switchOn: boolean().nullable(),
47788
+ offSeconds: number().int(),
47789
+ lastFetchedAt: number()
47790
+ });
47791
+ var POWER_SOURCE_DEVICE_TYPES = [
47792
+ DeviceType.Gateway,
47793
+ DeviceType.Hub,
47794
+ DeviceType.Camera,
47795
+ DeviceType.Sensor,
47796
+ DeviceType.MediaPlayer,
47797
+ DeviceType.Vacuum,
47798
+ DeviceType.Generic,
47799
+ DeviceType.Washer,
47800
+ DeviceType.Dryer,
47801
+ DeviceType.Dishwasher,
47802
+ DeviceType.PetFountain,
47803
+ DeviceType.Fan,
47804
+ DeviceType.Humidifier,
47805
+ DeviceType.Climate,
47806
+ DeviceType.WaterHeater
47807
+ ];
47808
+ var powerSourceCustomize = {
47809
+ version: 1,
47810
+ targets: [{
47811
+ id: "switch",
47812
+ cardinality: "scalar",
47813
+ vocabulary: {
47814
+ cap: "power-source",
47815
+ stateField: "switchOn"
47816
+ },
47817
+ deviceTypes: POWER_SOURCE_DEVICE_TYPES,
47818
+ apply: "add",
47819
+ path: "switchOn",
47820
+ sources: [{
47821
+ kind: "switch",
47822
+ transforms: [{ kind: "identity" }]
47823
+ }],
47824
+ companions: [{
47825
+ kind: "constant",
47826
+ path: "offSeconds",
47827
+ value: 10,
47828
+ when: "add"
47829
+ }, {
47830
+ kind: "clock",
47831
+ path: "lastFetchedAt",
47832
+ when: "always"
47833
+ }],
47834
+ sourceReport: { status: "assignment-status" }
47835
+ }]
47836
+ };
47837
+ var deviceInput$1 = object({ deviceId: number().int().nonnegative() });
47838
+ var powerSourceCapability = {
47839
+ name: "power-source",
47840
+ scope: "device",
47841
+ mode: "singleton",
47842
+ deviceTypes: POWER_SOURCE_DEVICE_TYPES,
47843
+ methods: {
47844
+ getStatus: systemMethod(deviceInput$1, PowerSourceInfoSchema, { auth: "admin" }),
47845
+ powerOn: systemMethod(deviceInput$1, PowerSourceActionResultSchema, {
47846
+ kind: "mutation",
47847
+ auth: "admin"
47848
+ }),
47849
+ powerOff: systemMethod(deviceInput$1, PowerSourceActionResultSchema, {
47850
+ kind: "mutation",
47851
+ auth: "admin"
47852
+ }),
47853
+ forceRestart: systemMethod(deviceInput$1, PowerSourceActionResultSchema, {
47854
+ kind: "mutation",
47855
+ auth: "admin"
47856
+ })
47857
+ },
47858
+ runtimeState: PowerSourceStateSchema,
47859
+ customize: powerSourceCustomize,
47860
+ /**
47861
+ * Runtime-state durability: **session** — mirrored from the linked switch on
47862
+ * its next report; a restored value would outlive the reading it names.
47863
+ *
47864
+ * See `RuntimeStateDurability`. Enforced by
47865
+ * `scripts/check-runtime-state-durability.ts`.
47866
+ */
47867
+ durability: "session",
47868
+ history: "none"
47869
+ };
47751
47870
  DeviceFeature.LightColorRgb, DeviceFeature.LightColorHsv, DeviceFeature.LightColorMired;
47752
47871
  DeviceType.Camera;
47753
47872
  `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
@@ -53786,7 +53905,8 @@ var PALETTE_ENTRY_IDS = [
53786
53905
  "switch",
53787
53906
  "siren",
53788
53907
  "button",
53789
- "doorbell"
53908
+ "doorbell",
53909
+ "appliance-cycle"
53790
53910
  ];
53791
53911
  var AUDIO_ENTRY_ID = "audio";
53792
53912
  /** Six rungs, quiet → loud. The opaque end is the entry's hex. */
@@ -53857,7 +53977,8 @@ var CAMSTACK_HEX = {
53857
53977
  switch: "#7a812a",
53858
53978
  siren: "#ac5d7f",
53859
53979
  button: "#b276cd",
53860
- doorbell: "#0087ab"
53980
+ doorbell: "#0087ab",
53981
+ "appliance-cycle": "#2a8c8c"
53861
53982
  };
53862
53983
  var CAMSTACK_FALLBACK = [
53863
53984
  "#b34dc7",
@@ -53922,7 +54043,8 @@ var HIGH_CONTRAST_HEX = {
53922
54043
  switch: "#d05259",
53923
54044
  siren: "#cd67b3",
53924
54045
  button: "#c9746a",
53925
- doorbell: "#338eeb"
54046
+ doorbell: "#338eeb",
54047
+ "appliance-cycle": "#00848a"
53926
54048
  };
53927
54049
  var HIGH_CONTRAST_FALLBACK = [
53928
54050
  "#817f3b",
@@ -53987,7 +54109,8 @@ var OKABE_ITO_HEX = {
53987
54109
  switch: "#ad2c4e",
53988
54110
  siren: "#348e08",
53989
54111
  button: "#d27303",
53990
- doorbell: "#55770f"
54112
+ doorbell: "#55770f",
54113
+ "appliance-cycle": "#00737d"
53991
54114
  };
53992
54115
  var OKABE_ITO_FALLBACK = [
53993
54116
  "#9a3784",
@@ -54197,6 +54320,7 @@ sub("switch", "control", "control", "switch", "Switch");
54197
54320
  sub("siren", "control", "control", "siren", "Siren");
54198
54321
  sub("button", "control", "control", "button", "Button");
54199
54322
  sub("doorbell", "control", "control", "doorbell", "Doorbell");
54323
+ sub("appliance-cycle", "control", "control", "switch", "Appliance cycle");
54200
54324
  for (const l of AUDIO_MACRO_LABELS) {
54201
54325
  const kind = `audio-${l.id}`;
54202
54326
  if (entries.has(kind)) continue;
@@ -56559,17 +56683,17 @@ var NC_CONDITION_CATALOG = [
56559
56683
  options: [
56560
56684
  {
56561
56685
  value: "",
56562
- label: "It triggers and when it clears",
56563
- hint: "Every change: water detected, and back to dry."
56686
+ label: "When it starts and when it finishes",
56687
+ hint: "Every change: the alert itself, and the return to normal."
56564
56688
  },
56565
56689
  {
56566
56690
  value: "raised",
56567
- label: "Only when it triggers",
56691
+ label: "Only when it starts",
56568
56692
  hint: "Water detected, smoke, a contact opening — never the return to normal."
56569
56693
  },
56570
56694
  {
56571
56695
  value: "cleared",
56572
- label: "Only when it clears",
56696
+ label: "Only when it finishes",
56573
56697
  hint: "Back to dry, smoke gone, a contact closing — never the alert itself."
56574
56698
  }
56575
56699
  ],
@@ -64627,7 +64751,8 @@ var CAP_TO_KIND = {
64627
64751
  cover: "cover",
64628
64752
  switch: "switch",
64629
64753
  button: "button",
64630
- doorbell: "doorbell"
64754
+ doorbell: "doorbell",
64755
+ "running-state": "appliance-cycle"
64631
64756
  };
64632
64757
  function buildDescriptor(capName, kind) {
64633
64758
  const t = EVENT_TAXONOMY[kind];
@@ -69083,19 +69208,19 @@ var RemoteSetConfigResultSchema = discriminatedUnion("status", [object({ status:
69083
69208
  reason: _enum(["unknown-template", "not-a-media-player"]),
69084
69209
  detail: string()
69085
69210
  })]);
69086
- var deviceInput$1 = object({ deviceId: number().int().nonnegative() });
69211
+ var deviceInput = object({ deviceId: number().int().nonnegative() });
69087
69212
  DeviceType.MediaPlayer;
69088
- method(deviceInput$1, RemoteConfigSchema, { auth: "admin" }), method(deviceInput$1.extend({ config: RemoteConfigSchema }), RemoteSetConfigResultSchema, {
69213
+ method(deviceInput, RemoteConfigSchema, { auth: "admin" }), method(deviceInput.extend({ config: RemoteConfigSchema }), RemoteSetConfigResultSchema, {
69089
69214
  kind: "mutation",
69090
69215
  auth: "admin"
69091
- }), method(deviceInput$1, RemoteCommandListSchema, { auth: "protected" }), method(deviceInput$1.extend({
69216
+ }), method(deviceInput, RemoteCommandListSchema, { auth: "protected" }), method(deviceInput.extend({
69092
69217
  role: RemoteRoleSchema,
69093
69218
  /** Sends in a row (volume steps). */
69094
69219
  repeat: number().int().min(1).max(50).default(1)
69095
69220
  }), RemoteSendResultSchema, {
69096
69221
  kind: "mutation",
69097
69222
  auth: "protected"
69098
- }), method(deviceInput$1.extend({
69223
+ }), method(deviceInput.extend({
69099
69224
  command: RemoteMediaCommandSchema,
69100
69225
  muted: boolean().optional(),
69101
69226
  source: string().optional(),
@@ -73540,117 +73665,6 @@ var lockControlCapability = {
73540
73665
  * whether persisting is worth a SQLite commit. */
73541
73666
  volatileStateFields: ["lastChangedAt"]
73542
73667
  };
73543
- var PowerSourceRefusalReasonSchema = _enum([
73544
- "no-power-source",
73545
- "switch-missing",
73546
- "switch-offline",
73547
- "switch-unknown",
73548
- "restart-in-progress",
73549
- "switch-call-failed"
73550
- ]);
73551
- var PowerSourceActionResultSchema = discriminatedUnion("accepted", [object({ accepted: literal(true) }), object({
73552
- accepted: literal(false),
73553
- reason: PowerSourceRefusalReasonSchema,
73554
- /** One line for the operator, naming the switch. */
73555
- message: string()
73556
- })]);
73557
- var PowerSourceInfoSchema = object({
73558
- /** False when the device has no power source linked; the rest is then empty. */
73559
- linked: boolean(),
73560
- switchDeviceId: number().nullable(),
73561
- switchName: string().nullable(),
73562
- /** The switch's on/off state, or null when it is unknown. Never false for unknown (D393). */
73563
- switchOn: boolean().nullable(),
73564
- switchOnline: boolean().nullable(),
73565
- restartInProgress: boolean(),
73566
- offSeconds: number().int()
73567
- });
73568
- /** The composed slice: the switch state the link mirrors, plus the stored off time. */
73569
- var PowerSourceStateSchema = object({
73570
- /** Null while the switch has not reported: unknown is never `false` (D393). */
73571
- switchOn: boolean().nullable(),
73572
- offSeconds: number().int(),
73573
- lastFetchedAt: number()
73574
- });
73575
- var POWER_SOURCE_DEVICE_TYPES = [
73576
- DeviceType.Gateway,
73577
- DeviceType.Hub,
73578
- DeviceType.Camera,
73579
- DeviceType.Sensor,
73580
- DeviceType.MediaPlayer,
73581
- DeviceType.Vacuum,
73582
- DeviceType.Generic,
73583
- DeviceType.Washer,
73584
- DeviceType.Dryer,
73585
- DeviceType.Dishwasher,
73586
- DeviceType.PetFountain,
73587
- DeviceType.Fan,
73588
- DeviceType.Humidifier,
73589
- DeviceType.Climate,
73590
- DeviceType.WaterHeater
73591
- ];
73592
- var powerSourceCustomize = {
73593
- version: 1,
73594
- targets: [{
73595
- id: "switch",
73596
- cardinality: "scalar",
73597
- vocabulary: {
73598
- cap: "power-source",
73599
- stateField: "switchOn"
73600
- },
73601
- deviceTypes: POWER_SOURCE_DEVICE_TYPES,
73602
- apply: "add",
73603
- path: "switchOn",
73604
- sources: [{
73605
- kind: "switch",
73606
- transforms: [{ kind: "identity" }]
73607
- }],
73608
- companions: [{
73609
- kind: "constant",
73610
- path: "offSeconds",
73611
- value: 10,
73612
- when: "add"
73613
- }, {
73614
- kind: "clock",
73615
- path: "lastFetchedAt",
73616
- when: "always"
73617
- }],
73618
- sourceReport: { status: "assignment-status" }
73619
- }]
73620
- };
73621
- var deviceInput = object({ deviceId: number().int().nonnegative() });
73622
- var powerSourceCapability = {
73623
- name: "power-source",
73624
- scope: "device",
73625
- mode: "singleton",
73626
- deviceTypes: POWER_SOURCE_DEVICE_TYPES,
73627
- methods: {
73628
- getStatus: systemMethod(deviceInput, PowerSourceInfoSchema, { auth: "admin" }),
73629
- powerOn: systemMethod(deviceInput, PowerSourceActionResultSchema, {
73630
- kind: "mutation",
73631
- auth: "admin"
73632
- }),
73633
- powerOff: systemMethod(deviceInput, PowerSourceActionResultSchema, {
73634
- kind: "mutation",
73635
- auth: "admin"
73636
- }),
73637
- forceRestart: systemMethod(deviceInput, PowerSourceActionResultSchema, {
73638
- kind: "mutation",
73639
- auth: "admin"
73640
- })
73641
- },
73642
- runtimeState: PowerSourceStateSchema,
73643
- customize: powerSourceCustomize,
73644
- /**
73645
- * Runtime-state durability: **session** — mirrored from the linked switch on
73646
- * its next report; a restored value would outlive the reading it names.
73647
- *
73648
- * See `RuntimeStateDurability`. Enforced by
73649
- * `scripts/check-runtime-state-durability.ts`.
73650
- */
73651
- durability: "session",
73652
- history: "none"
73653
- };
73654
73668
  /**
73655
73669
  * A monotonic total between resets (D944). Energy uses `power-meter.energy`
73656
73670
  * so dashboards keep one series; every other instantaneous reading lands here.
@@ -77252,6 +77266,10 @@ var RUNNING_DEVICE_TYPES = Object.values(DeviceType);
77252
77266
  /** Generic Customize target for the running boolean (D936). */
77253
77267
  var runningCustomize = {
77254
77268
  version: 1,
77269
+ overridable: [{
77270
+ path: "running",
77271
+ by: "running"
77272
+ }],
77255
77273
  targets: [{
77256
77274
  id: "running",
77257
77275
  cardinality: "scalar",
@@ -77309,7 +77327,7 @@ var runningCustomize = {
77309
77327
  kind: "constant",
77310
77328
  path: "phase",
77311
77329
  value: null,
77312
- when: "always"
77330
+ when: "add"
77313
77331
  },
77314
77332
  {
77315
77333
  kind: "clock",
@@ -97423,7 +97441,8 @@ function isSystemDelivery(delivery) {
97423
97441
  * picker authors.
97424
97442
  *
97425
97443
  * Callers resolve the ids via `deviceManager.listDeviceIdsByCaps` (max 16
97426
- * names — `EVENTFUL_CAP_NAMES` is exactly 16) and must treat an unanswered
97444
+ * names per call — `EVENTFUL_CAP_NAMES` is longer than that, so ask through
97445
+ * {@link ruleDeviceCompatCapQueries}, which chunks it) and must treat an unanswered
97427
97446
  * read as "unknown", never as "no devices" (D315): this function only names
97428
97447
  * WHICH caps to ask for, not what to show while the answer is pending.
97429
97448
  */
@@ -97445,6 +97464,12 @@ function ruleDeviceCompatCapNames(kind) {
97445
97464
  * Named once, because a sensor rule's compatible set needs it (below).
97446
97465
  */
97447
97466
  var NC_CAMERA_SCOPE_CAP_NAME = "camera-streams";
97467
+ var MAX_CAPS_PER_QUERY = 16;
97468
+ function chunk(items, size) {
97469
+ const out = [];
97470
+ for (let i = 0; i < items.length; i += size) out.push(items.slice(i, i + size));
97471
+ return out;
97472
+ }
97448
97473
  /**
97449
97474
  * Every capability QUERY whose union is the set of devices a rule of this kind
97450
97475
  * may be SCOPED to (`conditions.devices`) — what the save-time guard and the
@@ -97452,7 +97477,7 @@ var NC_CAMERA_SCOPE_CAP_NAME = "camera-streams";
97452
97477
  * entry. `null` exactly where {@link ruleDeviceCompatCapNames} is `null`.
97453
97478
  *
97454
97479
  * Several queries rather than one list because `listDeviceIdsByCaps` takes at
97455
- * most 16 names and `EVENTFUL_CAP_NAMES` is already exactly 16.
97480
+ * most 16 names and `EVENTFUL_CAP_NAMES` is longer than that (chunked here).
97456
97481
  *
97457
97482
  * A `sensor` rule's set is the eventful devices PLUS every camera (fix round
97458
97483
  * 1, 2026-10-01): the engine matches a sensor rule scoped to a CAMERA — a
@@ -97463,7 +97488,8 @@ var NC_CAMERA_SCOPE_CAP_NAME = "camera-streams";
97463
97488
  function ruleDeviceCompatCapQueries(kind) {
97464
97489
  const primary = ruleDeviceCompatCapNames(kind);
97465
97490
  if (primary === null) return null;
97466
- return kind === "sensor" ? [primary, [NC_CAMERA_SCOPE_CAP_NAME]] : [primary];
97491
+ const chunks = chunk(primary, MAX_CAPS_PER_QUERY);
97492
+ return kind === "sensor" ? [...chunks, [NC_CAMERA_SCOPE_CAP_NAME]] : chunks;
97467
97493
  }
97468
97494
  /**
97469
97495
  * Which kind of rule is this?
@@ -98367,8 +98393,17 @@ function syncActiveAlarmProfileSettings(state, settings) {
98367
98393
  *
98368
98394
  * Pure, RN-safe: the viewer imports the support rule from here.
98369
98395
  */
98396
+ /**
98397
+ * Control caps that still have a raise and a clear an operator names: an
98398
+ * appliance cycle raises when it STARTS and clears when it FINISHES. Kept out
98399
+ * of `SOURCE_CAP_ACTIVE_FIELD` on purpose — that table also makes a device a
98400
+ * camera-sensor / recorder-trigger source, and a dishwasher is neither.
98401
+ */
98402
+ var CYCLE_RAISED_FIELD_BY_CAP = { "running-state": "running" };
98370
98403
  /** Event kind → the boolean field of its cap slice that means "raised". */
98371
98404
  var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.entries(EVENT_KIND_BY_CAP).flatMap(([capName, descriptor]) => {
98405
+ const cycleField = CYCLE_RAISED_FIELD_BY_CAP[capName];
98406
+ if (cycleField !== void 0) return [[descriptor.kind, cycleField]];
98372
98407
  const field = SOURCE_CAP_ACTIVE_FIELD[capName];
98373
98408
  if (field === void 0 || descriptor.category !== "sensor") return [];
98374
98409
  return [[descriptor.kind, field]];
@@ -98389,6 +98424,98 @@ function sensorRaisedOf(kind, value) {
98389
98424
  const raw = Object.entries(value).find(([key]) => key === field)?.[1];
98390
98425
  return typeof raw === "boolean" ? raw : void 0;
98391
98426
  }
98427
+ Object.freeze({
98428
+ contact: {
98429
+ starts: {
98430
+ en: "opened",
98431
+ it: "si apre"
98432
+ },
98433
+ finishes: {
98434
+ en: "closed",
98435
+ it: "si chiude"
98436
+ }
98437
+ },
98438
+ "motion-sensor": {
98439
+ starts: {
98440
+ en: "motion detected",
98441
+ it: "movimento rilevato"
98442
+ },
98443
+ finishes: {
98444
+ en: "motion stopped",
98445
+ it: "movimento terminato"
98446
+ }
98447
+ },
98448
+ smoke: {
98449
+ starts: {
98450
+ en: "smoke detected",
98451
+ it: "fumo rilevato"
98452
+ },
98453
+ finishes: {
98454
+ en: "smoke gone",
98455
+ it: "fumo scomparso"
98456
+ }
98457
+ },
98458
+ flood: {
98459
+ starts: {
98460
+ en: "water detected",
98461
+ it: "acqua rilevata"
98462
+ },
98463
+ finishes: {
98464
+ en: "dry again",
98465
+ it: "di nuovo asciutto"
98466
+ }
98467
+ },
98468
+ gas: {
98469
+ starts: {
98470
+ en: "gas detected",
98471
+ it: "gas rilevato"
98472
+ },
98473
+ finishes: {
98474
+ en: "gas gone",
98475
+ it: "gas scomparso"
98476
+ }
98477
+ },
98478
+ "carbon-monoxide": {
98479
+ starts: {
98480
+ en: "carbon monoxide detected",
98481
+ it: "monossido rilevato"
98482
+ },
98483
+ finishes: {
98484
+ en: "carbon monoxide gone",
98485
+ it: "monossido scomparso"
98486
+ }
98487
+ },
98488
+ vibration: {
98489
+ starts: {
98490
+ en: "vibration detected",
98491
+ it: "vibrazione rilevata"
98492
+ },
98493
+ finishes: {
98494
+ en: "vibration stopped",
98495
+ it: "vibrazione terminata"
98496
+ }
98497
+ },
98498
+ tamper: {
98499
+ starts: {
98500
+ en: "tampered with",
98501
+ it: "manomesso"
98502
+ },
98503
+ finishes: {
98504
+ en: "tamper cleared",
98505
+ it: "manomissione rientrata"
98506
+ }
98507
+ },
98508
+ "appliance-cycle": {
98509
+ starts: {
98510
+ en: "the cycle started",
98511
+ it: "il ciclo parte"
98512
+ },
98513
+ finishes: {
98514
+ en: "the cycle finished",
98515
+ it: "il ciclo è terminato"
98516
+ }
98517
+ }
98518
+ });
98392
98519
  /**
98393
98520
  * An alert EPISODE as a notification subject.
98394
98521
  *
@@ -100108,6 +100235,7 @@ var EVENT_KIND_LABEL_KEYS = [
100108
100235
  "siren",
100109
100236
  "button",
100110
100237
  "doorbell",
100238
+ "appliance-cycle",
100111
100239
  "audio-speech",
100112
100240
  "audio-scream",
100113
100241
  "audio-crying",
@@ -100315,6 +100443,10 @@ var EVENT_KIND_LABELS = {
100315
100443
  en: "Doorbell",
100316
100444
  it: "Campanello"
100317
100445
  },
100446
+ "appliance-cycle": {
100447
+ en: "Appliance cycle",
100448
+ it: "Ciclo elettrodomestico"
100449
+ },
100318
100450
  "audio-speech": {
100319
100451
  en: "Speech",
100320
100452
  it: "Voce"
@@ -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-zi2g3vrD.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-DAKPBZfa.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 { Si as resolvePoolMemoryPolicy, _r as embeddingModelFailedError, a as CLIP_EMBEDDING_STEP_ID, br as embeddingRequirementsUnavailableError, ga as normalizeNodeId, gr as embeddingEncoderCapability, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, ra as BaseAddon, rn as PoolMemoryWatchdog, si as parseProcStatus, t as BUILTIN_CLIP_MODELS, yr as embeddingRequirementsFailedError } from "../clip-model-registry-OHEqXA-p.mjs";
1
+ import { Si as resolvePoolMemoryPolicy, _r as embeddingModelFailedError, a as CLIP_EMBEDDING_STEP_ID, br as embeddingRequirementsUnavailableError, ga as normalizeNodeId, gr as embeddingEncoderCapability, i as CLIP_TEXT_MODELS, l as resolveClusterModelPin, n as DEFAULT_CLIP_MODEL, r as CLIP_IMAGE_MODELS, ra as BaseAddon, rn as PoolMemoryWatchdog, si as parseProcStatus, t as BUILTIN_CLIP_MODELS, yr as embeddingRequirementsFailedError } from "../clip-model-registry-D9BbIQ-h.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";
@@ -2,7 +2,7 @@ import { a as e, i as t, n, o as r, r as i, t as a } from "./_virtual_mf___mfe_i
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
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-BwWOFFOc.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-Dfps3D5t.mjs";
5
+ import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BDKliSzv.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.464",
21
+ version: "1.2.467",
22
22
  scope: ["default"],
23
23
  loaded: !1,
24
24
  from: "addon_pipeline_analytics_widgets",