@camstack/addon-post-analysis 1.2.642 → 1.2.643

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 (14) hide show
  1. package/dist/{clip-model-registry-CoH7ORtC.mjs → clip-model-registry-DdgT3gdf.mjs} +287 -24
  2. package/dist/{clip-model-registry-Dj3lrvL2.js → clip-model-registry-lKeBMKlT.js} +287 -24
  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-Dhan9FH4.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-B6X8TAQP.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-BIjXlrFH.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-CuNXxDlT.mjs → _virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js--XkysBjS.mjs} +1 -1
  9. package/dist/pipeline-analytics/{hostInit-j1gxJvS7.mjs → hostInit-CDPfOUWf.mjs} +2 -2
  10. package/dist/pipeline-analytics/index.js +58 -10
  11. package/dist/pipeline-analytics/index.mjs +58 -10
  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-_TUthUZh.mjs +0 -26
@@ -5671,7 +5671,7 @@ var ZodIssueCode = {
5671
5671
  var ZodFirstPartyTypeKind;
5672
5672
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5673
5673
  //#endregion
5674
- //#region ../types/dist/sleep-0sD_LHLI.mjs
5674
+ //#region ../types/dist/sleep--jXS9hWo.mjs
5675
5675
  /**
5676
5676
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5677
5677
  * window to float samples (D455).
@@ -9092,6 +9092,7 @@ var CAP_NAMES = Object.freeze([
9092
9092
  "filesystem-browse",
9093
9093
  "flood",
9094
9094
  "gas",
9095
+ "group-active",
9095
9096
  "group-commands",
9096
9097
  "group-status",
9097
9098
  "heating-valve",
@@ -9913,6 +9914,10 @@ Object.freeze({
9913
9914
  "path": "detected",
9914
9915
  "valueType": "boolean"
9915
9916
  }],
9917
+ "group-active": [{
9918
+ "path": "active",
9919
+ "valueType": "boolean"
9920
+ }],
9916
9921
  "group-status": [
9917
9922
  {
9918
9923
  "path": "included",
@@ -10921,7 +10926,7 @@ Object.freeze({
10921
10926
  * can answer "may a rule actuate this?" without importing the schema barrel
10922
10927
  * (~144MB RSS per runner, D28).
10923
10928
  *
10924
- * Coverage: 94 device-scoped capabilities.
10929
+ * Coverage: 95 device-scoped capabilities.
10925
10930
  */
10926
10931
  var DEVICE_SCOPED_CAPS = new Set([
10927
10932
  "accessories",
@@ -10962,6 +10967,7 @@ var DEVICE_SCOPED_CAPS = new Set([
10962
10967
  "feature-probe",
10963
10968
  "flood",
10964
10969
  "gas",
10970
+ "group-active",
10965
10971
  "group-commands",
10966
10972
  "group-status",
10967
10973
  "heating-valve",
@@ -11422,7 +11428,7 @@ function errMsg(err) {
11422
11428
  return String(err);
11423
11429
  }
11424
11430
  //#endregion
11425
- //#region ../types/dist/composition-CpETZ4HL.mjs
11431
+ //#region ../types/dist/composition-Bb8iwHEJ.mjs
11426
11432
  /**
11427
11433
  * Deterministic SHA-256 hash of an arbitrary serialisable value. The
11428
11434
  * canonical form sorts object keys alphabetically at every depth so two
@@ -11897,6 +11903,13 @@ var table = {
11897
11903
  apply: () => {
11898
11904
  throw new ExpressionEvalError("latchedAt: stateful evaluation context is required");
11899
11905
  }
11906
+ },
11907
+ schmitt: {
11908
+ minArgs: 3,
11909
+ maxArgs: 5,
11910
+ apply: () => {
11911
+ throw new ExpressionEvalError("schmitt: stateful evaluation context is required");
11912
+ }
11900
11913
  }
11901
11914
  };
11902
11915
  Object.freeze(Object.assign(Object.create(null), table));
@@ -12407,7 +12420,7 @@ var RESET_PERIODS = [
12407
12420
  5 * MINUTE_MS;
12408
12421
  24 * HOUR_MS, 2 * DAY_MS, 7 * DAY_MS, 30 * DAY_MS;
12409
12422
  7 * DAY_MS, 30 * DAY_MS, 365 * DAY_MS;
12410
- var StatisticWindowSchema = discriminatedUnion("kind", [object({
12423
+ var rollingWindowObject = object({
12411
12424
  kind: literal("rolling"),
12412
12425
  span: _enum(ROLLING_SPANS),
12413
12426
  customMinutes: number().int().min(5).optional()
@@ -12424,7 +12437,9 @@ var StatisticWindowSchema = discriminatedUnion("kind", [object({
12424
12437
  path: ["customMinutes"],
12425
12438
  input: payload.value
12426
12439
  });
12427
- }), object({
12440
+ });
12441
+ var RollingWindowSchema = rollingWindowObject;
12442
+ var StatisticWindowSchema = discriminatedUnion("kind", [rollingWindowObject, object({
12428
12443
  kind: literal("calendar"),
12429
12444
  period: _enum(CALENDAR_PERIODS)
12430
12445
  })]);
@@ -12454,7 +12469,13 @@ var GROUP_TEMPLATE_IDS = [
12454
12469
  "occupancy",
12455
12470
  "binary",
12456
12471
  "switch",
12457
- "light"
12472
+ "light",
12473
+ "fan",
12474
+ "cover",
12475
+ "valve",
12476
+ "lock",
12477
+ "media-player",
12478
+ "climate"
12458
12479
  ];
12459
12480
  var NUMERIC_AGGREGATES = [
12460
12481
  "mean",
@@ -12513,6 +12534,42 @@ var HelperSpecSchema = discriminatedUnion("kind", [
12513
12534
  reset: _enum(RESET_PERIODS),
12514
12535
  output: _enum(["energy", "meter"]),
12515
12536
  source: HelperMemberSchema
12537
+ }),
12538
+ object({
12539
+ kind: literal("threshold"),
12540
+ source: HelperMemberSchema,
12541
+ high: number(),
12542
+ low: number(),
12543
+ onForMs: number().int().nonnegative(),
12544
+ offForMs: number().int().nonnegative()
12545
+ }),
12546
+ object({
12547
+ kind: literal("arithmetic"),
12548
+ op: _enum([
12549
+ "sum",
12550
+ "difference",
12551
+ "ratio"
12552
+ ]),
12553
+ inputs: array(HelperMemberSchema).min(2).max(64)
12554
+ }),
12555
+ object({
12556
+ kind: literal("expression"),
12557
+ expr: string().min(1),
12558
+ inputs: array(object({
12559
+ name: string().min(1),
12560
+ member: HelperMemberSchema
12561
+ })).min(1).max(64),
12562
+ output: _enum(["number", "boolean"])
12563
+ }),
12564
+ object({
12565
+ kind: literal("derivative"),
12566
+ window: RollingWindowSchema,
12567
+ per: _enum([
12568
+ "second",
12569
+ "minute",
12570
+ "hour"
12571
+ ]),
12572
+ source: HelperMemberSchema
12516
12573
  })
12517
12574
  ]);
12518
12575
  /** A composed device's stableId is this prefix plus the block id. */
@@ -12575,6 +12632,12 @@ var CompositionFieldSourceSchema = discriminatedUnion("kind", [
12575
12632
  "all"
12576
12633
  ]),
12577
12634
  reads: array(CompositionFieldReadSchema).min(1).max(64),
12635
+ /**
12636
+ * Set when the reads are an enum state, not a yes/no: the listed states
12637
+ * count as active (a cover is `open`). A state outside the list is inactive;
12638
+ * a read that is not a state at all is left out. Only `any` / `all` use it.
12639
+ */
12640
+ activeWhen: array(string().min(1)).min(1).optional(),
12578
12641
  /** `value` is the reading; the others are the member counts. */
12579
12642
  publish: _enum([
12580
12643
  "value",
@@ -19890,13 +19953,17 @@ Object.freeze({
19890
19953
  latchedAt: {
19891
19954
  kind: "fixed",
19892
19955
  result: ["number", "null"]
19956
+ },
19957
+ schmitt: {
19958
+ kind: "fixed",
19959
+ result: ["boolean", "null"]
19893
19960
  }
19894
19961
  });
19895
19962
  /**
19896
19963
  * One catalog row per base reading a group helper can build (D944 §3).
19897
19964
  * Data, not a form default written into the block.
19898
19965
  */
19899
- var NOW$1 = {
19966
+ var NOW$2 = {
19900
19967
  fieldPath: "lastFetchedAt",
19901
19968
  expr: "now"
19902
19969
  };
@@ -19910,6 +19977,8 @@ function numeric(input) {
19910
19977
  family: "numeric",
19911
19978
  deviceType: DeviceType.Sensor,
19912
19979
  memberDeviceType: DeviceType.Sensor,
19980
+ memberDeviceTypes: [DeviceType.Sensor],
19981
+ activeWhen: void 0,
19913
19982
  commandCaps: [],
19914
19983
  baseUnit: baseUnitOf(input.quantity),
19915
19984
  aggregates: NUMERIC_AGGREGATES,
@@ -19925,6 +19994,8 @@ function binary(input) {
19925
19994
  family: "binary",
19926
19995
  deviceType: DeviceType.Sensor,
19927
19996
  memberDeviceType: DeviceType.Sensor,
19997
+ memberDeviceTypes: [DeviceType.Sensor],
19998
+ activeWhen: void 0,
19928
19999
  commandCaps: [],
19929
20000
  quantity: "none",
19930
20001
  baseUnit: void 0,
@@ -19942,7 +20013,7 @@ var GROUP_TEMPLATES = [
19942
20013
  quantity: "temperature",
19943
20014
  defaultAggregate: "mean",
19944
20015
  empty: "null",
19945
- companions: [NOW$1]
20016
+ companions: [NOW$2]
19946
20017
  }),
19947
20018
  numeric({
19948
20019
  id: "humidity",
@@ -19953,7 +20024,7 @@ var GROUP_TEMPLATES = [
19953
20024
  quantity: "humidity",
19954
20025
  defaultAggregate: "mean",
19955
20026
  empty: "null",
19956
- companions: [NOW$1]
20027
+ companions: [NOW$2]
19957
20028
  }),
19958
20029
  numeric({
19959
20030
  id: "pressure",
@@ -19964,7 +20035,7 @@ var GROUP_TEMPLATES = [
19964
20035
  quantity: "pressure",
19965
20036
  defaultAggregate: "mean",
19966
20037
  empty: "null",
19967
- companions: [NOW$1]
20038
+ companions: [NOW$2]
19968
20039
  }),
19969
20040
  numeric({
19970
20041
  id: "illuminance",
@@ -19975,7 +20046,7 @@ var GROUP_TEMPLATES = [
19975
20046
  quantity: "illuminance",
19976
20047
  defaultAggregate: "mean",
19977
20048
  empty: "null",
19978
- companions: [NOW$1]
20049
+ companions: [NOW$2]
19979
20050
  }),
19980
20051
  numeric({
19981
20052
  id: "power",
@@ -19986,7 +20057,7 @@ var GROUP_TEMPLATES = [
19986
20057
  quantity: "power",
19987
20058
  defaultAggregate: "sum",
19988
20059
  empty: "omit",
19989
- companions: [NOW$1]
20060
+ companions: [NOW$2]
19990
20061
  }),
19991
20062
  numeric({
19992
20063
  id: "energy",
@@ -19997,7 +20068,7 @@ var GROUP_TEMPLATES = [
19997
20068
  quantity: "energy",
19998
20069
  defaultAggregate: "sum",
19999
20070
  empty: "omit",
20000
- companions: [NOW$1]
20071
+ companions: [NOW$2]
20001
20072
  }),
20002
20073
  numeric({
20003
20074
  id: "battery",
@@ -20032,7 +20103,7 @@ var GROUP_TEMPLATES = [
20032
20103
  quantity: "device",
20033
20104
  defaultAggregate: "mean",
20034
20105
  empty: "null",
20035
- companions: [NOW$1]
20106
+ companions: [NOW$2]
20036
20107
  }),
20037
20108
  binary({
20038
20109
  id: "motion",
@@ -20126,6 +20197,11 @@ var GROUP_TEMPLATES = [
20126
20197
  summary: "On when at least one switch is on, or when all of them are. Offline and unknown members are left out of that decision, never read as off, and still receive the command.",
20127
20198
  deviceType: DeviceType.Switch,
20128
20199
  outputCap: "switch",
20200
+ outputField: "on",
20201
+ member: {
20202
+ cap: "switch",
20203
+ fieldPath: "on"
20204
+ },
20129
20205
  commandCaps: ["switch"]
20130
20206
  }),
20131
20207
  actuator({
@@ -20133,29 +20209,130 @@ var GROUP_TEMPLATES = [
20133
20209
  summary: "On when at least one light is on, or when all of them are. Brightness and colour are offered only when every member has them. A command is not sent to a member that lacks it.",
20134
20210
  deviceType: DeviceType.Light,
20135
20211
  outputCap: "switch",
20212
+ outputField: "on",
20213
+ member: {
20214
+ cap: "switch",
20215
+ fieldPath: "on"
20216
+ },
20136
20217
  commandCaps: [
20137
20218
  "switch",
20138
20219
  "brightness",
20139
20220
  "color"
20140
20221
  ]
20222
+ }),
20223
+ actuator({
20224
+ id: "fan",
20225
+ summary: "On when at least one fan is on, or when all of them are. Speed, preset, direction and oscillation are offered only when every fan has them. A command is not sent to a fan that lacks it.",
20226
+ deviceType: DeviceType.Fan,
20227
+ outputCap: "switch",
20228
+ outputField: "on",
20229
+ member: {
20230
+ cap: "switch",
20231
+ fieldPath: "on"
20232
+ },
20233
+ commandCaps: ["switch", "fan-control"]
20234
+ }),
20235
+ actuator({
20236
+ id: "cover",
20237
+ summary: "Open when at least one cover is open or part-open, or only when all of them are. Position and tilt are offered only when every cover has them. A cover that reports nothing is left out, never read as closed.",
20238
+ deviceType: DeviceType.Cover,
20239
+ outputCap: "group-active",
20240
+ outputField: "active",
20241
+ member: {
20242
+ cap: "cover",
20243
+ fieldPath: "state"
20244
+ },
20245
+ activeWhen: [
20246
+ "open",
20247
+ "opening",
20248
+ "stopped"
20249
+ ],
20250
+ commandCaps: ["cover"]
20251
+ }),
20252
+ actuator({
20253
+ id: "valve",
20254
+ summary: "Open when at least one valve is open or part-open, or only when all of them are. Position is offered only when every valve has it. A valve that reports nothing is left out, never read as closed.",
20255
+ deviceType: DeviceType.Valve,
20256
+ outputCap: "group-active",
20257
+ outputField: "active",
20258
+ member: {
20259
+ cap: "valve",
20260
+ fieldPath: "state"
20261
+ },
20262
+ activeWhen: [
20263
+ "open",
20264
+ "opening",
20265
+ "stopped"
20266
+ ],
20267
+ commandCaps: ["valve"]
20268
+ }),
20269
+ actuator({
20270
+ id: "lock",
20271
+ summary: "Locked when at least one lock is locked, or only when all of them are. A jammed or moving lock is not locked. Locking is one tap; unlocking the group needs a confirmation every time, and nothing is sent without it.",
20272
+ deviceType: DeviceType.Lock,
20273
+ outputCap: "group-active",
20274
+ outputField: "active",
20275
+ member: {
20276
+ cap: "lock-control",
20277
+ fieldPath: "state"
20278
+ },
20279
+ activeWhen: ["locked"],
20280
+ commandCaps: ["lock-control"]
20281
+ }),
20282
+ actuator({
20283
+ id: "media-player",
20284
+ summary: "Playing when at least one player is playing, or only when all of them are. Volume is offered only when every player has it. A player that reports nothing is left out, never read as stopped.",
20285
+ deviceType: DeviceType.MediaPlayer,
20286
+ outputCap: "group-active",
20287
+ outputField: "active",
20288
+ member: {
20289
+ cap: "media-player",
20290
+ fieldPath: "state"
20291
+ },
20292
+ activeWhen: ["playing", "buffering"],
20293
+ commandCaps: ["media-player"]
20294
+ }),
20295
+ actuator({
20296
+ id: "climate",
20297
+ summary: "Running when at least one thermostat or air conditioner is not off, or only when all of them are. Target temperature and fan are offered only when every device has them. A device that reports nothing is left out, never read as off.",
20298
+ deviceType: DeviceType.Thermostat,
20299
+ memberDeviceTypes: [DeviceType.Thermostat, DeviceType.Climate],
20300
+ outputCap: "group-active",
20301
+ outputField: "active",
20302
+ member: {
20303
+ cap: "climate-control",
20304
+ fieldPath: "mode"
20305
+ },
20306
+ activeWhen: [
20307
+ "heat",
20308
+ "cool",
20309
+ "auto",
20310
+ "heat_cool",
20311
+ "fan_only",
20312
+ "dry"
20313
+ ],
20314
+ commandCaps: ["climate-control"]
20141
20315
  })
20142
20316
  ];
20143
20317
  function actuator(input) {
20144
20318
  return {
20145
- ...input,
20319
+ id: input.id,
20320
+ summary: input.summary,
20321
+ deviceType: input.deviceType,
20322
+ outputCap: input.outputCap,
20323
+ outputField: input.outputField,
20324
+ commandCaps: input.commandCaps,
20146
20325
  family: "actuator",
20147
20326
  role: void 0,
20148
20327
  memberDeviceType: input.deviceType,
20149
- outputField: "on",
20328
+ memberDeviceTypes: input.memberDeviceTypes ?? [input.deviceType],
20329
+ activeWhen: input.activeWhen,
20150
20330
  quantity: "none",
20151
20331
  baseUnit: void 0,
20152
20332
  aggregates: BINARY_AGGREGATES,
20153
20333
  defaultAggregate: "any",
20154
20334
  empty: "offline",
20155
- accept: [{
20156
- cap: "switch",
20157
- fieldPath: "on"
20158
- }],
20335
+ accept: [input.member],
20159
20336
  companions: [CHANGED]
20160
20337
  };
20161
20338
  }
@@ -63758,7 +63935,17 @@ var groupCommandsCapability = {
63758
63935
  scope: "device",
63759
63936
  deviceNative: true,
63760
63937
  mode: "singleton",
63761
- deviceTypes: [DeviceType.Switch, DeviceType.Light],
63938
+ deviceTypes: [
63939
+ DeviceType.Switch,
63940
+ DeviceType.Light,
63941
+ DeviceType.Fan,
63942
+ DeviceType.Cover,
63943
+ DeviceType.Valve,
63944
+ DeviceType.Lock,
63945
+ DeviceType.MediaPlayer,
63946
+ DeviceType.Thermostat,
63947
+ DeviceType.Climate
63948
+ ],
63762
63949
  methods: {},
63763
63950
  status: {
63764
63951
  schema: GroupCommandsSchema,
@@ -63776,6 +63963,49 @@ var groupCommandsCapability = {
63776
63963
  history: "none"
63777
63964
  };
63778
63965
  /**
63966
+ * Whether a helper actuator group counts as active (D944): at least one
63967
+ * included member is, or every included member is. What "active" means is the
63968
+ * type's: a cover is open, a lock is locked, a media player is playing, a
63969
+ * climate device is not off. A group of lights, switches and fans reports
63970
+ * `switch.on` instead; this cap is for the types whose own state is not a
63971
+ * yes/no. Unknown members are left out (`group-status` counts them) and an
63972
+ * empty included set takes the device offline, never `active: false`.
63973
+ */
63974
+ var GroupActiveSchema = object({
63975
+ active: boolean().meta({ label: "Active" }),
63976
+ /** Ms epoch when the slice was last updated. */
63977
+ lastChangedAt: number()
63978
+ });
63979
+ var groupActiveCapability = {
63980
+ name: "group-active",
63981
+ scope: "device",
63982
+ deviceNative: true,
63983
+ mode: "singleton",
63984
+ deviceTypes: [
63985
+ DeviceType.Cover,
63986
+ DeviceType.Valve,
63987
+ DeviceType.Lock,
63988
+ DeviceType.MediaPlayer,
63989
+ DeviceType.Climate,
63990
+ DeviceType.Thermostat
63991
+ ],
63992
+ methods: {},
63993
+ status: {
63994
+ schema: GroupActiveSchema,
63995
+ kind: "push"
63996
+ },
63997
+ runtimeState: GroupActiveSchema,
63998
+ /**
63999
+ * Runtime-state durability: **session** — recomputed from the members on the
64000
+ * next source event; a restored value would outlive the members it named.
64001
+ *
64002
+ * See `RuntimeStateDurability`. Enforced by
64003
+ * `scripts/check-runtime-state-durability.ts`.
64004
+ */
64005
+ durability: "session",
64006
+ history: "none"
64007
+ };
64008
+ /**
63779
64009
  * How many members of a helper group answered (D944). Counts are integers,
63780
64010
  * not measurements: zero included is a real count, never a stand-in reading.
63781
64011
  * The reading itself stays on the output capability. History is none — the
@@ -63806,7 +64036,14 @@ var groupStatusCapability = {
63806
64036
  deviceTypes: [
63807
64037
  DeviceType.Sensor,
63808
64038
  DeviceType.Switch,
63809
- DeviceType.Light
64039
+ DeviceType.Light,
64040
+ DeviceType.Fan,
64041
+ DeviceType.Cover,
64042
+ DeviceType.Valve,
64043
+ DeviceType.Lock,
64044
+ DeviceType.MediaPlayer,
64045
+ DeviceType.Thermostat,
64046
+ DeviceType.Climate
63810
64047
  ],
63811
64048
  methods: {},
63812
64049
  status: {
@@ -65100,7 +65337,14 @@ var lockControlCapability = {
65100
65337
  }),
65101
65338
  unlock: method(object({
65102
65339
  deviceId: number().int().nonnegative(),
65103
- code: string().min(1).optional()
65340
+ code: string().min(1).optional(),
65341
+ /**
65342
+ * Honoured by a helper lock GROUP only (D944): unlocking several doors
65343
+ * with one call is refused unless the caller says it was confirmed. A
65344
+ * single lock ignores it. The refusal lives in the callee, so no
65345
+ * automation or API caller reaches the doors by skipping a dialog.
65346
+ */
65347
+ confirm: boolean().optional()
65104
65348
  }), _void(), {
65105
65349
  kind: "mutation",
65106
65350
  auth: "protected"
@@ -71045,7 +71289,8 @@ var switchCapability = {
71045
71289
  deviceTypes: [
71046
71290
  DeviceType.Switch,
71047
71291
  DeviceType.Siren,
71048
- DeviceType.Light
71292
+ DeviceType.Light,
71293
+ DeviceType.Fan
71049
71294
  ],
71050
71295
  methods: { setState: method(object({
71051
71296
  deviceId: number(),
@@ -73258,6 +73503,7 @@ method(object({}), array(TrainingBaseModelSchema).readonly(), { auth: "admin" })
73258
73503
  kind: "mutation",
73259
73504
  auth: "admin"
73260
73505
  });
73506
+ DeviceFeature.FanSpeed, DeviceFeature.FanPreset, DeviceFeature.FanDirection, DeviceFeature.FanOscillating, DeviceFeature.CoverPositionable, DeviceFeature.CoverTilt, DeviceFeature.ValvePositionable, DeviceFeature.MediaPlayerVolume, DeviceFeature.ClimateFanMode;
73261
73507
  SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
73262
73508
  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;
73263
73509
  String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
@@ -73641,6 +73887,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
73641
73887
  featureProbe: featureProbeCapability,
73642
73888
  flood: floodCapability,
73643
73889
  gas: gasCapability,
73890
+ groupActive: groupActiveCapability,
73644
73891
  groupCommands: groupCommandsCapability,
73645
73892
  groupStatus: groupStatusCapability,
73646
73893
  heatingValve: heatingValveCapability,
@@ -77652,6 +77899,13 @@ Object.freeze({
77652
77899
  access: "view",
77653
77900
  role: "viewer"
77654
77901
  },
77902
+ "groupActive.getStatus": {
77903
+ capName: "group-active",
77904
+ capScope: "device",
77905
+ addonId: null,
77906
+ access: "view",
77907
+ role: "viewer"
77908
+ },
77655
77909
  "groupCommands.getStatus": {
77656
77910
  capName: "group-commands",
77657
77911
  capScope: "device",
@@ -87527,6 +87781,10 @@ var SENSOR_CAP_VOCABULARY = {
87527
87781
  icon: "flame"
87528
87782
  }]
87529
87783
  },
87784
+ "group-active": {
87785
+ scope: "device",
87786
+ noun: t("Group state", "Stato del gruppo")
87787
+ },
87530
87788
  "group-commands": {
87531
87789
  scope: "device",
87532
87790
  noun: t("Group command", "Comando di gruppo")
@@ -89073,6 +89331,11 @@ Object.freeze({
89073
89331
  form: "single",
89074
89332
  optional: false
89075
89333
  }],
89334
+ "groupActive.getStatus": [{
89335
+ name: "deviceId",
89336
+ form: "single",
89337
+ optional: false
89338
+ }],
89076
89339
  "groupCommands.getStatus": [{
89077
89340
  name: "deviceId",
89078
89341
  form: "single",
@@ -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-Dj3lrvL2.js");
5
+ const require_clip_model_registry = require("../clip-model-registry-lKeBMKlT.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-CoH7ORtC.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-DdgT3gdf.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-CuNXxDlT.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--XkysBjS.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-_TUthUZh.mjs";
5
+ import { t as C } from "./_virtual_mf___mfe_internal__addon_pipeline_analytics_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BIjXlrFH.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.423",
21
+ version: "1.2.424",
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.334",
36
+ version: "1.2.335",
37
37
  scope: ["default"],
38
38
  loaded: !1,
39
39
  from: "addon_pipeline_analytics_widgets",