@camstack/addon-admin-ui 1.2.21 → 1.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AddLocationWizard-D_PB3-bX.js → AddLocationWizard-Dq7esXUF.js} +1 -1
- package/dist/assets/{AddonCollectionPage-dSmADNMP.js → AddonCollectionPage-zISnCSia.js} +1 -1
- package/dist/assets/{Addons-DMgC9u5C.js → Addons-CgUw615i.js} +1 -1
- package/dist/assets/{AdminTabs-BKzZGgJh.js → AdminTabs-Dm5dIblA.js} +1 -1
- package/dist/assets/{AiProfiles-B0jDK_vA.js → AiProfiles-n9YYWZm0.js} +1 -1
- package/dist/assets/{BrokerForm-CNbozrHN.js → BrokerForm-D3HfLXNS.js} +1 -1
- package/dist/assets/{Capabilities-B2gS0Rwu.js → Capabilities-DM9m0y2O.js} +1 -1
- package/dist/assets/{CapabilityBadges-o7CZ6OPx.js → CapabilityBadges-YLTOm6PM.js} +1 -1
- package/dist/assets/{Cluster-CaAqX44E.js → Cluster-C2xbxwVH.js} +1 -1
- package/dist/assets/{ClusterRecordingTab-CoghG4H4.js → ClusterRecordingTab-Dm3Biopz.js} +1 -1
- package/dist/assets/{Dashboard-CORp5RgM.js → Dashboard-D-wnzhTu.js} +1 -1
- package/dist/assets/{Data-CFQyq6_m.js → Data-CIDrzfAW.js} +1 -1
- package/dist/assets/{DetectionIntelligence-TFDDlrdH.js → DetectionIntelligence-DqbLakFE.js} +1 -1
- package/dist/assets/{DeviceAggregateSection-Bzn-6IHu.js → DeviceAggregateSection-Bu8VWBW5.js} +1 -1
- package/dist/assets/{DeviceDetail-1M0aTbT0.js → DeviceDetail-Br2-0p9A.js} +1 -1
- package/dist/assets/{Devices-BBfN82Zj.js → Devices-DI07Ba43.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-Dg1q2TgQ.js → EmbedPlayerPage-CGwxGZ8a.js} +1 -1
- package/dist/assets/{Events-CxwUSAha.js → Events-oKrdnmzL.js} +1 -1
- package/dist/assets/{FormBuilder-DzsVc3t_.js → FormBuilder-WQJMcWst.js} +1 -1
- package/dist/assets/{Identity-CY5dHQRV.js → Identity-jSwJ6Iv7.js} +1 -1
- package/dist/assets/{IntegrationDetail-C8G40UJW.js → IntegrationDetail-B-LhIl4a.js} +1 -1
- package/dist/assets/{Integrations-CcMeLmxP.js → Integrations-BXraNBU9.js} +1 -1
- package/dist/assets/{Integrations-BDmrI5RY.js → Integrations-XXz_SSij.js} +1 -1
- package/dist/assets/{Logs-UsUTF6t8.js → Logs-DwZnQjRw.js} +1 -1
- package/dist/assets/{MotionZonesSettings-CB7gr8F6.js → MotionZonesSettings-DfEKV9Q_.js} +1 -1
- package/dist/assets/{MyAccess-l9miezxA.js → MyAccess-Ds9GtLyA.js} +1 -1
- package/dist/assets/{Network-DXUFkR9R.js → Network-Bxr6yA2G.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-BmYlaSwd.js → NodeAddonsSettingsPanel-DLk9BjoX.js} +1 -1
- package/dist/assets/{NodeInferenceDevices-CYZ5CYbi.js → NodeInferenceDevices-D8UFJ7N-.js} +1 -1
- package/dist/assets/Notifications-BGACh7EA.js +1 -0
- package/dist/assets/{Pipeline-5s0vvgIe.js → Pipeline-BJMxtRsG.js} +1 -1
- package/dist/assets/{Plates-CPGPlu2R.js → Plates-BYT1Sys7.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-CaSwDDde.js → PrivacyMaskSettings-DHEZLINm.js} +1 -1
- package/dist/assets/{ProviderIcon-DMpgPBRn.js → ProviderIcon-qFD5vx-c.js} +1 -1
- package/dist/assets/{Recordings-D34q9wcX.js → Recordings-EdS7D4Nu.js} +1 -1
- package/dist/assets/{ScanNetworkModal-C6c0dfjo.js → ScanNetworkModal-C2nxQYpR.js} +1 -1
- package/dist/assets/{Settings-CDGhqzHq.js → Settings-DTvThy5s.js} +1 -1
- package/dist/assets/{Showroom-CQ38FQB-.js → Showroom-CoCz7BCl.js} +1 -1
- package/dist/assets/{Terminal-CmIa6Oya.js → Terminal-CdHc7JGW.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DbFIfmYk.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Qwbl6leh.js} +1 -1
- package/dist/assets/{build-cluster-graph-D_ECGcuu.js → build-cluster-graph-DCa5BVOm.js} +1 -1
- package/dist/assets/circle-check-big-BrI-BnLX.js +1 -0
- package/dist/assets/clock-BaUOxVoD.js +1 -0
- package/dist/assets/{copy-VNmCXPyR.js → copy-DT1LpWnW.js} +1 -1
- package/dist/assets/{debounced-invalidate-pIqbOQJw.js → debounced-invalidate-COlXMKcK.js} +1 -1
- package/dist/assets/dist-CavlSg96.js +7 -0
- package/dist/assets/{dist-CRhdFszz.js → dist-pwV-cUFg.js} +1 -1
- package/dist/assets/{download-C0kOZZ-t.js → download-C5pWNY_z.js} +1 -1
- package/dist/assets/{face-bbox-DAp7haB0.js → face-bbox-CQezXcbm.js} +1 -1
- package/dist/assets/{hostInit-CP8mlANm.js → hostInit-17HFqvQi.js} +1 -1
- package/dist/assets/{index-Oa9WZQrG.js → index-CpIk9zzP.js} +3 -3
- package/dist/assets/index-DvpMTqDC.css +2 -0
- package/dist/assets/{key-round-DBmUUaAQ.js → key-round-BvJWrH6G.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-3d968750.js → mf-entry-bootstrap-0-11f10035.js} +2 -2
- package/dist/assets/{pencil-DhNh3tJt.js → pencil-B6M2nE2x.js} +1 -1
- package/dist/assets/player-overlays-Cip1zMzf.js +1 -0
- package/dist/assets/plus-CJX-7qpV.js +1 -0
- package/dist/assets/{radio-DO2Xi8xU.js → radio-7rKfflkG.js} +1 -1
- package/dist/assets/{refresh-cw-BkT1Lcrs.js → refresh-cw-meywvLr6.js} +1 -1
- package/dist/assets/remoteEntry-CpGnB6JJ.js +1 -0
- package/dist/assets/{rotate-ccw-BDk431kn.js → rotate-ccw-DG0IoVOG.js} +1 -1
- package/dist/assets/rotate-cw-BaaybXts.js +1 -0
- package/dist/assets/search-DqwBNJOd.js +1 -0
- package/dist/assets/{send-DIPTfOM-.js → send-BYEhx4h6.js} +1 -1
- package/dist/assets/{server-57sVw14w.js → server-Bmc0CVZj.js} +1 -1
- package/dist/assets/square-BphxIfpl.js +1 -0
- package/dist/assets/{square-check-big-BM6N6ia-.js → square-check-big-89xbxgw8.js} +1 -1
- package/dist/assets/src-Bz1FM7Iz.js +67 -0
- package/dist/assets/src-CMBOTyxw.js +7 -0
- package/dist/assets/{upload-MDtwKjzv.js → upload-CzKEUpu7.js} +1 -1
- package/dist/assets/{useEventInvalidation-D1XjovJZ.js → useEventInvalidation-Bwgjtt0n.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DYBYsHJM.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-OzBzXogt.js} +2 -2
- package/dist/assets/{wifi-B7bqZV0a.js → wifi-SBwRQpGK.js} +1 -1
- package/dist/assets/{zap-CWXvqdT_.js → zap-CG1_c3Ri.js} +1 -1
- package/dist/index.html +6 -6
- package/dist/server/addon.js +495 -113
- package/package.json +2 -2
- package/dist/assets/Notifications-Qg7i9wiX.js +0 -1
- package/dist/assets/circle-check-big-D8RfPowm.js +0 -1
- package/dist/assets/clock-uqs9ftmV.js +0 -1
- package/dist/assets/dist-C_8TUMdk.js +0 -7
- package/dist/assets/index-D_09pXCE.css +0 -2
- package/dist/assets/player-overlays-JTC60qWR.js +0 -1
- package/dist/assets/plus-BGvFAYGp.js +0 -1
- package/dist/assets/remoteEntry-BwWg0n8I.js +0 -1
- package/dist/assets/rotate-cw-D2Vz1VVs.js +0 -1
- package/dist/assets/search-ZKoT1VCm.js +0 -1
- package/dist/assets/square-BVSyqpTo.js +0 -1
- package/dist/assets/src-0b5IR223.js +0 -67
- package/dist/assets/src-CzRzcy_1.js +0 -7
package/dist/server/addon.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
//#region ../types/dist/event-category-
|
|
3
|
+
//#region ../types/dist/event-category-41fKf-q9.mjs
|
|
4
4
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
5
5
|
EventCategory["SystemBoot"] = "system.boot";
|
|
6
6
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -60,6 +60,26 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
60
60
|
*/
|
|
61
61
|
EventCategory["AddonRetryScheduled"] = "addon.retry-scheduled";
|
|
62
62
|
/**
|
|
63
|
+
* A liveness invariant of this node is false — it has no devices, every
|
|
64
|
+
* camera is offline, or a camera that was recording has stopped producing
|
|
65
|
+
* segments. Emitted by the `liveness-monitor` builtin, once per fault (the
|
|
66
|
+
* `findingId` is stable across ticks), only after its boot grace period.
|
|
67
|
+
* AlertCenter raises a persistent operator-visible alert.
|
|
68
|
+
*
|
|
69
|
+
* It exists because on 2026-08-03 the hub ran four hours with zero devices
|
|
70
|
+
* and zero recordings while every surface stayed quiet.
|
|
71
|
+
*
|
|
72
|
+
* Payload: `{ findingId, severity, title, message, deviceId? }`.
|
|
73
|
+
*/
|
|
74
|
+
EventCategory["SystemLivenessFailed"] = "system.liveness-failed";
|
|
75
|
+
/**
|
|
76
|
+
* A previously reported liveness fault is true again. AlertCenter dismisses
|
|
77
|
+
* the matching `SystemLivenessFailed` alert.
|
|
78
|
+
*
|
|
79
|
+
* Payload: `{ findingId }`.
|
|
80
|
+
*/
|
|
81
|
+
EventCategory["SystemLivenessRecovered"] = "system.liveness-recovered";
|
|
82
|
+
/**
|
|
63
83
|
* Monitor is attempting to reload a failed addon NOW. UI uses this
|
|
64
84
|
* to show a spinner during the retry attempt. Same transient nature
|
|
65
85
|
* as AddonRetryScheduled.
|
|
@@ -7319,14 +7339,7 @@ var RecordingConfigSchema = object({
|
|
|
7319
7339
|
* windows only — existing sheets are immutable, and each window's index
|
|
7320
7340
|
* carries its own tile dims so mixed-preset history renders correctly.
|
|
7321
7341
|
*/
|
|
7322
|
-
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7323
|
-
/**
|
|
7324
|
-
* OPT-IN thumbnail-strip generation for this camera: every keyframe of the
|
|
7325
|
-
* low recording saved as a JPEG (the fast-drag scrub depth), a derived
|
|
7326
|
-
* cache that eviction reclaims with the footage. Absent/false = no strips
|
|
7327
|
-
* are written and scrub reads exact keyframes at every velocity.
|
|
7328
|
-
*/
|
|
7329
|
-
stripsEnabled: boolean().optional()
|
|
7342
|
+
scrubThumbnails: ScrubThumbnailPresetSchema.optional()
|
|
7330
7343
|
}).strict();
|
|
7331
7344
|
/**
|
|
7332
7345
|
* Ops-log — the durable, append-only operations audit shared by the
|
|
@@ -7388,7 +7401,7 @@ var OpsLogQueryInputSchema = object({
|
|
|
7388
7401
|
/**
|
|
7389
7402
|
* Entity-relocation job state (storage entity-routing spec, Phase 4).
|
|
7390
7403
|
*
|
|
7391
|
-
* One shape shared by the recorder's `relocateFootage` (segments
|
|
7404
|
+
* One shape shared by the recorder's `relocateFootage` (segments) and
|
|
7392
7405
|
* pipeline-analytics' `relocateMedia` (event media blobs) so the admin Data
|
|
7393
7406
|
* page renders both movers with one component. Jobs are in-RAM (a restart
|
|
7394
7407
|
* forgets them — re-running is safe by construction: copy-if-absent, delete
|
|
@@ -7410,7 +7423,7 @@ var RelocateJobSchema = object({
|
|
|
7410
7423
|
toLocationId: string(),
|
|
7411
7424
|
/** Scoped device, or null = every device. */
|
|
7412
7425
|
deviceId: number().nullable(),
|
|
7413
|
-
/** What the job moves (owner-addon specific: segments
|
|
7426
|
+
/** What the job moves (owner-addon specific: segments or media). */
|
|
7414
7427
|
entities: array(string()),
|
|
7415
7428
|
filesMoved: number().int(),
|
|
7416
7429
|
bytesMoved: number().int(),
|
|
@@ -7424,7 +7437,7 @@ var RelocateFootageInputSchema = object({
|
|
|
7424
7437
|
deviceId: number().optional(),
|
|
7425
7438
|
fromLocationId: string(),
|
|
7426
7439
|
toLocationId: string(),
|
|
7427
|
-
entities: array(_enum(["segments"
|
|
7440
|
+
entities: array(_enum(["segments"])).optional(),
|
|
7428
7441
|
/** Copy throttle in MB/s (default 40) — the drain is a background chore,
|
|
7429
7442
|
* never allowed to starve live writers. */
|
|
7430
7443
|
throttleMbps: number().min(1).max(1e3).optional()
|
|
@@ -9312,6 +9325,14 @@ var NcMediaPolicySchema = object({
|
|
|
9312
9325
|
clipPreRollSec: number().int().min(0).max(30).optional(),
|
|
9313
9326
|
clipPostRollSec: number().int().min(0).max(30).optional(),
|
|
9314
9327
|
/**
|
|
9328
|
+
* Playback rate of the attached gif / clip. Absent = 2x.
|
|
9329
|
+
*
|
|
9330
|
+
* A notification clip is GLANCED at on a lock screen, not watched: at real
|
|
9331
|
+
* time an eight-second passage is eight seconds of the recipient's attention
|
|
9332
|
+
* and twice the bytes. 1 is real time for the operator who wants it.
|
|
9333
|
+
*/
|
|
9334
|
+
clipSpeed: number().min(1).max(8).optional(),
|
|
9335
|
+
/**
|
|
9315
9336
|
* Which stream profile the footage is cut from. Absent = the CHEAPEST
|
|
9316
9337
|
* assigned profile: a notification is watched on a phone, so the 4K
|
|
9317
9338
|
* rendition would burn CPU to produce a file the client downscales anyway.
|
|
@@ -9383,7 +9404,21 @@ var NcRuleInputSchema = object({
|
|
|
9383
9404
|
* behaviour, visible to all, read-only in the viewer). Present = personal
|
|
9384
9405
|
* rule owned by this userId. Server-stamped; never trusted from a client.
|
|
9385
9406
|
*/
|
|
9386
|
-
ownerUserId: string().optional()
|
|
9407
|
+
ownerUserId: string().optional(),
|
|
9408
|
+
/**
|
|
9409
|
+
* May a non-admin snooze this rule for EVERYONE, not just themselves?
|
|
9410
|
+
*
|
|
9411
|
+
* A snooze is personal by default — it silences the person who set it. This
|
|
9412
|
+
* opts THIS rule into the "the gardener is here all afternoon" case, where
|
|
9413
|
+
* silencing the camera for the whole household is legitimate. It silences
|
|
9414
|
+
* other people, so it is off unless a rule deliberately allows it.
|
|
9415
|
+
*
|
|
9416
|
+
* `.optional()`, deliberately NOT `.default()`: a Zod default does not run on
|
|
9417
|
+
* the addon cap path (three production failures in one day), so absent is
|
|
9418
|
+
* read as `false` by {@link canSetGlobal} in the engine. Admins are not bound
|
|
9419
|
+
* by this flag — see the scope rules on that function.
|
|
9420
|
+
*/
|
|
9421
|
+
snoozeAllowGlobal: boolean().optional()
|
|
9387
9422
|
});
|
|
9388
9423
|
/**
|
|
9389
9424
|
* Partial patch for `updateRule` — any subset of the input fields, plus the
|
|
@@ -9468,7 +9503,28 @@ var NcConditionDescriptorSchema = object({
|
|
|
9468
9503
|
/** Which delivery kinds the condition applies to. */
|
|
9469
9504
|
appliesTo: array(NcDeliverySchema),
|
|
9470
9505
|
phase: string(),
|
|
9471
|
-
description: string().optional()
|
|
9506
|
+
description: string().optional(),
|
|
9507
|
+
/**
|
|
9508
|
+
* The CHOICES for a single-choice widget (`sourceSelect`, `crossingSelect`,
|
|
9509
|
+
* `packagePhase`, …), served with the descriptor.
|
|
9510
|
+
*
|
|
9511
|
+
* Before this the descriptor said which widget to render and not what to put
|
|
9512
|
+
* in it, so every option list lived in three places: this file's enums, the
|
|
9513
|
+
* admin's `NC_*_OPTIONS` and the viewer's `NC_*_VALUES`. That triple mirror
|
|
9514
|
+
* is the drift that emptied the viewer's rule editor on 2026-08-04 — the app
|
|
9515
|
+
* mirrors the cap by hand, so it is only ever as current as its last build.
|
|
9516
|
+
*
|
|
9517
|
+
* With the options on the wire, a condition of an EXISTING `valueType` costs
|
|
9518
|
+
* zero client changes. Clients keep a local fallback for an older hub that
|
|
9519
|
+
* does not send them; absent here is "use your own list", not "no choices".
|
|
9520
|
+
*/
|
|
9521
|
+
options: array(object({
|
|
9522
|
+
/** Written to the rule verbatim. `''` means the ABSENT state. */
|
|
9523
|
+
value: string(),
|
|
9524
|
+
label: string(),
|
|
9525
|
+
/** What THIS choice matches — shown one at a time, under the control. */
|
|
9526
|
+
hint: string().optional()
|
|
9527
|
+
})).readonly().optional()
|
|
9472
9528
|
});
|
|
9473
9529
|
/**
|
|
9474
9530
|
* The delivery lifecycle status of a history row — a straight read of the
|
|
@@ -9553,6 +9609,74 @@ var NcHistoryFilterSchema = object({
|
|
|
9553
9609
|
until: number().optional(),
|
|
9554
9610
|
limit: number().int().min(1).max(500).default(100)
|
|
9555
9611
|
});
|
|
9612
|
+
/**
|
|
9613
|
+
* What a snooze covers. Broader scopes win when several overlap, so one window
|
|
9614
|
+
* leaves ONE digest rather than a rule snooze and a whole-feed snooze both
|
|
9615
|
+
* summarising the same silence.
|
|
9616
|
+
*/
|
|
9617
|
+
var NcSnoozeScopeSchema = _enum([
|
|
9618
|
+
"rule",
|
|
9619
|
+
"device",
|
|
9620
|
+
"all"
|
|
9621
|
+
]);
|
|
9622
|
+
/**
|
|
9623
|
+
* Client-authored snooze. The server stamps `userId`, `startedAt` and
|
|
9624
|
+
* `expiresAt` — a DURATION is sent rather than an instant so a client with a
|
|
9625
|
+
* skewed clock cannot author a window that is already over, or never ends.
|
|
9626
|
+
*/
|
|
9627
|
+
var NcSnoozeInputSchema = object({
|
|
9628
|
+
scope: NcSnoozeScopeSchema,
|
|
9629
|
+
/** Required when `scope: 'rule'` — a scoped snooze with no id matches
|
|
9630
|
+
* NOTHING rather than degrading to "everything". */
|
|
9631
|
+
ruleId: string().optional(),
|
|
9632
|
+
/** Required when `scope: 'device'`. */
|
|
9633
|
+
deviceId: number().int().optional(),
|
|
9634
|
+
durationMinutes: number().int().min(1).max(1440),
|
|
9635
|
+
/**
|
|
9636
|
+
* Silence this for EVERY recipient, not just the caller. Permission is
|
|
9637
|
+
* checked server-side (the rule's `snoozeAllowGlobal`, or admin for the
|
|
9638
|
+
* broader scopes). Absent = personal.
|
|
9639
|
+
*/
|
|
9640
|
+
global: boolean().optional(),
|
|
9641
|
+
/**
|
|
9642
|
+
* Deliver a summary of what was suppressed when the window ends. Absent =
|
|
9643
|
+
* ON: someone silencing a nuisance camera wants it off, someone silencing a
|
|
9644
|
+
* SECURITY camera wants to know what they missed, and choosing "off" for
|
|
9645
|
+
* everybody is how a snooze becomes an outage. Resolved to a concrete
|
|
9646
|
+
* boolean by the server at create time — never left to a Zod default, which
|
|
9647
|
+
* does not run on the addon cap path.
|
|
9648
|
+
*/
|
|
9649
|
+
summary: boolean().optional()
|
|
9650
|
+
});
|
|
9651
|
+
/** A persisted snooze window. */
|
|
9652
|
+
var NcSnoozeSchema = object({
|
|
9653
|
+
id: string(),
|
|
9654
|
+
/** Who set it. Also who it silences, unless `global`. */
|
|
9655
|
+
userId: string(),
|
|
9656
|
+
scope: NcSnoozeScopeSchema,
|
|
9657
|
+
ruleId: string().optional(),
|
|
9658
|
+
deviceId: number().int().optional(),
|
|
9659
|
+
startedAt: number(),
|
|
9660
|
+
/** Exclusive: at exactly this instant the snooze is over. Expiry is a
|
|
9661
|
+
* COMPARISON, not a job — no sweeper can leave the operator silenced. */
|
|
9662
|
+
expiresAt: number(),
|
|
9663
|
+
global: boolean(),
|
|
9664
|
+
summary: boolean(),
|
|
9665
|
+
/** When the end-of-window digest went out. Absent = not sent (yet, or the
|
|
9666
|
+
* window has not closed, or `summary` is false). */
|
|
9667
|
+
digestSentAt: number().optional()
|
|
9668
|
+
});
|
|
9669
|
+
object({
|
|
9670
|
+
snoozeId: string(),
|
|
9671
|
+
targetId: string(),
|
|
9672
|
+
ruleId: string(),
|
|
9673
|
+
ruleName: string(),
|
|
9674
|
+
deviceId: number().int(),
|
|
9675
|
+
/** How many notifications this snooze hid for that pair. */
|
|
9676
|
+
count: number().int(),
|
|
9677
|
+
firstAt: number(),
|
|
9678
|
+
lastAt: number()
|
|
9679
|
+
});
|
|
9556
9680
|
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 }), {
|
|
9557
9681
|
kind: "mutation",
|
|
9558
9682
|
auth: "admin",
|
|
@@ -9582,7 +9706,13 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
9582
9706
|
}), method(object({}), object({
|
|
9583
9707
|
catalog: array(NcConditionDescriptorSchema),
|
|
9584
9708
|
taxonomy: NcTaxonomySchema.optional()
|
|
9585
|
-
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" })
|
|
9709
|
+
})), 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 }), {
|
|
9710
|
+
kind: "mutation",
|
|
9711
|
+
caller: "required"
|
|
9712
|
+
}), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
|
|
9713
|
+
kind: "mutation",
|
|
9714
|
+
caller: "required"
|
|
9715
|
+
});
|
|
9586
9716
|
/**
|
|
9587
9717
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
9588
9718
|
*
|
|
@@ -10330,7 +10460,15 @@ method(object({
|
|
|
10330
10460
|
format: _enum(["gif", "mp4"]).default("gif"),
|
|
10331
10461
|
maxWidth: number().int().min(120).max(1920).default(480),
|
|
10332
10462
|
/** GIF only — MP4 keeps the source cadence. */
|
|
10333
|
-
fps: number().int().min(1).max(15).default(5)
|
|
10463
|
+
fps: number().int().min(1).max(15).default(5),
|
|
10464
|
+
/**
|
|
10465
|
+
* Playback rate. A notification clip is GLANCED at on a lock screen,
|
|
10466
|
+
* not watched, so 2x is the default: the recipient sees the whole
|
|
10467
|
+
* passage in half the time and the GIF is half the bytes. `1` is real
|
|
10468
|
+
* time. Applies to MP4 as well — the operator set a speed, not a GIF
|
|
10469
|
+
* speed.
|
|
10470
|
+
*/
|
|
10471
|
+
speed: number().min(1).max(8).default(2)
|
|
10334
10472
|
}), object({
|
|
10335
10473
|
base64: string(),
|
|
10336
10474
|
mime: string(),
|
|
@@ -15075,6 +15213,210 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
15075
15213
|
kind: "mutation",
|
|
15076
15214
|
auth: "admin"
|
|
15077
15215
|
});
|
|
15216
|
+
/**
|
|
15217
|
+
* Query filter for settings-store collections.
|
|
15218
|
+
*/
|
|
15219
|
+
var QueryFilterSchema = object({
|
|
15220
|
+
where: record(string(), unknown()).optional(),
|
|
15221
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
15222
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
15223
|
+
orderBy: object({
|
|
15224
|
+
field: string(),
|
|
15225
|
+
direction: _enum(["asc", "desc"])
|
|
15226
|
+
}).optional(),
|
|
15227
|
+
limit: number().optional(),
|
|
15228
|
+
offset: number().optional()
|
|
15229
|
+
});
|
|
15230
|
+
/**
|
|
15231
|
+
* The predicate half of a filter, for BULK MUTATIONS.
|
|
15232
|
+
*
|
|
15233
|
+
* Deliberately not `QueryFilterSchema`: `orderBy` / `limit` / `offset` have no
|
|
15234
|
+
* meaning for a statement that rewrites a set, and accepting them would invite
|
|
15235
|
+
* a caller to believe `limit` bounds the damage. Every field is optional here
|
|
15236
|
+
* only so the shape stays composable — the implementation REJECTS a filter
|
|
15237
|
+
* that compiles to no predicate, because that is the whole collection.
|
|
15238
|
+
*/
|
|
15239
|
+
var MutationFilterSchema = object({
|
|
15240
|
+
where: record(string(), unknown()).optional(),
|
|
15241
|
+
whereIn: record(string(), array(unknown())).optional(),
|
|
15242
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional()
|
|
15243
|
+
});
|
|
15244
|
+
/** A single stored record: `{ id, data }`. */
|
|
15245
|
+
var SettingsRecordSchema = object({
|
|
15246
|
+
id: string(),
|
|
15247
|
+
data: record(string(), unknown())
|
|
15248
|
+
});
|
|
15249
|
+
/**
|
|
15250
|
+
* Column declaration for a structured (SQL-backed) collection.
|
|
15251
|
+
*
|
|
15252
|
+
* Logical types — the backend translates each to the matching SQLite
|
|
15253
|
+
* storage class and handles per-type marshaling:
|
|
15254
|
+
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
15255
|
+
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
15256
|
+
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
15257
|
+
*/
|
|
15258
|
+
var CollectionColumnSchema = object({
|
|
15259
|
+
name: string(),
|
|
15260
|
+
type: _enum([
|
|
15261
|
+
"TEXT",
|
|
15262
|
+
"INTEGER",
|
|
15263
|
+
"REAL",
|
|
15264
|
+
"JSON",
|
|
15265
|
+
"BOOLEAN"
|
|
15266
|
+
]),
|
|
15267
|
+
primaryKey: boolean().optional(),
|
|
15268
|
+
notNull: boolean().optional(),
|
|
15269
|
+
unique: boolean().optional(),
|
|
15270
|
+
/**
|
|
15271
|
+
* Column DEFAULT. Required for B2: the four `ensureTable` consumers declare
|
|
15272
|
+
* columns like `enabled INTEGER NOT NULL DEFAULT 1`, and without this the
|
|
15273
|
+
* collection surface simply cannot express their existing tables — which is
|
|
15274
|
+
* why they were still on the uncapped `table*` API.
|
|
15275
|
+
*/
|
|
15276
|
+
defaultValue: union([
|
|
15277
|
+
string(),
|
|
15278
|
+
number(),
|
|
15279
|
+
boolean()
|
|
15280
|
+
]).optional()
|
|
15281
|
+
});
|
|
15282
|
+
var CollectionIndexSchema = object({
|
|
15283
|
+
name: string(),
|
|
15284
|
+
columns: array(string()).readonly(),
|
|
15285
|
+
unique: boolean().optional()
|
|
15286
|
+
});
|
|
15287
|
+
method(object({
|
|
15288
|
+
namespace: string().optional(),
|
|
15289
|
+
collection: string(),
|
|
15290
|
+
key: string()
|
|
15291
|
+
}), unknown()), method(object({
|
|
15292
|
+
namespace: string().optional(),
|
|
15293
|
+
collection: string(),
|
|
15294
|
+
key: string(),
|
|
15295
|
+
value: unknown()
|
|
15296
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15297
|
+
namespace: string().optional(),
|
|
15298
|
+
collection: string(),
|
|
15299
|
+
filter: QueryFilterSchema.optional()
|
|
15300
|
+
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
15301
|
+
namespace: string().optional(),
|
|
15302
|
+
collection: string(),
|
|
15303
|
+
record: SettingsRecordSchema
|
|
15304
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15305
|
+
namespace: string().optional(),
|
|
15306
|
+
collection: string(),
|
|
15307
|
+
id: string(),
|
|
15308
|
+
data: record(string(), unknown())
|
|
15309
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15310
|
+
namespace: string().optional(),
|
|
15311
|
+
collection: string(),
|
|
15312
|
+
key: string()
|
|
15313
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15314
|
+
namespace: string().optional(),
|
|
15315
|
+
collection: string(),
|
|
15316
|
+
filter: MutationFilterSchema
|
|
15317
|
+
}), object({ deleted: number().int() }), { kind: "mutation" }), method(object({
|
|
15318
|
+
namespace: string().optional(),
|
|
15319
|
+
collection: string(),
|
|
15320
|
+
filter: MutationFilterSchema,
|
|
15321
|
+
data: record(string(), unknown())
|
|
15322
|
+
}), object({ updated: number().int() }), { kind: "mutation" }), method(object({
|
|
15323
|
+
namespace: string().optional(),
|
|
15324
|
+
collection: string(),
|
|
15325
|
+
filter: QueryFilterSchema.optional()
|
|
15326
|
+
}), number()), method(object({
|
|
15327
|
+
namespace: string().optional(),
|
|
15328
|
+
collection: string(),
|
|
15329
|
+
field: string(),
|
|
15330
|
+
bucketSize: number().int().positive(),
|
|
15331
|
+
origin: number().int(),
|
|
15332
|
+
filter: QueryFilterSchema.optional()
|
|
15333
|
+
}), array(object({
|
|
15334
|
+
bucket: number().int(),
|
|
15335
|
+
count: number().int()
|
|
15336
|
+
})).readonly()), method(object({
|
|
15337
|
+
namespace: string().optional(),
|
|
15338
|
+
collection: string()
|
|
15339
|
+
}), boolean()), method(object({
|
|
15340
|
+
namespace: string().optional(),
|
|
15341
|
+
collection: string(),
|
|
15342
|
+
columns: array(CollectionColumnSchema).readonly(),
|
|
15343
|
+
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
15344
|
+
}), _void(), { kind: "mutation" });
|
|
15345
|
+
/**
|
|
15346
|
+
* What one engine says about itself. The orchestrator uses `kind` to pick
|
|
15347
|
+
* a registrant for a collection; `engineId` is what a log line names when
|
|
15348
|
+
* a call is routed or refused.
|
|
15349
|
+
*/
|
|
15350
|
+
var EngineInfoSchema = object({
|
|
15351
|
+
engineId: string(),
|
|
15352
|
+
/**
|
|
15353
|
+
* `relational` — rows, columns, indexes, the surface `settings-store`
|
|
15354
|
+
* has always described. `vector` — an embedding store answering
|
|
15355
|
+
* similarity queries. A registrant declares exactly one; an engine that
|
|
15356
|
+
* does both registers twice, because "both" would make the routing
|
|
15357
|
+
* decision ambiguous at exactly the point it must not be.
|
|
15358
|
+
*/
|
|
15359
|
+
kind: _enum(["relational", "vector"]),
|
|
15360
|
+
displayName: string()
|
|
15361
|
+
});
|
|
15362
|
+
method(_void(), EngineInfoSchema), method(object({
|
|
15363
|
+
namespace: string().optional(),
|
|
15364
|
+
collection: string(),
|
|
15365
|
+
key: string()
|
|
15366
|
+
}), unknown()), method(object({
|
|
15367
|
+
namespace: string().optional(),
|
|
15368
|
+
collection: string(),
|
|
15369
|
+
key: string(),
|
|
15370
|
+
value: unknown()
|
|
15371
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15372
|
+
namespace: string().optional(),
|
|
15373
|
+
collection: string(),
|
|
15374
|
+
filter: QueryFilterSchema.optional()
|
|
15375
|
+
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
15376
|
+
namespace: string().optional(),
|
|
15377
|
+
collection: string(),
|
|
15378
|
+
record: SettingsRecordSchema
|
|
15379
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15380
|
+
namespace: string().optional(),
|
|
15381
|
+
collection: string(),
|
|
15382
|
+
id: string(),
|
|
15383
|
+
data: record(string(), unknown())
|
|
15384
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15385
|
+
namespace: string().optional(),
|
|
15386
|
+
collection: string(),
|
|
15387
|
+
key: string()
|
|
15388
|
+
}), _void(), { kind: "mutation" }), method(object({
|
|
15389
|
+
namespace: string().optional(),
|
|
15390
|
+
collection: string(),
|
|
15391
|
+
filter: MutationFilterSchema
|
|
15392
|
+
}), object({ deleted: number().int() }), { kind: "mutation" }), method(object({
|
|
15393
|
+
namespace: string().optional(),
|
|
15394
|
+
collection: string(),
|
|
15395
|
+
filter: MutationFilterSchema,
|
|
15396
|
+
data: record(string(), unknown())
|
|
15397
|
+
}), object({ updated: number().int() }), { kind: "mutation" }), method(object({
|
|
15398
|
+
namespace: string().optional(),
|
|
15399
|
+
collection: string(),
|
|
15400
|
+
filter: QueryFilterSchema.optional()
|
|
15401
|
+
}), number()), method(object({
|
|
15402
|
+
namespace: string().optional(),
|
|
15403
|
+
collection: string(),
|
|
15404
|
+
field: string(),
|
|
15405
|
+
bucketSize: number().int().positive(),
|
|
15406
|
+
origin: number().int(),
|
|
15407
|
+
filter: QueryFilterSchema.optional()
|
|
15408
|
+
}), array(object({
|
|
15409
|
+
bucket: number().int(),
|
|
15410
|
+
count: number().int()
|
|
15411
|
+
})).readonly()), method(object({
|
|
15412
|
+
namespace: string().optional(),
|
|
15413
|
+
collection: string()
|
|
15414
|
+
}), boolean()), method(object({
|
|
15415
|
+
namespace: string().optional(),
|
|
15416
|
+
collection: string(),
|
|
15417
|
+
columns: array(CollectionColumnSchema).readonly(),
|
|
15418
|
+
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
15419
|
+
}), _void(), { kind: "mutation" });
|
|
15078
15420
|
DeviceType.Camera;
|
|
15079
15421
|
/**
|
|
15080
15422
|
* `device-adoption` — generic discovery + adoption surface,
|
|
@@ -18307,6 +18649,28 @@ var ServerUpdateStateSchema = _enum([
|
|
|
18307
18649
|
"pending-restart",
|
|
18308
18650
|
"awaiting-confirmation"
|
|
18309
18651
|
]);
|
|
18652
|
+
var ImageContractSchema = object({
|
|
18653
|
+
state: _enum([
|
|
18654
|
+
"in-sync",
|
|
18655
|
+
"behind-patch",
|
|
18656
|
+
"behind-series",
|
|
18657
|
+
"ahead",
|
|
18658
|
+
"unknown"
|
|
18659
|
+
]),
|
|
18660
|
+
/** The baked seed closure version — the image/app-bundle fingerprint. */
|
|
18661
|
+
seedVersion: string().nullable(),
|
|
18662
|
+
/** Best-known version the deployment contract delivers today. */
|
|
18663
|
+
contractVersion: string().nullable(),
|
|
18664
|
+
/**
|
|
18665
|
+
* Where `contractVersion` came from: a real registry check (`registry`), or
|
|
18666
|
+
* the node's own running version (`running` — a node can never run code
|
|
18667
|
+
* newer than the newest release, so `seed < running` proves image staleness
|
|
18668
|
+
* even before any registry check has run).
|
|
18669
|
+
*/
|
|
18670
|
+
contractSource: _enum(["registry", "running"]).nullable(),
|
|
18671
|
+
/** One operator-grade sentence: this node runs image X; the contract says Y. */
|
|
18672
|
+
message: string()
|
|
18673
|
+
});
|
|
18310
18674
|
var ServerRollbackInfoSchema = object({
|
|
18311
18675
|
/** The version that failed (or was manually rolled back). */
|
|
18312
18676
|
fromVersion: string(),
|
|
@@ -18343,7 +18707,12 @@ var ServerPackageStatusSchema = object({
|
|
|
18343
18707
|
* versions are being IGNORED. Surfaced as a warning in the UI.
|
|
18344
18708
|
*/
|
|
18345
18709
|
stateFileCorrupt: boolean(),
|
|
18346
|
-
lastCheckedAtMs: number().nullable()
|
|
18710
|
+
lastCheckedAtMs: number().nullable(),
|
|
18711
|
+
/**
|
|
18712
|
+
* Seed-vs-contract verdict (see {@link ImageContractSchema}). Optional for
|
|
18713
|
+
* version skew: an older provider's payload simply omits it.
|
|
18714
|
+
*/
|
|
18715
|
+
imageContract: ImageContractSchema.optional()
|
|
18347
18716
|
});
|
|
18348
18717
|
var ServerUpdateCheckResultSchema = object({
|
|
18349
18718
|
packageName: string(),
|
|
@@ -18378,101 +18747,6 @@ version: string().optional() }), ServerUpdateActionResultSchema, {
|
|
|
18378
18747
|
auth: "admin"
|
|
18379
18748
|
});
|
|
18380
18749
|
/**
|
|
18381
|
-
* Query filter for settings-store collections.
|
|
18382
|
-
*/
|
|
18383
|
-
var QueryFilterSchema = object({
|
|
18384
|
-
where: record(string(), unknown()).optional(),
|
|
18385
|
-
whereIn: record(string(), array(unknown())).optional(),
|
|
18386
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
18387
|
-
orderBy: object({
|
|
18388
|
-
field: string(),
|
|
18389
|
-
direction: _enum(["asc", "desc"])
|
|
18390
|
-
}).optional(),
|
|
18391
|
-
limit: number().optional(),
|
|
18392
|
-
offset: number().optional()
|
|
18393
|
-
});
|
|
18394
|
-
/** A single stored record: `{ id, data }`. */
|
|
18395
|
-
var SettingsRecordSchema = object({
|
|
18396
|
-
id: string(),
|
|
18397
|
-
data: record(string(), unknown())
|
|
18398
|
-
});
|
|
18399
|
-
/**
|
|
18400
|
-
* Column declaration for a structured (SQL-backed) collection.
|
|
18401
|
-
*
|
|
18402
|
-
* Logical types — the backend translates each to the matching SQLite
|
|
18403
|
-
* storage class and handles per-type marshaling:
|
|
18404
|
-
* - `TEXT` / `INTEGER` / `REAL` — native SQLite types, pass-through
|
|
18405
|
-
* - `JSON` — TEXT under the hood; serialised on write, parsed on read
|
|
18406
|
-
* - `BOOLEAN` — INTEGER 0/1 under the hood; coerced both directions
|
|
18407
|
-
*/
|
|
18408
|
-
var CollectionColumnSchema = object({
|
|
18409
|
-
name: string(),
|
|
18410
|
-
type: _enum([
|
|
18411
|
-
"TEXT",
|
|
18412
|
-
"INTEGER",
|
|
18413
|
-
"REAL",
|
|
18414
|
-
"JSON",
|
|
18415
|
-
"BOOLEAN"
|
|
18416
|
-
]),
|
|
18417
|
-
primaryKey: boolean().optional(),
|
|
18418
|
-
notNull: boolean().optional(),
|
|
18419
|
-
unique: boolean().optional()
|
|
18420
|
-
});
|
|
18421
|
-
var CollectionIndexSchema = object({
|
|
18422
|
-
name: string(),
|
|
18423
|
-
columns: array(string()).readonly(),
|
|
18424
|
-
unique: boolean().optional()
|
|
18425
|
-
});
|
|
18426
|
-
method(object({
|
|
18427
|
-
namespace: string().optional(),
|
|
18428
|
-
collection: string(),
|
|
18429
|
-
key: string()
|
|
18430
|
-
}), unknown()), method(object({
|
|
18431
|
-
namespace: string().optional(),
|
|
18432
|
-
collection: string(),
|
|
18433
|
-
key: string(),
|
|
18434
|
-
value: unknown()
|
|
18435
|
-
}), _void(), { kind: "mutation" }), method(object({
|
|
18436
|
-
namespace: string().optional(),
|
|
18437
|
-
collection: string(),
|
|
18438
|
-
filter: QueryFilterSchema.optional()
|
|
18439
|
-
}), array(SettingsRecordSchema).readonly()), method(object({
|
|
18440
|
-
namespace: string().optional(),
|
|
18441
|
-
collection: string(),
|
|
18442
|
-
record: SettingsRecordSchema
|
|
18443
|
-
}), _void(), { kind: "mutation" }), method(object({
|
|
18444
|
-
namespace: string().optional(),
|
|
18445
|
-
collection: string(),
|
|
18446
|
-
id: string(),
|
|
18447
|
-
data: record(string(), unknown())
|
|
18448
|
-
}), _void(), { kind: "mutation" }), method(object({
|
|
18449
|
-
namespace: string().optional(),
|
|
18450
|
-
collection: string(),
|
|
18451
|
-
key: string()
|
|
18452
|
-
}), _void(), { kind: "mutation" }), method(object({
|
|
18453
|
-
namespace: string().optional(),
|
|
18454
|
-
collection: string(),
|
|
18455
|
-
filter: QueryFilterSchema.optional()
|
|
18456
|
-
}), number()), method(object({
|
|
18457
|
-
namespace: string().optional(),
|
|
18458
|
-
collection: string(),
|
|
18459
|
-
field: string(),
|
|
18460
|
-
bucketSize: number().int().positive(),
|
|
18461
|
-
origin: number().int(),
|
|
18462
|
-
filter: QueryFilterSchema.optional()
|
|
18463
|
-
}), array(object({
|
|
18464
|
-
bucket: number().int(),
|
|
18465
|
-
count: number().int()
|
|
18466
|
-
})).readonly()), method(object({
|
|
18467
|
-
namespace: string().optional(),
|
|
18468
|
-
collection: string()
|
|
18469
|
-
}), boolean()), method(object({
|
|
18470
|
-
namespace: string().optional(),
|
|
18471
|
-
collection: string(),
|
|
18472
|
-
columns: array(CollectionColumnSchema).readonly(),
|
|
18473
|
-
indexes: array(CollectionIndexSchema).readonly().optional()
|
|
18474
|
-
}), _void(), { kind: "mutation" });
|
|
18475
|
-
/**
|
|
18476
18750
|
* `smtp-provider` — pluggable email delivery surface.
|
|
18477
18751
|
*
|
|
18478
18752
|
* Collection cap: a deployment may install multiple SMTP relays (e.g.
|
|
@@ -22371,6 +22645,84 @@ Object.freeze({
|
|
|
22371
22645
|
addonId: null,
|
|
22372
22646
|
access: "view"
|
|
22373
22647
|
},
|
|
22648
|
+
"dataStoreProvider.count": {
|
|
22649
|
+
capName: "data-store-provider",
|
|
22650
|
+
capScope: "system",
|
|
22651
|
+
addonId: null,
|
|
22652
|
+
access: "view"
|
|
22653
|
+
},
|
|
22654
|
+
"dataStoreProvider.declareCollection": {
|
|
22655
|
+
capName: "data-store-provider",
|
|
22656
|
+
capScope: "system",
|
|
22657
|
+
addonId: null,
|
|
22658
|
+
access: "create"
|
|
22659
|
+
},
|
|
22660
|
+
"dataStoreProvider.delete": {
|
|
22661
|
+
capName: "data-store-provider",
|
|
22662
|
+
capScope: "system",
|
|
22663
|
+
addonId: null,
|
|
22664
|
+
access: "delete"
|
|
22665
|
+
},
|
|
22666
|
+
"dataStoreProvider.deleteWhere": {
|
|
22667
|
+
capName: "data-store-provider",
|
|
22668
|
+
capScope: "system",
|
|
22669
|
+
addonId: null,
|
|
22670
|
+
access: "delete"
|
|
22671
|
+
},
|
|
22672
|
+
"dataStoreProvider.get": {
|
|
22673
|
+
capName: "data-store-provider",
|
|
22674
|
+
capScope: "system",
|
|
22675
|
+
addonId: null,
|
|
22676
|
+
access: "view"
|
|
22677
|
+
},
|
|
22678
|
+
"dataStoreProvider.getEngineInfo": {
|
|
22679
|
+
capName: "data-store-provider",
|
|
22680
|
+
capScope: "system",
|
|
22681
|
+
addonId: null,
|
|
22682
|
+
access: "view"
|
|
22683
|
+
},
|
|
22684
|
+
"dataStoreProvider.histogram": {
|
|
22685
|
+
capName: "data-store-provider",
|
|
22686
|
+
capScope: "system",
|
|
22687
|
+
addonId: null,
|
|
22688
|
+
access: "view"
|
|
22689
|
+
},
|
|
22690
|
+
"dataStoreProvider.insert": {
|
|
22691
|
+
capName: "data-store-provider",
|
|
22692
|
+
capScope: "system",
|
|
22693
|
+
addonId: null,
|
|
22694
|
+
access: "create"
|
|
22695
|
+
},
|
|
22696
|
+
"dataStoreProvider.isEmpty": {
|
|
22697
|
+
capName: "data-store-provider",
|
|
22698
|
+
capScope: "system",
|
|
22699
|
+
addonId: null,
|
|
22700
|
+
access: "view"
|
|
22701
|
+
},
|
|
22702
|
+
"dataStoreProvider.query": {
|
|
22703
|
+
capName: "data-store-provider",
|
|
22704
|
+
capScope: "system",
|
|
22705
|
+
addonId: null,
|
|
22706
|
+
access: "view"
|
|
22707
|
+
},
|
|
22708
|
+
"dataStoreProvider.set": {
|
|
22709
|
+
capName: "data-store-provider",
|
|
22710
|
+
capScope: "system",
|
|
22711
|
+
addonId: null,
|
|
22712
|
+
access: "create"
|
|
22713
|
+
},
|
|
22714
|
+
"dataStoreProvider.update": {
|
|
22715
|
+
capName: "data-store-provider",
|
|
22716
|
+
capScope: "system",
|
|
22717
|
+
addonId: null,
|
|
22718
|
+
access: "create"
|
|
22719
|
+
},
|
|
22720
|
+
"dataStoreProvider.updateWhere": {
|
|
22721
|
+
capName: "data-store-provider",
|
|
22722
|
+
capScope: "system",
|
|
22723
|
+
addonId: null,
|
|
22724
|
+
access: "create"
|
|
22725
|
+
},
|
|
22374
22726
|
"dayNight.getOptions": {
|
|
22375
22727
|
capName: "day-night",
|
|
22376
22728
|
capScope: "device",
|
|
@@ -24165,12 +24517,24 @@ Object.freeze({
|
|
|
24165
24517
|
addonId: null,
|
|
24166
24518
|
access: "create"
|
|
24167
24519
|
},
|
|
24520
|
+
"notificationRules.cancelSnooze": {
|
|
24521
|
+
capName: "notification-rules",
|
|
24522
|
+
capScope: "system",
|
|
24523
|
+
addonId: null,
|
|
24524
|
+
access: "create"
|
|
24525
|
+
},
|
|
24168
24526
|
"notificationRules.createRule": {
|
|
24169
24527
|
capName: "notification-rules",
|
|
24170
24528
|
capScope: "system",
|
|
24171
24529
|
addonId: null,
|
|
24172
24530
|
access: "create"
|
|
24173
24531
|
},
|
|
24532
|
+
"notificationRules.createSnooze": {
|
|
24533
|
+
capName: "notification-rules",
|
|
24534
|
+
capScope: "system",
|
|
24535
|
+
addonId: null,
|
|
24536
|
+
access: "create"
|
|
24537
|
+
},
|
|
24174
24538
|
"notificationRules.deleteRule": {
|
|
24175
24539
|
capName: "notification-rules",
|
|
24176
24540
|
capScope: "system",
|
|
@@ -24201,6 +24565,12 @@ Object.freeze({
|
|
|
24201
24565
|
addonId: null,
|
|
24202
24566
|
access: "view"
|
|
24203
24567
|
},
|
|
24568
|
+
"notificationRules.listSnoozes": {
|
|
24569
|
+
capName: "notification-rules",
|
|
24570
|
+
capScope: "system",
|
|
24571
|
+
addonId: null,
|
|
24572
|
+
access: "view"
|
|
24573
|
+
},
|
|
24204
24574
|
"notificationRules.setRuleEnabled": {
|
|
24205
24575
|
capName: "notification-rules",
|
|
24206
24576
|
capScope: "system",
|
|
@@ -25449,6 +25819,12 @@ Object.freeze({
|
|
|
25449
25819
|
addonId: null,
|
|
25450
25820
|
access: "delete"
|
|
25451
25821
|
},
|
|
25822
|
+
"settingsStore.deleteWhere": {
|
|
25823
|
+
capName: "settings-store",
|
|
25824
|
+
capScope: "system",
|
|
25825
|
+
addonId: null,
|
|
25826
|
+
access: "delete"
|
|
25827
|
+
},
|
|
25452
25828
|
"settingsStore.get": {
|
|
25453
25829
|
capName: "settings-store",
|
|
25454
25830
|
capScope: "system",
|
|
@@ -25491,6 +25867,12 @@ Object.freeze({
|
|
|
25491
25867
|
addonId: null,
|
|
25492
25868
|
access: "create"
|
|
25493
25869
|
},
|
|
25870
|
+
"settingsStore.updateWhere": {
|
|
25871
|
+
capName: "settings-store",
|
|
25872
|
+
capScope: "system",
|
|
25873
|
+
addonId: null,
|
|
25874
|
+
access: "create"
|
|
25875
|
+
},
|
|
25494
25876
|
"smtpProvider.getStatus": {
|
|
25495
25877
|
capName: "smtp-provider",
|
|
25496
25878
|
capScope: "system",
|
|
@@ -26534,7 +26916,7 @@ var AdminUIAddon = class extends BaseAddon {
|
|
|
26534
26916
|
capability: adminUiCapability,
|
|
26535
26917
|
provider: {
|
|
26536
26918
|
getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
|
|
26537
|
-
getVersion: async () => ({ version: "1.2.
|
|
26919
|
+
getVersion: async () => ({ version: "1.2.23" })
|
|
26538
26920
|
}
|
|
26539
26921
|
}];
|
|
26540
26922
|
}
|