@camstack/addon-pipeline 1.2.39 → 1.2.40

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 (29) hide show
  1. package/dist/audio-analyzer/index.js +1 -1
  2. package/dist/audio-analyzer/index.mjs +1 -1
  3. package/dist/detection-pipeline/index.js +2 -2
  4. package/dist/detection-pipeline/index.mjs +2 -2
  5. package/dist/{dist-COgGdFMv.mjs → dist-C6p8jcji.mjs} +236 -6
  6. package/dist/{dist-BtAvtroH.js → dist-DcMBfoCg.js} +236 -6
  7. package/dist/{event-loop-stall-monitor-naFYvcOO.mjs → event-loop-stall-monitor-BHqCesa1.mjs} +1 -1
  8. package/dist/{event-loop-stall-monitor-shfwi1_b.js → event-loop-stall-monitor-oL9xanvX.js} +1 -1
  9. package/dist/motion-wasm/index.js +1 -1
  10. package/dist/motion-wasm/index.mjs +1 -1
  11. package/dist/pipeline-runner/index.js +2 -2
  12. package/dist/pipeline-runner/index.mjs +2 -2
  13. package/dist/recorder/index.js +1 -1
  14. package/dist/recorder/index.mjs +1 -1
  15. package/dist/stream-broker/_stub.js +2 -2
  16. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CjrKd4xX.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Bt1YkfUW.mjs} +2 -2
  17. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DJnh97n9.mjs +26 -0
  18. package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-83qNzMSL.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BsNhZnfZ.mjs} +1 -1
  19. package/dist/stream-broker/{hostInit-BFH17kSk.mjs → hostInit-Dyj8Vaql.mjs} +2 -2
  20. package/dist/stream-broker/index.js +7 -4
  21. package/dist/stream-broker/index.mjs +7 -4
  22. package/dist/stream-broker/remoteEntry.js +1 -1
  23. package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-yeSHfpUy.js → MaskShapeCanvas-DI4BY7W2-m1RaK_7F.js} +1 -1
  24. package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-Df4WxM6N.js → MotionZonesSettings-NcxxQN8r-C00UIgFo.js} +1 -1
  25. package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-COHSiTGq.js → PrivacyMaskSettings-APgPLF7p-DWYllToj.js} +1 -1
  26. package/embed-dist/assets/{index-Ct9M2v5n.js → index-BaUgbxWl.js} +13 -13
  27. package/embed-dist/index.html +1 -1
  28. package/package.json +1 -1
  29. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B59GNAJq.mjs +0 -26
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BtAvtroH.js");
6
+ const require_dist = require("../dist-DcMBfoCg.js");
7
7
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
8
8
  const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-fsdDExML.js");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { B as errMsg, K as hydrateSchema, O as mapAudioLabelToMacro, V as BaseAddon, _ as audioAnalysisCapability, d as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, v as audioAnalyzerCapability } from "../dist-COgGdFMv.mjs";
2
+ import { B as errMsg, K as hydrateSchema, O as mapAudioLabelToMacro, V as BaseAddon, _ as audioAnalysisCapability, d as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, v as audioAnalyzerCapability } from "../dist-C6p8jcji.mjs";
3
3
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
4
4
  import { i as downloadFile } from "../model-download-service-Cp9f4dk6-CwUb5v3Y.mjs";
5
5
  import * as fs from "node:fs";
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-BtAvtroH.js");
7
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-shfwi1_b.js");
6
+ const require_dist = require("../dist-DcMBfoCg.js");
7
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-oL9xanvX.js");
8
8
  const require_lazy_sharp = require("../lazy-sharp-CcYuXtsa.js");
9
9
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
10
10
  const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-fsdDExML.js");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { B as errMsg, E as evaluateZoneRules, F as runtimeDevices$1, G as createEvent, K as hydrateSchema, R as supportedRuntimes$1, T as enumerateInferenceDevices, V as BaseAddon, X as nodePin, Z as parseJsonUnknown, ct as object, dt as union, et as sleep, ft as EventCategory, h as YAMNET_TO_MACRO, j as pipelineExecutorCapability, nt as array, s as DEVICE_BACKEND_TO_FORMAT, t as APPLE_SA_TO_MACRO, ut as string, w as detectionPipelineCapability, x as defaultDeviceFor$1 } from "../dist-COgGdFMv.mjs";
3
- import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-naFYvcOO.mjs";
2
+ import { B as errMsg, E as evaluateZoneRules, F as runtimeDevices$1, G as createEvent, K as hydrateSchema, R as supportedRuntimes$1, T as enumerateInferenceDevices, V as BaseAddon, X as nodePin, Z as parseJsonUnknown, ct as object, dt as union, et as sleep, ft as EventCategory, h as YAMNET_TO_MACRO, j as pipelineExecutorCapability, nt as array, s as DEVICE_BACKEND_TO_FORMAT, t as APPLE_SA_TO_MACRO, ut as string, w as detectionPipelineCapability, x as defaultDeviceFor$1 } from "../dist-C6p8jcji.mjs";
3
+ import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-BHqCesa1.mjs";
4
4
  import { t as getSharp } from "../lazy-sharp-B-mb8uWx.mjs";
5
5
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
6
6
  import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../model-download-service-Cp9f4dk6-CwUb5v3Y.mjs";
@@ -1,4 +1,4 @@
1
- //#region ../types/dist/event-category-Bz24uP1U.mjs
1
+ //#region ../types/dist/event-category-41fKf-q9.mjs
2
2
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
3
3
  EventCategory["SystemBoot"] = "system.boot";
4
4
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -58,6 +58,26 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
58
58
  */
59
59
  EventCategory["AddonRetryScheduled"] = "addon.retry-scheduled";
60
60
  /**
61
+ * A liveness invariant of this node is false — it has no devices, every
62
+ * camera is offline, or a camera that was recording has stopped producing
63
+ * segments. Emitted by the `liveness-monitor` builtin, once per fault (the
64
+ * `findingId` is stable across ticks), only after its boot grace period.
65
+ * AlertCenter raises a persistent operator-visible alert.
66
+ *
67
+ * It exists because on 2026-08-03 the hub ran four hours with zero devices
68
+ * and zero recordings while every surface stayed quiet.
69
+ *
70
+ * Payload: `{ findingId, severity, title, message, deviceId? }`.
71
+ */
72
+ EventCategory["SystemLivenessFailed"] = "system.liveness-failed";
73
+ /**
74
+ * A previously reported liveness fault is true again. AlertCenter dismisses
75
+ * the matching `SystemLivenessFailed` alert.
76
+ *
77
+ * Payload: `{ findingId }`.
78
+ */
79
+ EventCategory["SystemLivenessRecovered"] = "system.liveness-recovered";
80
+ /**
61
81
  * Monitor is attempting to reload a failed addon NOW. UI uses this
62
82
  * to show a spinner during the retry attempt. Same transient nature
63
83
  * as AddonRetryScheduled.
@@ -9847,6 +9867,14 @@ var NcMediaPolicySchema = object({
9847
9867
  clipPreRollSec: number().int().min(0).max(30).optional(),
9848
9868
  clipPostRollSec: number().int().min(0).max(30).optional(),
9849
9869
  /**
9870
+ * Playback rate of the attached gif / clip. Absent = 2x.
9871
+ *
9872
+ * A notification clip is GLANCED at on a lock screen, not watched: at real
9873
+ * time an eight-second passage is eight seconds of the recipient's attention
9874
+ * and twice the bytes. 1 is real time for the operator who wants it.
9875
+ */
9876
+ clipSpeed: number().min(1).max(8).optional(),
9877
+ /**
9850
9878
  * Which stream profile the footage is cut from. Absent = the CHEAPEST
9851
9879
  * assigned profile: a notification is watched on a phone, so the 4K
9852
9880
  * rendition would burn CPU to produce a file the client downscales anyway.
@@ -9918,7 +9946,21 @@ var NcRuleInputSchema = object({
9918
9946
  * behaviour, visible to all, read-only in the viewer). Present = personal
9919
9947
  * rule owned by this userId. Server-stamped; never trusted from a client.
9920
9948
  */
9921
- ownerUserId: string().optional()
9949
+ ownerUserId: string().optional(),
9950
+ /**
9951
+ * May a non-admin snooze this rule for EVERYONE, not just themselves?
9952
+ *
9953
+ * A snooze is personal by default — it silences the person who set it. This
9954
+ * opts THIS rule into the "the gardener is here all afternoon" case, where
9955
+ * silencing the camera for the whole household is legitimate. It silences
9956
+ * other people, so it is off unless a rule deliberately allows it.
9957
+ *
9958
+ * `.optional()`, deliberately NOT `.default()`: a Zod default does not run on
9959
+ * the addon cap path (three production failures in one day), so absent is
9960
+ * read as `false` by {@link canSetGlobal} in the engine. Admins are not bound
9961
+ * by this flag — see the scope rules on that function.
9962
+ */
9963
+ snoozeAllowGlobal: boolean().optional()
9922
9964
  });
9923
9965
  /**
9924
9966
  * Partial patch for `updateRule` — any subset of the input fields, plus the
@@ -10003,7 +10045,28 @@ var NcConditionDescriptorSchema = object({
10003
10045
  /** Which delivery kinds the condition applies to. */
10004
10046
  appliesTo: array(NcDeliverySchema),
10005
10047
  phase: string(),
10006
- description: string().optional()
10048
+ description: string().optional(),
10049
+ /**
10050
+ * The CHOICES for a single-choice widget (`sourceSelect`, `crossingSelect`,
10051
+ * `packagePhase`, …), served with the descriptor.
10052
+ *
10053
+ * Before this the descriptor said which widget to render and not what to put
10054
+ * in it, so every option list lived in three places: this file's enums, the
10055
+ * admin's `NC_*_OPTIONS` and the viewer's `NC_*_VALUES`. That triple mirror
10056
+ * is the drift that emptied the viewer's rule editor on 2026-08-04 — the app
10057
+ * mirrors the cap by hand, so it is only ever as current as its last build.
10058
+ *
10059
+ * With the options on the wire, a condition of an EXISTING `valueType` costs
10060
+ * zero client changes. Clients keep a local fallback for an older hub that
10061
+ * does not send them; absent here is "use your own list", not "no choices".
10062
+ */
10063
+ options: array(object({
10064
+ /** Written to the rule verbatim. `''` means the ABSENT state. */
10065
+ value: string(),
10066
+ label: string(),
10067
+ /** What THIS choice matches — shown one at a time, under the control. */
10068
+ hint: string().optional()
10069
+ })).readonly().optional()
10007
10070
  });
10008
10071
  /**
10009
10072
  * The delivery lifecycle status of a history row — a straight read of the
@@ -10088,6 +10151,74 @@ var NcHistoryFilterSchema = object({
10088
10151
  until: number().optional(),
10089
10152
  limit: number().int().min(1).max(500).default(100)
10090
10153
  });
10154
+ /**
10155
+ * What a snooze covers. Broader scopes win when several overlap, so one window
10156
+ * leaves ONE digest rather than a rule snooze and a whole-feed snooze both
10157
+ * summarising the same silence.
10158
+ */
10159
+ var NcSnoozeScopeSchema = _enum([
10160
+ "rule",
10161
+ "device",
10162
+ "all"
10163
+ ]);
10164
+ /**
10165
+ * Client-authored snooze. The server stamps `userId`, `startedAt` and
10166
+ * `expiresAt` — a DURATION is sent rather than an instant so a client with a
10167
+ * skewed clock cannot author a window that is already over, or never ends.
10168
+ */
10169
+ var NcSnoozeInputSchema = object({
10170
+ scope: NcSnoozeScopeSchema,
10171
+ /** Required when `scope: 'rule'` — a scoped snooze with no id matches
10172
+ * NOTHING rather than degrading to "everything". */
10173
+ ruleId: string().optional(),
10174
+ /** Required when `scope: 'device'`. */
10175
+ deviceId: number().int().optional(),
10176
+ durationMinutes: number().int().min(1).max(1440),
10177
+ /**
10178
+ * Silence this for EVERY recipient, not just the caller. Permission is
10179
+ * checked server-side (the rule's `snoozeAllowGlobal`, or admin for the
10180
+ * broader scopes). Absent = personal.
10181
+ */
10182
+ global: boolean().optional(),
10183
+ /**
10184
+ * Deliver a summary of what was suppressed when the window ends. Absent =
10185
+ * ON: someone silencing a nuisance camera wants it off, someone silencing a
10186
+ * SECURITY camera wants to know what they missed, and choosing "off" for
10187
+ * everybody is how a snooze becomes an outage. Resolved to a concrete
10188
+ * boolean by the server at create time — never left to a Zod default, which
10189
+ * does not run on the addon cap path.
10190
+ */
10191
+ summary: boolean().optional()
10192
+ });
10193
+ /** A persisted snooze window. */
10194
+ var NcSnoozeSchema = object({
10195
+ id: string(),
10196
+ /** Who set it. Also who it silences, unless `global`. */
10197
+ userId: string(),
10198
+ scope: NcSnoozeScopeSchema,
10199
+ ruleId: string().optional(),
10200
+ deviceId: number().int().optional(),
10201
+ startedAt: number(),
10202
+ /** Exclusive: at exactly this instant the snooze is over. Expiry is a
10203
+ * COMPARISON, not a job — no sweeper can leave the operator silenced. */
10204
+ expiresAt: number(),
10205
+ global: boolean(),
10206
+ summary: boolean(),
10207
+ /** When the end-of-window digest went out. Absent = not sent (yet, or the
10208
+ * window has not closed, or `summary` is false). */
10209
+ digestSentAt: number().optional()
10210
+ });
10211
+ object({
10212
+ snoozeId: string(),
10213
+ targetId: string(),
10214
+ ruleId: string(),
10215
+ ruleName: string(),
10216
+ deviceId: number().int(),
10217
+ /** How many notifications this snooze hid for that pair. */
10218
+ count: number().int(),
10219
+ firstAt: number(),
10220
+ lastAt: number()
10221
+ });
10091
10222
  method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), method(object({ ruleId: string() }), object({ rule: NcRuleSchema.nullable() }), { auth: "admin" }), method(object({ rule: NcRuleInputSchema }), object({ rule: NcRuleSchema }), {
10092
10223
  kind: "mutation",
10093
10224
  auth: "admin",
@@ -10117,7 +10248,13 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
10117
10248
  }), method(object({}), object({
10118
10249
  catalog: array(NcConditionDescriptorSchema),
10119
10250
  taxonomy: NcTaxonomySchema.optional()
10120
- })), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" });
10251
+ })), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
10252
+ kind: "mutation",
10253
+ caller: "required"
10254
+ }), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
10255
+ kind: "mutation",
10256
+ caller: "required"
10257
+ });
10121
10258
  /**
10122
10259
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
10123
10260
  *
@@ -10894,7 +11031,15 @@ var streamBrokerCapability = {
10894
11031
  format: _enum(["gif", "mp4"]).default("gif"),
10895
11032
  maxWidth: number().int().min(120).max(1920).default(480),
10896
11033
  /** GIF only — MP4 keeps the source cadence. */
10897
- fps: number().int().min(1).max(15).default(5)
11034
+ fps: number().int().min(1).max(15).default(5),
11035
+ /**
11036
+ * Playback rate. A notification clip is GLANCED at on a lock screen,
11037
+ * not watched, so 2x is the default: the recipient sees the whole
11038
+ * passage in half the time and the GIF is half the bytes. `1` is real
11039
+ * time. Applies to MP4 as well — the operator set a speed, not a GIF
11040
+ * speed.
11041
+ */
11042
+ speed: number().min(1).max(8).default(2)
10898
11043
  }), object({
10899
11044
  base64: string(),
10900
11045
  mime: string(),
@@ -16272,6 +16417,20 @@ var QueryFilterSchema = object({
16272
16417
  limit: number().optional(),
16273
16418
  offset: number().optional()
16274
16419
  });
16420
+ /**
16421
+ * The predicate half of a filter, for BULK MUTATIONS.
16422
+ *
16423
+ * Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
16424
+ * meaning for a statement that rewrites a set, and accepting them would invite
16425
+ * a caller to believe `limit` bounds the damage. Every field is optional here
16426
+ * only so the shape stays composable — the implementation REJECTS a filter
16427
+ * that compiles to no predicate, because that is the whole collection.
16428
+ */
16429
+ var MutationFilterSchema = object({
16430
+ where: record(string(), unknown()).optional(),
16431
+ whereIn: record(string(), array(unknown())).optional(),
16432
+ whereBetween: record(string(), tuple([unknown(), unknown()])).optional()
16433
+ });
16275
16434
  /** A single stored record: `{ id, data }`. */
16276
16435
  var SettingsRecordSchema = object({
16277
16436
  id: string(),
@@ -16297,7 +16456,18 @@ var CollectionColumnSchema = object({
16297
16456
  ]),
16298
16457
  primaryKey: boolean().optional(),
16299
16458
  notNull: boolean().optional(),
16300
- unique: boolean().optional()
16459
+ unique: boolean().optional(),
16460
+ /**
16461
+ * Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
16462
+ * columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
16463
+ * collection surface simply cannot express their existing tables — which is
16464
+ * why they were still on the uncapped `table*` API.
16465
+ */
16466
+ defaultValue: union([
16467
+ string(),
16468
+ number(),
16469
+ boolean()
16470
+ ]).optional()
16301
16471
  });
16302
16472
  var CollectionIndexSchema = object({
16303
16473
  name: string(),
@@ -16331,6 +16501,15 @@ method(object({
16331
16501
  collection: string(),
16332
16502
  key: string()
16333
16503
  }), _void(), { kind: "mutation" }), method(object({
16504
+ namespace: string().optional(),
16505
+ collection: string(),
16506
+ filter: MutationFilterSchema
16507
+ }), object({ deleted: number().int() }), { kind: "mutation" }), method(object({
16508
+ namespace: string().optional(),
16509
+ collection: string(),
16510
+ filter: MutationFilterSchema,
16511
+ data: record(string(), unknown())
16512
+ }), object({ updated: number().int() }), { kind: "mutation" }), method(object({
16334
16513
  namespace: string().optional(),
16335
16514
  collection: string(),
16336
16515
  filter: QueryFilterSchema.optional()
@@ -16397,6 +16576,15 @@ method(_void(), EngineInfoSchema), method(object({
16397
16576
  collection: string(),
16398
16577
  key: string()
16399
16578
  }), _void(), { kind: "mutation" }), method(object({
16579
+ namespace: string().optional(),
16580
+ collection: string(),
16581
+ filter: MutationFilterSchema
16582
+ }), object({ deleted: number().int() }), { kind: "mutation" }), method(object({
16583
+ namespace: string().optional(),
16584
+ collection: string(),
16585
+ filter: MutationFilterSchema,
16586
+ data: record(string(), unknown())
16587
+ }), object({ updated: number().int() }), { kind: "mutation" }), method(object({
16400
16588
  namespace: string().optional(),
16401
16589
  collection: string(),
16402
16590
  filter: QueryFilterSchema.optional()
@@ -23887,6 +24075,12 @@ Object.freeze({
23887
24075
  addonId: null,
23888
24076
  access: "delete"
23889
24077
  },
24078
+ "dataStoreProvider.deleteWhere": {
24079
+ capName: "data-store-provider",
24080
+ capScope: "system",
24081
+ addonId: null,
24082
+ access: "delete"
24083
+ },
23890
24084
  "dataStoreProvider.get": {
23891
24085
  capName: "data-store-provider",
23892
24086
  capScope: "system",
@@ -23935,6 +24129,12 @@ Object.freeze({
23935
24129
  addonId: null,
23936
24130
  access: "create"
23937
24131
  },
24132
+ "dataStoreProvider.updateWhere": {
24133
+ capName: "data-store-provider",
24134
+ capScope: "system",
24135
+ addonId: null,
24136
+ access: "create"
24137
+ },
23938
24138
  "dayNight.getOptions": {
23939
24139
  capName: "day-night",
23940
24140
  capScope: "device",
@@ -25729,12 +25929,24 @@ Object.freeze({
25729
25929
  addonId: null,
25730
25930
  access: "create"
25731
25931
  },
25932
+ "notificationRules.cancelSnooze": {
25933
+ capName: "notification-rules",
25934
+ capScope: "system",
25935
+ addonId: null,
25936
+ access: "create"
25937
+ },
25732
25938
  "notificationRules.createRule": {
25733
25939
  capName: "notification-rules",
25734
25940
  capScope: "system",
25735
25941
  addonId: null,
25736
25942
  access: "create"
25737
25943
  },
25944
+ "notificationRules.createSnooze": {
25945
+ capName: "notification-rules",
25946
+ capScope: "system",
25947
+ addonId: null,
25948
+ access: "create"
25949
+ },
25738
25950
  "notificationRules.deleteRule": {
25739
25951
  capName: "notification-rules",
25740
25952
  capScope: "system",
@@ -25765,6 +25977,12 @@ Object.freeze({
25765
25977
  addonId: null,
25766
25978
  access: "view"
25767
25979
  },
25980
+ "notificationRules.listSnoozes": {
25981
+ capName: "notification-rules",
25982
+ capScope: "system",
25983
+ addonId: null,
25984
+ access: "view"
25985
+ },
25768
25986
  "notificationRules.setRuleEnabled": {
25769
25987
  capName: "notification-rules",
25770
25988
  capScope: "system",
@@ -27013,6 +27231,12 @@ Object.freeze({
27013
27231
  addonId: null,
27014
27232
  access: "delete"
27015
27233
  },
27234
+ "settingsStore.deleteWhere": {
27235
+ capName: "settings-store",
27236
+ capScope: "system",
27237
+ addonId: null,
27238
+ access: "delete"
27239
+ },
27016
27240
  "settingsStore.get": {
27017
27241
  capName: "settings-store",
27018
27242
  capScope: "system",
@@ -27055,6 +27279,12 @@ Object.freeze({
27055
27279
  addonId: null,
27056
27280
  access: "create"
27057
27281
  },
27282
+ "settingsStore.updateWhere": {
27283
+ capName: "settings-store",
27284
+ capScope: "system",
27285
+ addonId: null,
27286
+ access: "create"
27287
+ },
27058
27288
  "smtpProvider.getStatus": {
27059
27289
  capName: "smtp-provider",
27060
27290
  capScope: "system",