@camstack/addon-model-studio 1.1.290 → 1.1.292

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 (19) hide show
  1. package/dist/{MotionZonesSettings-BDXv-_SC.mjs → MotionZonesSettings-BcdUnoUf.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-BFDJJ_jI.mjs → PrivacyMaskSettings-B8Fva5aA.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-DsKs-28v.mjs → SceneMonitorEditor-gGXbk_xd.mjs} +3 -3
  4. package/dist/_stub.js +2007 -2000
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-vqigWLhP.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BQtGyoxs.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BsM_g96G.mjs +26 -0
  7. package/dist/addon-model-studio.css +1 -1
  8. package/dist/{hostInit-RwS7Hfsn.mjs → hostInit-E9SMnTP0.mjs} +2 -2
  9. package/dist/model-studio.addon.js +189 -90
  10. package/dist/model-studio.addon.mjs +189 -90
  11. package/dist/{player-overlays-CSDHuCWB.mjs → player-overlays-CMJi9ZqH.mjs} +1 -1
  12. package/dist/remoteEntry.js +1 -1
  13. package/dist/{responsive-BOr_1QSL.mjs → responsive-BsA5VAZE.mjs} +1 -1
  14. package/dist/{scene-monitor-copy-CcAIfs8G.mjs → scene-monitor-copy-CoIP1A-9.mjs} +1 -1
  15. package/dist/{square-X2giTSaZ.mjs → square-DtlTO5Fw.mjs} +1 -1
  16. package/dist/{trash-2-CphQimp6.mjs → trash-2-CYc9z9Tz.mjs} +1 -1
  17. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-D6XbC3Hu.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-D-DKvrkx.mjs} +1 -1
  18. package/package.json +1 -1
  19. package/dist/_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C2LtE9v7.mjs +0 -26
@@ -36,7 +36,7 @@ async function r() {
36
36
  }
37
37
  },
38
38
  "@camstack/types": {
39
- version: "1.2.405",
39
+ version: "1.2.407",
40
40
  scope: "default",
41
41
  shareConfig: {
42
42
  singleton: !0,
@@ -81,7 +81,7 @@ async function r() {
81
81
  }
82
82
  },
83
83
  "@camstack/ui-library": {
84
- version: "1.2.320",
84
+ version: "1.2.322",
85
85
  scope: "default",
86
86
  shareConfig: {
87
87
  singleton: !0,
@@ -394,7 +394,7 @@ function buildScryptedRegistryDescriptor(entry) {
394
394
  };
395
395
  }
396
396
  //#endregion
397
- //#region ../types/dist/event-category-fDPduoeC.mjs
397
+ //#region ../types/dist/event-category-Ceif8n-v.mjs
398
398
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
399
399
  EventCategory["SystemBoot"] = "system.boot";
400
400
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -866,6 +866,10 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
866
866
  * on the device detail page.
867
867
  */
868
868
  EventCategory["DoorbellOnPressed"] = "doorbell.onPressed";
869
+ /** Mirrors `runningStateCapability.events.onStarted`. */
870
+ EventCategory["RunningStarted"] = "running.started";
871
+ /** Mirrors `runningStateCapability.events.onFinished`. */
872
+ EventCategory["RunningFinished"] = "running.finished";
869
873
  /**
870
874
  * Cap event fired by every device that registers the `event-emitter`
871
875
  * capability. Mirrors `eventEmitterCapability.events.onEvent`. Carries
@@ -5825,7 +5829,7 @@ var ZodIssueCode = {
5825
5829
  var ZodFirstPartyTypeKind;
5826
5830
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5827
5831
  //#endregion
5828
- //#region ../types/dist/sleep-CHIEEJkY.mjs
5832
+ //#region ../types/dist/sleep-CYfIZzGv.mjs
5829
5833
  /**
5830
5834
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5831
5835
  * window to float samples (D455).
@@ -6164,7 +6168,7 @@ Object.fromEntries([
6164
6168
  * `hydrateSchema` to skip the `value` injection for structural-only fields.
6165
6169
  */
6166
6170
  function isValuelessField(field) {
6167
- return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button";
6171
+ return field.type === "separator" || field.type === "info" || field.type === "qr-code" || field.type === "button" || field.type === "object-array" || field.type === "widget" || field.type === "addon-action-button" || field.type === "device-action-button" || field.type === "account-sign-in" || field.type === "secret-presence";
6168
6172
  }
6169
6173
  function hydrateSchema(schema, values, options = {}) {
6170
6174
  return {
@@ -9206,7 +9210,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
9206
9210
  return DeviceRole;
9207
9211
  }({});
9208
9212
  //#endregion
9209
- //#region ../types/dist/composition-CB6PMT9p.mjs
9213
+ //#region ../types/dist/composition-BJ8iAZb3.mjs
9210
9214
  /**
9211
9215
  * The ffmpeg build every CamStack node downloads, per platform and arch.
9212
9216
  *
@@ -9266,7 +9270,7 @@ portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac
9266
9270
  * ONE table for everyone who asks "is this device HIGH?": the
9267
9271
  * recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
9268
9272
  * sensor markers, the orchestrator's camera-sensors bridge and
9269
- * the sources of a composite doorbell (`doorbellFeatureSources`, D671).
9273
+ * the sources of a pulse (`compilePulseOverride`, D936).
9270
9274
  * A second copy would diverge at the first cap added, and the symptom — "the
9271
9275
  * sensor rings the doorbell but does not record" — is exactly D62.
9272
9276
  *
@@ -9507,6 +9511,20 @@ var table = {
9507
9511
  apply: () => {
9508
9512
  throw new ExpressionEvalError("count: stateful evaluation context is required");
9509
9513
  }
9514
+ },
9515
+ dwell: {
9516
+ minArgs: 3,
9517
+ maxArgs: 3,
9518
+ apply: () => {
9519
+ throw new ExpressionEvalError("dwell: stateful evaluation context is required");
9520
+ }
9521
+ },
9522
+ latchedAt: {
9523
+ minArgs: 1,
9524
+ maxArgs: 1,
9525
+ apply: () => {
9526
+ throw new ExpressionEvalError("latchedAt: stateful evaluation context is required");
9527
+ }
9510
9528
  }
9511
9529
  };
9512
9530
  Object.freeze(Object.assign(Object.create(null), table));
@@ -16506,7 +16524,15 @@ Object.freeze({
16506
16524
  kind: "fixed",
16507
16525
  result: ["number", "null"]
16508
16526
  },
16509
- count: NUMBER
16527
+ count: NUMBER,
16528
+ dwell: {
16529
+ kind: "fixed",
16530
+ result: ["boolean", "null"]
16531
+ },
16532
+ latchedAt: {
16533
+ kind: "fixed",
16534
+ result: ["number", "null"]
16535
+ }
16510
16536
  });
16511
16537
  `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
16512
16538
  /**
@@ -42734,9 +42760,6 @@ var NcSystemEventKindSchema = _enum([
42734
42760
  "device-battery-normal",
42735
42761
  "device-consumable-low",
42736
42762
  "device-consumable-normal",
42737
- "device-tank-low",
42738
- "device-tank-full",
42739
- "device-tank-normal",
42740
42763
  "stream-online",
42741
42764
  "stream-offline",
42742
42765
  "node-online",
@@ -42783,13 +42806,14 @@ var NcSystemEventKindSchema = _enum([
42783
42806
  "camera-enabled"
42784
42807
  ]);
42785
42808
  /** The legacy tail of {@link NcSystemEventKindSchema} — see its docblock. */
42786
- var NC_LEGACY_SYSTEM_EVENT_KINDS = new Set([
42809
+ var NC_LEGACY_SYSTEM_EVENT_KINDS = [
42787
42810
  "camera-online",
42788
42811
  "camera-offline",
42789
42812
  "camera-disabled",
42790
42813
  "camera-enabled"
42791
- ]);
42792
- NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KINDS.has(kind));
42814
+ ];
42815
+ var NC_LEGACY_SYSTEM_EVENT_KIND_SET = new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
42816
+ NcSystemEventKindSchema.options.filter((kind) => !NC_LEGACY_SYSTEM_EVENT_KIND_SET.has(kind));
42793
42817
  /**
42794
42818
  * The panel's transitions, as ONE list.
42795
42819
  *
@@ -43908,18 +43932,11 @@ var NcRuleSchema = NcRuleInputSchema.extend({
43908
43932
  */
43909
43933
  disabledTargetIds: array(string()).default([])
43910
43934
  });
43911
- /**
43912
- * The state-summary SECTIONS (D647 / D698 / D708): the D637 kind groups that
43913
- * report a still-true state. `addons` is the crash-looped addons only and
43914
- * `addon-updates` the addons that are behind (D708 split them). `backups-exports` and `alarm` are not sections — a completed
43915
- * job is not an open state, and the alarm stays instant.
43916
- */
43917
43935
  var NcStateSummarySectionIdSchema = _enum([
43918
43936
  "device-state",
43919
43937
  "streams",
43920
43938
  "battery",
43921
43939
  "consumables",
43922
- "tanks",
43923
43940
  "detection-blind",
43924
43941
  "nodes",
43925
43942
  "addons",
@@ -54283,7 +54300,8 @@ var BatteryStatusSchema = object({
54283
54300
  */
54284
54301
  binary: boolean().optional()
54285
54302
  });
54286
- DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat, method(object({
54303
+ DeviceType.Camera, DeviceType.Sensor, DeviceType.Button, DeviceType.Switch, DeviceType.PetFeeder, DeviceType.Container, DeviceType.Thermostat;
54304
+ method(object({
54287
54305
  deviceId: number(),
54288
54306
  /** Bound on the wait. Sensible range 3000–10000ms. */
54289
54307
  timeoutMs: number().int().min(500).max(3e4).default(8e3)
@@ -54992,6 +55010,7 @@ var ConsumablesStatusSchema = object({
54992
55010
  })),
54993
55011
  lastChangedAt: number()
54994
55012
  });
55013
+ Object.values(DeviceType), [...ConsumableRemainingUnitSchema.options], [...ConsumableStatusSchema.options], [...ConsumableKindSchema.options], [...ConsumableFormSchema.options];
54995
55014
  Object.values(DeviceType), method(object({
54996
55015
  deviceId: number().int().nonnegative(),
54997
55016
  key: string().min(1)
@@ -55463,6 +55482,7 @@ DeviceType.Dishwasher, method(object({
55463
55482
  kind: "mutation",
55464
55483
  auth: "protected"
55465
55484
  }), method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" });
55485
+ DeviceType.Camera;
55466
55486
  object({
55467
55487
  /** Ms epoch of the last press. null = never observed since this provider started. */
55468
55488
  lastPressedAt: number().nullable(),
@@ -57255,6 +57275,7 @@ authKey: string().optional() }), object({
57255
57275
  /** Human-readable error when `ok: false`. */
57256
57276
  error: string().optional()
57257
57277
  }), { kind: "mutation" });
57278
+ DeviceType.Camera;
57258
57279
  object({
57259
57280
  detected: boolean(),
57260
57281
  /** Ms epoch of the last detected-true observation. Null if never detected. */
@@ -59318,6 +59339,24 @@ DeviceType.Camera, method(object({ deviceId: number() }), PtzAutotrackStatusSche
59318
59339
  deviceId: number(),
59319
59340
  status: PtzAutotrackStatusSchema
59320
59341
  });
59342
+ var RunningStateSourceSchema = _enum(["native", "assigned"]);
59343
+ object({
59344
+ /** null = unknown — never coerced to false (D393). */
59345
+ running: boolean().nullable(),
59346
+ /** Epoch ms the current boolean began; null while `running` is null. */
59347
+ since: number().nullable(),
59348
+ source: RunningStateSourceSchema,
59349
+ phase: string().nullable(),
59350
+ /** null until a reading has been published (D393). */
59351
+ lastFetchedAt: number().nullable()
59352
+ });
59353
+ object({
59354
+ deviceId: number(),
59355
+ since: number().nullable(),
59356
+ phase: string().nullable()
59357
+ });
59358
+ Object.values(DeviceType);
59359
+ DeviceType.Dishwasher, DeviceType.Vacuum, DeviceType.LawnMower, DeviceType.MediaPlayer, DeviceType.WaterHeater, DeviceType.Humidifier, DeviceType.Fan, DeviceType.Climate, DeviceType.Thermostat, DeviceType.PetFeeder;
59321
59360
  DeviceType.Camera, DeviceType.Sensor, DeviceType.Switch, method(object({ deviceId: number().int().nonnegative() }), object({ success: literal(true) }), {
59322
59361
  kind: "mutation",
59323
59362
  auth: "admin"
@@ -70710,6 +70749,13 @@ Object.freeze({
70710
70749
  access: "create",
70711
70750
  role: "admin"
70712
70751
  },
70752
+ "runningState.getStatus": {
70753
+ capName: "running-state",
70754
+ capScope: "device",
70755
+ addonId: null,
70756
+ access: "view",
70757
+ role: "viewer"
70758
+ },
70713
70759
  "sceneMonitor.captureReference": {
70714
70760
  capName: "scene-monitor",
70715
70761
  capScope: "device",
@@ -75424,6 +75470,32 @@ var APPLIANCE_CAP_VOCABULARY = {
75424
75470
  }],
75425
75471
  events: { onSent: { notOperatorFacing: "a delivery receipt of a send this system made — not a fact about the world" } }
75426
75472
  },
75473
+ "running-state": {
75474
+ scope: "device",
75475
+ noun: t("Running", "In funzione"),
75476
+ state: [{
75477
+ kind: "boolean",
75478
+ field: "running",
75479
+ label: t("Running", "In funzione"),
75480
+ whenTrue: t("When {device} starts", "Quando {device} inizia"),
75481
+ whenFalse: t("When {device} finishes", "Quando {device} finisce"),
75482
+ icon: "play"
75483
+ }],
75484
+ events: {
75485
+ onStarted: {
75486
+ category: EventCategory.RunningStarted,
75487
+ label: t("Started running", "Ha iniziato a funzionare"),
75488
+ phrase: t("When {device} starts running", "Quando {device} inizia a funzionare"),
75489
+ icon: "play"
75490
+ },
75491
+ onFinished: {
75492
+ category: EventCategory.RunningFinished,
75493
+ label: t("Finished", "Ha finito"),
75494
+ phrase: t("When {device} finishes", "Quando {device} finisce"),
75495
+ icon: "square"
75496
+ }
75497
+ }
75498
+ },
75427
75499
  update: {
75428
75500
  scope: "device",
75429
75501
  noun: t("Firmware update", "Aggiornamento firmware"),
@@ -78964,6 +79036,11 @@ Object.freeze({
78964
79036
  form: "single",
78965
79037
  optional: true
78966
79038
  }],
79039
+ "runningState.getStatus": [{
79040
+ name: "deviceId",
79041
+ form: "single",
79042
+ optional: false
79043
+ }],
78967
79044
  "sceneMonitor.captureReference": [{
78968
79045
  name: "deviceId",
78969
79046
  form: "single",
@@ -79462,6 +79539,96 @@ Object.freeze({
79462
79539
  "smtp-provider": "email"
79463
79540
  });
79464
79541
  DeviceType.Camera;
79542
+ 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;
79543
+ /**
79544
+ * A saved Customize assignment (D936). The schema is the type: callers use
79545
+ * `z.infer`, they do not restate the shape.
79546
+ */
79547
+ var OverrideSourceSchema = object({
79548
+ addonId: string().min(1),
79549
+ stableId: string().min(1),
79550
+ cap: string().min(1),
79551
+ fieldPath: string().min(1)
79552
+ });
79553
+ var CustomizeTransformDraftSchema = discriminatedUnion("kind", [
79554
+ object({ kind: literal("identity") }),
79555
+ object({ kind: literal("invert") }),
79556
+ object({
79557
+ kind: literal("threshold"),
79558
+ comparison: _enum(["gte", "lte"]),
79559
+ threshold: number(),
79560
+ startDwellMs: number().nonnegative(),
79561
+ stopDwellMs: number().nonnegative()
79562
+ }),
79563
+ object({
79564
+ kind: literal("linear"),
79565
+ scale: number(),
79566
+ offset: number(),
79567
+ clampMin: number().optional(),
79568
+ clampMax: number().optional()
79569
+ }),
79570
+ object({
79571
+ kind: literal("enum-map"),
79572
+ mapping: record(string(), string().nullable())
79573
+ }),
79574
+ object({ kind: literal("number") })
79575
+ ]);
79576
+ var ScalarOverrideDraftSchema = object({
79577
+ kind: literal("scalar"),
79578
+ cap: string().min(1),
79579
+ targetId: string().min(1),
79580
+ source: OverrideSourceSchema,
79581
+ transform: CustomizeTransformDraftSchema
79582
+ });
79583
+ var KeyedArrayOverrideDraftSchema = object({
79584
+ kind: literal("keyedArray"),
79585
+ cap: string().min(1),
79586
+ targetId: string().min(1),
79587
+ key: string().min(1),
79588
+ label: string().min(1),
79589
+ fieldPath: string().min(1),
79590
+ source: OverrideSourceSchema,
79591
+ transform: CustomizeTransformDraftSchema
79592
+ });
79593
+ var PulseOverrideDraftSchema = object({
79594
+ kind: literal("pulse"),
79595
+ cap: string().min(1),
79596
+ targetId: string().min(1),
79597
+ enabled: boolean(),
79598
+ debounceMs: number().nonnegative(),
79599
+ sources: array(OverrideSourceSchema).min(1)
79600
+ });
79601
+ var SpanSourceDraftSchema = OverrideSourceSchema.extend({ mode: _enum([
79602
+ "in-addition",
79603
+ "confirm",
79604
+ "replace"
79605
+ ]).optional() });
79606
+ discriminatedUnion("kind", [
79607
+ ScalarOverrideDraftSchema,
79608
+ KeyedArrayOverrideDraftSchema,
79609
+ PulseOverrideDraftSchema,
79610
+ object({
79611
+ kind: literal("span"),
79612
+ cap: string().min(1),
79613
+ targetId: string().min(1),
79614
+ timeoutMs: number().nonnegative(),
79615
+ cooldownMs: number().nonnegative().optional(),
79616
+ sources: array(SpanSourceDraftSchema)
79617
+ })
79618
+ ]);
79619
+ object({
79620
+ targetId: string().min(1),
79621
+ configured: boolean(),
79622
+ source: _enum(["native", "assigned"]),
79623
+ state: _enum([
79624
+ "active",
79625
+ "stale",
79626
+ "released",
79627
+ "unavailable"
79628
+ ]),
79629
+ reason: string().nullable()
79630
+ });
79631
+ String.raw`rose\(active(\d+), changed(\d+), (\d+(?:\.\d+)?)\)`;
79465
79632
  var G711_SCALE_CORRECTION_DB = {
79466
79633
  PCMU: 20 * Math.log10(4),
79467
79634
  PCMA: 20 * Math.log10(8)
@@ -79514,40 +79681,7 @@ var NC_AUDIO_DEFAULTS = {
79514
79681
  samplingSeconds: 10
79515
79682
  };
79516
79683
  new Set(["devices", "classes"]);
79517
- /**
79518
- * WHICH narrowing filter speaks about WHICH system-event kind — one predicate,
79519
- * consumed by the rule ENGINE and by every rule EDITOR.
79520
- *
79521
- * ── The failure this file exists for ───────────────────────────────────────
79522
- * `NcSystemEventConditionSchema` carries four optional narrowing lists
79523
- * (`deviceIds`, `deviceTypes`, `nodeIds`, `packageNames`) beside a required
79524
- * `kinds` gate. They are not four filters over one vocabulary: each belongs to
79525
- * a FAMILY of kinds and is meaningless outside it. A node going away has no
79526
- * device type; a completed export has no package; `stream-offline` deliberately
79527
- * carries no device type at all (a stream belongs to a camera by construction).
79528
- *
79529
- * The engine applied all four to every kind, so a filter from one family failed
79530
- * a kind from another family CLOSED. The operator's live rule "Eventi di
79531
- * sistema" selected eleven kinds and set `deviceTypes: ['camera']` — the only
79532
- * way to say "only my cameras" about the two liveness kinds — and NINE of the
79533
- * eleven silently stopped being deliverable. Four days of history contained
79534
- * `device-online` and `device-offline` and nothing else, across a window in
79535
- * which agents were restarted and addons were updated.
79536
- *
79537
- * Both editors already computed this scoping, to decide which filter boxes to
79538
- * render; the cap's own docblock already promised it ("Narrow a `device-*` kind
79539
- * to these device TYPES"). Only the engine disagreed, and it disagreed in the
79540
- * destructive direction. So the rule is stated ONCE, here, and the engine and
79541
- * the editors are readers of it rather than three independent authors.
79542
- *
79543
- * ── The direction ─────────────────────────────────────────────────────────
79544
- * Out of family ⇒ the filter is IGNORED, never fail-closed. An editor that
79545
- * hides a box has already told the operator this filter does not speak about
79546
- * these kinds, so honouring it as an exclusion contradicts the only
79547
- * explanation the operator was ever given. Inside its family the filter still
79548
- * narrows, and still fails CLOSED on a subject that cannot produce the identity
79549
- * it tests (a device the mirror cannot name is not evidence of a camera).
79550
- */
79684
+ new Set(NC_LEGACY_SYSTEM_EVENT_KINDS);
79551
79685
  /**
79552
79686
  * Every filter, for the callers that must cover all of them (guards, tests).
79553
79687
  *
@@ -79573,9 +79707,6 @@ new Map(Object.entries({
79573
79707
  "device-battery-normal": "device-events",
79574
79708
  "device-consumable-low": "device-events",
79575
79709
  "device-consumable-normal": "device-events",
79576
- "device-tank-low": "device-events",
79577
- "device-tank-full": "device-events",
79578
- "device-tank-normal": "device-events",
79579
79710
  "stream-online": "device-events",
79580
79711
  "stream-offline": "device-events",
79581
79712
  "detection-blind": "device-events",
@@ -79652,16 +79783,6 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79652
79783
  label: "Consumables",
79653
79784
  kinds: ["device-consumable-low", "device-consumable-normal"]
79654
79785
  },
79655
- {
79656
- id: "tanks",
79657
- family: "device-events",
79658
- label: "Tanks",
79659
- kinds: [
79660
- "device-tank-low",
79661
- "device-tank-full",
79662
- "device-tank-normal"
79663
- ]
79664
- },
79665
79786
  {
79666
79787
  id: "detection-blind",
79667
79788
  family: "device-events",
@@ -79819,11 +79940,6 @@ var RULE_BODY_ONLY = ["body"];
79819
79940
  var RULE_TEXT = ["title", "body"];
79820
79941
  var BATTERY = ["device-battery-low", "device-battery-normal"];
79821
79942
  var CONSUMABLE = ["device-consumable-low", "device-consumable-normal"];
79822
- var TANK = [
79823
- "device-tank-low",
79824
- "device-tank-full",
79825
- "device-tank-normal"
79826
- ];
79827
79943
  var ALERT_EPISODE = [
79828
79944
  "alert-critical",
79829
79945
  "alert-error",
@@ -79855,7 +79971,6 @@ var DEVICE_EVENTS = [
79855
79971
  "device-enabled",
79856
79972
  ...BATTERY,
79857
79973
  ...CONSUMABLE,
79858
- ...TANK,
79859
79974
  "stream-online",
79860
79975
  "stream-offline",
79861
79976
  "detection-blind",
@@ -79901,12 +80016,6 @@ var STATE_SUMMARY_SECTION_VARS = [
79901
80016
  example: "Robot — filter 10 %",
79902
80017
  kinds: CONSUMABLE
79903
80018
  },
79904
- {
79905
- name: "summaryTanks",
79906
- label: "Summary: tanks",
79907
- example: "Robot — clean water low",
79908
- kinds: TANK
79909
- },
79910
80019
  {
79911
80020
  name: "summaryDetection",
79912
80021
  label: "Summary: cameras detecting nothing",
@@ -80022,8 +80131,7 @@ var STATE_SUMMARY_VARS = [
80022
80131
  ([...RULE_TEXT], [...COMBINED_ALARM]),
80023
80132
  ([...RULE_TEXT], [...DEVICE_EVENTS]),
80024
80133
  ([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
80025
- ([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
80026
- ([...RULE_TEXT], [...TANK]),
80134
+ ([...RULE_TEXT], [...CONSUMABLE]),
80027
80135
  [...RULE_TEXT],
80028
80136
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
80029
80137
  ([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
@@ -80127,15 +80235,6 @@ new Map([
80127
80235
  snapshotLabel: "Consumables low now",
80128
80236
  snapshotSection: "consumables"
80129
80237
  },
80130
- {
80131
- id: "tanks",
80132
- family: "device-events",
80133
- label: "Tanks (low or full / back to normal)",
80134
- bad: ["device-tank-low", "device-tank-full"],
80135
- recovery: ["device-tank-normal"],
80136
- snapshotLabel: "Tanks low or full now",
80137
- snapshotSection: "tanks"
80138
- },
80139
80238
  {
80140
80239
  id: "motion-noise",
80141
80240
  family: "device-events",