@camstack/addon-admin-ui 1.2.259 → 1.2.260
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/{AddonCollectionPage-jmmQbNlm.js → AddonCollectionPage-CS0TnWg9.js} +1 -1
- package/dist/assets/{Addons-BsSGWb_z.js → Addons-C30etjze.js} +1 -1
- package/dist/assets/{AdminTabs-DPQzm8ja.js → AdminTabs-FTjDtV3h.js} +1 -1
- package/dist/assets/{AiProfiles-W9aPBPZe.js → AiProfiles-mbAsm8w-.js} +1 -1
- package/dist/assets/{BrokerForm-CVQ-rA2N.js → BrokerForm-Q6_-XEV6.js} +1 -1
- package/dist/assets/{Build-DKhq3ZPS.js → Build-DEIHGbUT.js} +1 -1
- package/dist/assets/{Capabilities-66Fkb86a.js → Capabilities-BBNd5xr5.js} +1 -1
- package/dist/assets/{CapabilityBadges-BxsPe5Zv.js → CapabilityBadges-CrEM9xUa.js} +1 -1
- package/dist/assets/{Cluster-D_iZDJn0.js → Cluster-Bzkxl6x3.js} +1 -1
- package/dist/assets/{Data-DWc_uUjG.js → Data-TtTvLPLA.js} +1 -1
- package/dist/assets/{DetectionIntelligence-7vWzLsQf.js → DetectionIntelligence-DfTa4lpL.js} +1 -1
- package/dist/assets/{DeviceAggregateSection-CKoUTomJ.js → DeviceAggregateSection-f6elW-hA.js} +1 -1
- package/dist/assets/{DeviceDetail-D8Wt4euP.js → DeviceDetail-2sfyugFO.js} +1 -1
- package/dist/assets/{Devices-DPQUPRve.js → Devices-Co8wNAQR.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-CwCK4H7y.js → EmbedPlayerPage-C-PGfe8W.js} +1 -1
- package/dist/assets/{Events-Ckv4KkpG.js → Events-BoiEuALN.js} +1 -1
- package/dist/assets/{FormBuilder-OQj-b3vo.js → FormBuilder-B3mdR0Gk.js} +1 -1
- package/dist/assets/{Identity-DimZNUxf.js → Identity-CYZ21kQd.js} +1 -1
- package/dist/assets/{IntegrationDetail-C-DRNloj.js → IntegrationDetail-DkvBX9o8.js} +1 -1
- package/dist/assets/{Integrations-BqzMaD-1.js → Integrations-CZio9vzA.js} +1 -1
- package/dist/assets/{Integrations-B9OOxvsb.js → Integrations-CxQSQ9fW.js} +1 -1
- package/dist/assets/{Locations-B4yncwki.js → Locations-D0BRCdcK.js} +1 -1
- package/dist/assets/{Logs-DWmSJIzl.js → Logs-zkWqa-Zv.js} +1 -1
- package/dist/assets/{MotionZonesSettings-BJ4XzX38.js → MotionZonesSettings-DPp47_Em.js} +1 -1
- package/dist/assets/{MyAccess-BaioSuA9.js → MyAccess-BISLeGOK.js} +1 -1
- package/dist/assets/{Network-sYvTsGXU.js → Network-CopgOYrO.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-CNk8xstc.js → NodeAddonsSettingsPanel-B5y6dSOO.js} +1 -1
- package/dist/assets/{NodeInferenceDevices-DvkNwX7-.js → NodeInferenceDevices-MUCKntIr.js} +1 -1
- package/dist/assets/Notifications-C-euUn8Y.js +1 -0
- package/dist/assets/{Pipeline-KySyNzp2.js → Pipeline-CRvLk6_r.js} +1 -1
- package/dist/assets/{Plates-DAsfL6eC.js → Plates-ChoLztf-.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-P1egG4Gq.js → PrivacyMaskSettings-Bt6X63Rt.js} +1 -1
- package/dist/assets/{ProviderIcon-vyz-QK1L.js → ProviderIcon-D9PLOXMZ.js} +1 -1
- package/dist/assets/{Recordings-CNgGUlGk.js → Recordings-TgH0kxt8.js} +1 -1
- package/dist/assets/{ScanNetworkModal-BvSevznk.js → ScanNetworkModal-lEnThbrW.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-MEJ8MP4m.js → SceneMonitorEditor-Coey7DkB.js} +1 -1
- package/dist/assets/{Scenes-D8UmCN0j.js → Scenes-DCGaMi0H.js} +1 -1
- package/dist/assets/{Settings-YaOCkIql.js → Settings-Cya6w94r.js} +1 -1
- package/dist/assets/{Showroom-Bg4x9Lzt.js → Showroom-CEIjIU3D.js} +1 -1
- package/dist/assets/{StorageLocationsPanel-BE5hB2Aa.js → StorageLocationsPanel-dpSl2bc_.js} +1 -1
- package/dist/assets/{Terminal-CHm5FlVJ.js → Terminal-DYbduyac.js} +1 -1
- package/dist/assets/{Viewer-DLAPFaHz.js → Viewer-BCs5TInB.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BiTKILzZ.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BAEaiPOS.js} +1 -1
- package/dist/assets/{archive-DydHm7oC.js → archive-BDAG8ZtC.js} +1 -1
- package/dist/assets/{authed-media-Cpcnxxci.js → authed-media-BgHAN7mo.js} +1 -1
- package/dist/assets/{boxes-Tzjsnk2Q.js → boxes-CGA7dQAX.js} +1 -1
- package/dist/assets/circle-slash-xqjuzvya.js +1 -0
- package/dist/assets/{debounced-invalidate-BShXPTRg.js → debounced-invalidate-DUhUAjlV.js} +1 -1
- package/dist/assets/{dist-4gnU2Lg3.js → dist-CIB8yuhW.js} +1 -1
- package/dist/assets/dist-Cxb_X-h6.js +349 -0
- package/dist/assets/{face-bbox-B7yuZrNl.js → face-bbox-q-9rvLF7.js} +1 -1
- package/dist/assets/{hard-drive-download-PRhNyH2U.js → hard-drive-download-DXfQNx7b.js} +1 -1
- package/dist/assets/{hostInit-C4xQoYJ9.js → hostInit-DHzuQRJh.js} +1 -1
- package/dist/assets/{index-BtoTwa3A.js → index-Dx7jiq4X.js} +3 -3
- package/dist/assets/{layers-l0ePwwTT.js → layers-D-Qb89PK.js} +1 -1
- package/dist/assets/{location-owned-usage-DLAg7bui.js → location-owned-usage-C-JLRZgq.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-f9201282.js → mf-entry-bootstrap-0-19449b84.js} +2 -2
- package/dist/assets/{player-overlays-BAhe5OxX.js → player-overlays-BHhXtyqA.js} +1 -1
- package/dist/assets/remoteEntry-BnoRpCyV.js +1 -0
- package/dist/assets/{send-CR2WbB-q.js → send-DtWddy40.js} +1 -1
- package/dist/assets/{settings-2-DamfG3Rr.js → settings-2-a-fUhkjD.js} +1 -1
- package/dist/assets/{square-check-big-CyRsLf9w.js → square-check-big-DBadJoiu.js} +1 -1
- package/dist/assets/src-D1KVMjXF.js +67 -0
- package/dist/assets/src-DJhS86y-.js +349 -0
- package/dist/assets/{use-scenes-feed-CzKPS2XP.js → use-scenes-feed-Cgbz38uA.js} +1 -1
- package/dist/assets/{use-stationary-objects-CldTVGD6.js → use-stationary-objects-NIqG_ma3.js} +1 -1
- package/dist/assets/useEventInvalidation-DE-QGHTV.js +1 -0
- package/dist/assets/{useNodeUrlSelection-BrPudXce.js → useNodeUrlSelection-CjOpKTO_.js} +1 -1
- package/dist/assets/user-round-BFvKN2vL.js +1 -0
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-erVC1v4l.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CXmVBdRr.js} +2 -2
- package/dist/index.html +5 -5
- package/dist/server/addon.js +243 -21
- package/package.json +1 -1
- package/dist/assets/Notifications-DNjGTYu9.js +0 -1
- package/dist/assets/circle-slash-P5b6wYJL.js +0 -1
- package/dist/assets/dist--FGB4WO5.js +0 -349
- package/dist/assets/remoteEntry-DTRY01rz.js +0 -1
- package/dist/assets/src-CUaqZLmc.js +0 -349
- package/dist/assets/src-DrOD3ogD.js +0 -67
- package/dist/assets/useEventInvalidation-Clg20sS7.js +0 -1
- package/dist/assets/user-round-DONmU94i.js +0 -1
package/dist/server/addon.js
CHANGED
|
@@ -5361,7 +5361,7 @@ var ZodIssueCode = {
|
|
|
5361
5361
|
var ZodFirstPartyTypeKind;
|
|
5362
5362
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5363
5363
|
//#endregion
|
|
5364
|
-
//#region ../types/dist/sleep-
|
|
5364
|
+
//#region ../types/dist/sleep-pM_J7YnY.mjs
|
|
5365
5365
|
/**
|
|
5366
5366
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5367
5367
|
* window to float samples (D455).
|
|
@@ -16553,6 +16553,7 @@ sub("presence", "sensor", "sensor", "#22c55e", "presence", "Presence");
|
|
|
16553
16553
|
sub("enum-sensor", "sensor", "sensor", TAXONOMY_COLORS.sensor, "generic", "Sensor state");
|
|
16554
16554
|
sub("device-event", "sensor", "sensor", "#10b981", "button", "Device event");
|
|
16555
16555
|
sub("lock", "control", "control", "#0ea5e9", "lock", "Lock");
|
|
16556
|
+
sub("cover", "control", "control", "#0ea5e9", "door", "Cover");
|
|
16556
16557
|
sub("switch", "control", "control", TAXONOMY_COLORS.control, "switch", "Switch");
|
|
16557
16558
|
sub("siren", "control", "control", "#dc2626", "siren", "Siren");
|
|
16558
16559
|
sub("button", "control", "control", "#10b981", "button", "Button");
|
|
@@ -16833,6 +16834,10 @@ var NcSystemEventKindSchema = _enum([
|
|
|
16833
16834
|
"alarm-disarmed",
|
|
16834
16835
|
"alarm-arming",
|
|
16835
16836
|
"alarm-arm-refused",
|
|
16837
|
+
"alarm-pending",
|
|
16838
|
+
"alarm-rearmed",
|
|
16839
|
+
"alarm-sensor-bypass",
|
|
16840
|
+
"alarm-check-failed",
|
|
16836
16841
|
"addon-updated",
|
|
16837
16842
|
"server-updated",
|
|
16838
16843
|
"export-completed",
|
|
@@ -17428,6 +17433,19 @@ var NcMediaFrameSchema = _enum([
|
|
|
17428
17433
|
"full",
|
|
17429
17434
|
"boxed"
|
|
17430
17435
|
]);
|
|
17436
|
+
/**
|
|
17437
|
+
* How a SENSOR notification shows the cameras that link the sensor.
|
|
17438
|
+
*
|
|
17439
|
+
* `mosaic` — one image composed of every linked camera's photograph, taken at
|
|
17440
|
+
* the trigger. `each` — one image per camera where the target takes several
|
|
17441
|
+
* attachments; a target that takes one keeps the first camera's (the degrade
|
|
17442
|
+
* engine drops the rest by order). Either way ONE notification per event.
|
|
17443
|
+
* Absent = `mosaic`, applied by the Notification Center and deliberately NOT
|
|
17444
|
+
* a Zod default (see NcRulePatchSchema: a default materialises on every
|
|
17445
|
+
* partial patch). Meaningless for a rule whose subject is not a sensor, and a
|
|
17446
|
+
* sensor linked to one camera ships that camera's plain snapshot either way.
|
|
17447
|
+
*/
|
|
17448
|
+
var NcLinkedCameraModeSchema = _enum(["mosaic", "each"]);
|
|
17431
17449
|
var NcMediaPolicySchema = object({
|
|
17432
17450
|
attach: _enum([
|
|
17433
17451
|
"best",
|
|
@@ -17473,7 +17491,9 @@ var NcMediaPolicySchema = object({
|
|
|
17473
17491
|
* A profile that is not assigned falls back to the cheapest, and the render
|
|
17474
17492
|
* reports which one actually ran.
|
|
17475
17493
|
*/
|
|
17476
|
-
profile: CamProfileSchema.optional()
|
|
17494
|
+
profile: CamProfileSchema.optional(),
|
|
17495
|
+
/** See {@link NcLinkedCameraModeSchema}. */
|
|
17496
|
+
linkedCameras: NcLinkedCameraModeSchema.optional()
|
|
17477
17497
|
});
|
|
17478
17498
|
/**
|
|
17479
17499
|
* Cooldown GRANULARITY over the subject's class — how much a fired
|
|
@@ -17593,7 +17613,7 @@ var NcRuleInputSchema = object({
|
|
|
17593
17613
|
cooldownSec: 60,
|
|
17594
17614
|
scope: "rule-device"
|
|
17595
17615
|
}),
|
|
17596
|
-
/** `{{var}}`
|
|
17616
|
+
/** `{{var}}` title/body. The variables are declared in `NC_TEMPLATE_VARS` (@camstack/types) and depend on the rule kind — see `templateVarsFor`. */
|
|
17597
17617
|
template: object({
|
|
17598
17618
|
title: string().max(500).optional(),
|
|
17599
17619
|
body: string().max(2e3).optional()
|
|
@@ -17773,6 +17793,22 @@ var NcRulePatchSchema = NcRuleInputSchema.partial().extend({
|
|
|
17773
17793
|
throttle: NcThrottleSchema.optional(),
|
|
17774
17794
|
priority: number().int().min(1).max(5).optional()
|
|
17775
17795
|
});
|
|
17796
|
+
var NcRuleClearableKeySchema = _enum([
|
|
17797
|
+
"template",
|
|
17798
|
+
"schedule",
|
|
17799
|
+
"targetUsers",
|
|
17800
|
+
"snoozeOptions",
|
|
17801
|
+
"snoozeAllowGlobal",
|
|
17802
|
+
"waitForEnhancement",
|
|
17803
|
+
"actions",
|
|
17804
|
+
"confirm",
|
|
17805
|
+
"groupIdleSec"
|
|
17806
|
+
]);
|
|
17807
|
+
var NcRuleUpdateInputSchema = object({
|
|
17808
|
+
ruleId: string(),
|
|
17809
|
+
patch: NcRulePatchSchema,
|
|
17810
|
+
clear: array(NcRuleClearableKeySchema).optional()
|
|
17811
|
+
});
|
|
17776
17812
|
/** A persisted rule. */
|
|
17777
17813
|
var NcRuleSchema = NcRuleInputSchema.extend({
|
|
17778
17814
|
id: string(),
|
|
@@ -17804,6 +17840,85 @@ var NcTestResultSchema = object({
|
|
|
17804
17840
|
className: string().optional(),
|
|
17805
17841
|
label: string().optional()
|
|
17806
17842
|
});
|
|
17843
|
+
/** The five rule kinds, as data. `NcRuleKind` in `notification/rule-kinds.ts`
|
|
17844
|
+
* is the same union; the template-vars spec pins the two together. */
|
|
17845
|
+
var NcRuleKindSchema = _enum([
|
|
17846
|
+
"detection",
|
|
17847
|
+
"sensor",
|
|
17848
|
+
"occupancy",
|
|
17849
|
+
"sound",
|
|
17850
|
+
"system"
|
|
17851
|
+
]);
|
|
17852
|
+
/** Which producer renders a template: an ordinary rule, a timelapse, a digest. */
|
|
17853
|
+
var NcTemplateFamilySchema = _enum([
|
|
17854
|
+
"rule",
|
|
17855
|
+
"timelapse",
|
|
17856
|
+
"summary"
|
|
17857
|
+
]);
|
|
17858
|
+
/** Which text field of that producer. `previewText` is the timelapse frame
|
|
17859
|
+
* caption, `captionText` the digest mosaic caption — both see fewer vars. */
|
|
17860
|
+
var NcTemplateFieldSchema = _enum([
|
|
17861
|
+
"title",
|
|
17862
|
+
"body",
|
|
17863
|
+
"previewText",
|
|
17864
|
+
"captionText"
|
|
17865
|
+
]);
|
|
17866
|
+
var NcTemplateVarGroupSchema = _enum([
|
|
17867
|
+
"subject",
|
|
17868
|
+
"place",
|
|
17869
|
+
"time",
|
|
17870
|
+
"rule",
|
|
17871
|
+
"occupancy",
|
|
17872
|
+
"sound",
|
|
17873
|
+
"sensor",
|
|
17874
|
+
"system",
|
|
17875
|
+
"digest",
|
|
17876
|
+
"ai"
|
|
17877
|
+
]);
|
|
17878
|
+
/**
|
|
17879
|
+
* ONE `{{var}}` a notification template may name.
|
|
17880
|
+
*
|
|
17881
|
+
* `families` / `fields` / `kinds` / `deliveries` / `systemEventKinds` say WHERE
|
|
17882
|
+
* it has a value; absent = no restriction on that axis. `systemEventKinds` is
|
|
17883
|
+
* read only for a `system` rule. `dynamic` declares a FAMILY of names
|
|
17884
|
+
* (`count_<class>`): the descriptor's `name` is the example member.
|
|
17885
|
+
*/
|
|
17886
|
+
var NcTemplateVarDescriptorSchema = object({
|
|
17887
|
+
name: string().regex(/^\w+$/),
|
|
17888
|
+
label: string(),
|
|
17889
|
+
description: string().optional(),
|
|
17890
|
+
example: string(),
|
|
17891
|
+
group: NcTemplateVarGroupSchema,
|
|
17892
|
+
families: array(NcTemplateFamilySchema).min(1),
|
|
17893
|
+
fields: array(NcTemplateFieldSchema).optional(),
|
|
17894
|
+
kinds: array(NcRuleKindSchema).optional(),
|
|
17895
|
+
deliveries: array(NcDeliverySchema).optional(),
|
|
17896
|
+
systemEventKinds: array(NcSystemEventKindSchema).optional(),
|
|
17897
|
+
dynamic: object({
|
|
17898
|
+
prefix: literal("count_"),
|
|
17899
|
+
from: literal("classes")
|
|
17900
|
+
}).optional()
|
|
17901
|
+
});
|
|
17902
|
+
/** Input to `previewTemplate` — the editor's own context, plus the draft text. */
|
|
17903
|
+
var NcTemplatePreviewInputSchema = object({
|
|
17904
|
+
context: object({
|
|
17905
|
+
family: NcTemplateFamilySchema,
|
|
17906
|
+
field: NcTemplateFieldSchema,
|
|
17907
|
+
kind: NcRuleKindSchema.optional(),
|
|
17908
|
+
delivery: NcDeliverySchema.optional(),
|
|
17909
|
+
systemEventKinds: array(NcSystemEventKindSchema).optional()
|
|
17910
|
+
}),
|
|
17911
|
+
template: object({
|
|
17912
|
+
title: string().max(500).optional(),
|
|
17913
|
+
body: string().max(2e3).optional()
|
|
17914
|
+
})
|
|
17915
|
+
});
|
|
17916
|
+
var NcTemplatePreviewSchema = object({
|
|
17917
|
+
title: string().nullable(),
|
|
17918
|
+
body: string().nullable(),
|
|
17919
|
+
/** Names the template uses that this context never fills — they render empty. */
|
|
17920
|
+
unknown: array(string())
|
|
17921
|
+
});
|
|
17807
17922
|
var NcConditionDescriptorSchema = object({
|
|
17808
17923
|
/** Field id inside `NcConditions` (or `'schedule'` for the rule-level group). */
|
|
17809
17924
|
id: string(),
|
|
@@ -18069,8 +18184,17 @@ object({
|
|
|
18069
18184
|
lastAt: number()
|
|
18070
18185
|
});
|
|
18071
18186
|
/**
|
|
18072
|
-
* The
|
|
18073
|
-
*
|
|
18187
|
+
* The per-mode lists, at most one per mode. Two lists for one mode have no
|
|
18188
|
+
* meaning a reader could agree on (union? the last one?), so they are refused
|
|
18189
|
+
* at the boundary rather than interpreted.
|
|
18190
|
+
*/
|
|
18191
|
+
var NcAlarmNonBlockingListSchema = array(object({
|
|
18192
|
+
mode: AlarmArmModeSchema,
|
|
18193
|
+
deviceIds: array(number().int()).max(200)
|
|
18194
|
+
})).max(8).refine((lists) => new Set(lists.map((l) => l.mode)).size === lists.length, { message: "nonBlocking: at most one list per arm mode" });
|
|
18195
|
+
/**
|
|
18196
|
+
* The three durations the panel's state machine runs on, who hears about its
|
|
18197
|
+
* transitions, and which openings each mode tolerates.
|
|
18074
18198
|
*
|
|
18075
18199
|
* They live on the NOTIFICATION-RULES cap, not on `alarm-panel`, on purpose:
|
|
18076
18200
|
* `alarm-panel` is `deviceNative` and its other provider mirrors somebody
|
|
@@ -18089,21 +18213,39 @@ var NcAlarmSettingsSchema = object({
|
|
|
18089
18213
|
* existed, and therefore what an untouched install keeps doing.
|
|
18090
18214
|
*/
|
|
18091
18215
|
triggeredDurationSec: number().int().min(0).max(3600),
|
|
18092
|
-
/** Send a notification when a mode takes effect. */
|
|
18093
|
-
announceArm: boolean(),
|
|
18094
18216
|
/**
|
|
18095
|
-
*
|
|
18217
|
+
* Deprecated by D630 — every transition is announced. Parsed, never read;
|
|
18218
|
+
* remove after one release. Optional so an older admin's patch (which still
|
|
18219
|
+
* sends it) parses rather than failing the whole save.
|
|
18220
|
+
*/
|
|
18221
|
+
announceArm: boolean().optional(),
|
|
18222
|
+
/**
|
|
18223
|
+
* Target ids from `notification-output`: every alarm transition goes here.
|
|
18096
18224
|
*
|
|
18097
|
-
* Explicit rather than "everyone": an
|
|
18225
|
+
* Explicit rather than "everyone": an alarm announcement is a household
|
|
18098
18226
|
* message, and broadcasting it to every configured endpoint (including a
|
|
18099
18227
|
* webhook wired to something else) is not a default anybody would choose.
|
|
18100
|
-
* Empty
|
|
18101
|
-
*
|
|
18228
|
+
* Empty sends nothing, and the server logs that — silence must be
|
|
18229
|
+
* attributable.
|
|
18102
18230
|
*/
|
|
18103
|
-
announceTargets: array(string().min(1)).max(16)
|
|
18231
|
+
announceTargets: array(string().min(1)).max(16),
|
|
18232
|
+
/**
|
|
18233
|
+
* Per arm mode, the covered devices whose being OPEN does not refuse the
|
|
18234
|
+
* arm (a window left ajar for the cat under `home`, say). At most one entry
|
|
18235
|
+
* per mode is meaningful. Defaulted to `[]` so a blob stored before D630
|
|
18236
|
+
* parses as "every opening blocks" — the behaviour it was written under.
|
|
18237
|
+
*/
|
|
18238
|
+
nonBlocking: NcAlarmNonBlockingListSchema.default([])
|
|
18104
18239
|
});
|
|
18105
|
-
/**
|
|
18106
|
-
|
|
18240
|
+
/**
|
|
18241
|
+
* Every field optional — a tab edits one control at a time.
|
|
18242
|
+
*
|
|
18243
|
+
* `nonBlocking` is re-declared WITHOUT its default: `.partial()` does not
|
|
18244
|
+
* remove an inner `.default()`, so a patch that never named the field would
|
|
18245
|
+
* parse to `nonBlocking: []` and wipe every mode's list on an unrelated edit
|
|
18246
|
+
* (the same trap {@link NcRulePatchSchema} documents).
|
|
18247
|
+
*/
|
|
18248
|
+
var NcAlarmSettingsPatchSchema = NcAlarmSettingsSchema.extend({ nonBlocking: NcAlarmNonBlockingListSchema }).partial();
|
|
18107
18249
|
/**
|
|
18108
18250
|
* What one arm mode actually arms, DERIVED from the enabled rules gated on it.
|
|
18109
18251
|
* Never authored, never stored — see `alarm-mode-coverage.ts` for why a stored
|
|
@@ -18148,6 +18290,36 @@ var NcAlarmModeCoverageSchema = object({
|
|
|
18148
18290
|
*/
|
|
18149
18291
|
skippedDevices: array(NcAlarmSkippedDeviceSchema).default([])
|
|
18150
18292
|
});
|
|
18293
|
+
/** One covered device that reads open, and whether that refuses the arm. */
|
|
18294
|
+
var NcAlarmOpeningSchema = object({
|
|
18295
|
+
deviceId: number().int(),
|
|
18296
|
+
name: string(),
|
|
18297
|
+
/** The device's state word as read (`open`, `unlocked`, …). */
|
|
18298
|
+
state: string(),
|
|
18299
|
+
/** False when the mode's non-blocking list names this device. */
|
|
18300
|
+
blocking: boolean()
|
|
18301
|
+
});
|
|
18302
|
+
/** A device the panel is currently ignoring, and which side of it it is on. */
|
|
18303
|
+
var NcAlarmExclusionViewSchema = object({
|
|
18304
|
+
deviceId: number().int(),
|
|
18305
|
+
name: string(),
|
|
18306
|
+
phase: _enum(["open", "closed"])
|
|
18307
|
+
});
|
|
18308
|
+
/** One mode's openings: devices read open, plus those whose state is unknown. */
|
|
18309
|
+
var NcAlarmModeOpeningsSchema = object({
|
|
18310
|
+
mode: AlarmArmModeSchema,
|
|
18311
|
+
devices: array(NcAlarmOpeningSchema),
|
|
18312
|
+
/** Covered devices whose state could not be read (D49): neither open nor closed. */
|
|
18313
|
+
unknown: array(number().int())
|
|
18314
|
+
});
|
|
18315
|
+
var NcAlarmLiveSchema = object({
|
|
18316
|
+
state: AlarmStateSchema,
|
|
18317
|
+
/** The mode being armed into (exit delay) or held; null when disarmed. */
|
|
18318
|
+
targetMode: AlarmArmModeSchema.nullable(),
|
|
18319
|
+
availableModes: array(AlarmArmModeSchema),
|
|
18320
|
+
openings: array(NcAlarmModeOpeningsSchema),
|
|
18321
|
+
exclusions: array(NcAlarmExclusionViewSchema)
|
|
18322
|
+
});
|
|
18151
18323
|
var NcAlarmConfigSchema = object({
|
|
18152
18324
|
/**
|
|
18153
18325
|
* The panel's device id, or null when this install has no panel (the ensure
|
|
@@ -18157,7 +18329,13 @@ var NcAlarmConfigSchema = object({
|
|
|
18157
18329
|
*/
|
|
18158
18330
|
deviceId: number().int().nullable(),
|
|
18159
18331
|
settings: NcAlarmSettingsSchema,
|
|
18160
|
-
coverage: array(NcAlarmModeCoverageSchema)
|
|
18332
|
+
coverage: array(NcAlarmModeCoverageSchema),
|
|
18333
|
+
/**
|
|
18334
|
+
* The panel as it is NOW — state, what each mode would find open, what is
|
|
18335
|
+
* excluded. Optional: a panel-less hub answers without it, and a client
|
|
18336
|
+
* must not read its absence as "nothing is open".
|
|
18337
|
+
*/
|
|
18338
|
+
live: NcAlarmLiveSchema.optional()
|
|
18161
18339
|
});
|
|
18162
18340
|
/**
|
|
18163
18341
|
* ONE rule's demand on ONE camera's clip ring.
|
|
@@ -18205,10 +18383,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
18205
18383
|
kind: "mutation",
|
|
18206
18384
|
auth: "admin",
|
|
18207
18385
|
caller: "required"
|
|
18208
|
-
}), method(object({
|
|
18209
|
-
ruleId: string(),
|
|
18210
|
-
patch: NcRulePatchSchema
|
|
18211
|
-
}), object({ rule: NcRuleSchema }), {
|
|
18386
|
+
}), method(NcRuleUpdateInputSchema, object({ rule: NcRuleSchema }), {
|
|
18212
18387
|
kind: "mutation",
|
|
18213
18388
|
auth: "admin",
|
|
18214
18389
|
caller: "required"
|
|
@@ -18236,7 +18411,10 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
18236
18411
|
}), method(object({}), object({
|
|
18237
18412
|
catalog: array(NcConditionDescriptorSchema),
|
|
18238
18413
|
taxonomy: NcTaxonomySchema.optional()
|
|
18239
|
-
})), method(object({
|
|
18414
|
+
})), method(object({}), object({ vars: array(NcTemplateVarDescriptorSchema) })), method(NcTemplatePreviewInputSchema, NcTemplatePreviewSchema, {
|
|
18415
|
+
kind: "mutation",
|
|
18416
|
+
access: "view"
|
|
18417
|
+
}), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
18240
18418
|
kind: "mutation",
|
|
18241
18419
|
caller: "required"
|
|
18242
18420
|
}), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
|
|
@@ -22669,6 +22847,7 @@ var CAP_TO_KIND = {
|
|
|
22669
22847
|
"enum-sensor": "enum-sensor",
|
|
22670
22848
|
"event-emitter": "device-event",
|
|
22671
22849
|
"lock-control": "lock",
|
|
22850
|
+
cover: "cover",
|
|
22672
22851
|
switch: "switch",
|
|
22673
22852
|
button: "button",
|
|
22674
22853
|
doorbell: "doorbell"
|
|
@@ -37995,6 +38174,12 @@ Object.freeze({
|
|
|
37995
38174
|
addonId: null,
|
|
37996
38175
|
access: "view"
|
|
37997
38176
|
},
|
|
38177
|
+
"notificationRules.getTemplateCatalog": {
|
|
38178
|
+
capName: "notification-rules",
|
|
38179
|
+
capScope: "system",
|
|
38180
|
+
addonId: null,
|
|
38181
|
+
access: "view"
|
|
38182
|
+
},
|
|
37998
38183
|
"notificationRules.listDeviceMutes": {
|
|
37999
38184
|
capName: "notification-rules",
|
|
38000
38185
|
capScope: "system",
|
|
@@ -38013,6 +38198,12 @@ Object.freeze({
|
|
|
38013
38198
|
addonId: null,
|
|
38014
38199
|
access: "view"
|
|
38015
38200
|
},
|
|
38201
|
+
"notificationRules.previewTemplate": {
|
|
38202
|
+
capName: "notification-rules",
|
|
38203
|
+
capScope: "system",
|
|
38204
|
+
addonId: null,
|
|
38205
|
+
access: "view"
|
|
38206
|
+
},
|
|
38016
38207
|
"notificationRules.resolveArtifactUrl": {
|
|
38017
38208
|
capName: "notification-rules",
|
|
38018
38209
|
capScope: "system",
|
|
@@ -43580,6 +43771,37 @@ var NC_AUDIO_DEFAULTS = {
|
|
|
43580
43771
|
};
|
|
43581
43772
|
new Set(["devices", "classes"]);
|
|
43582
43773
|
NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
|
|
43774
|
+
var RULE_BODY_ONLY = ["body"];
|
|
43775
|
+
var RULE_TEXT = ["title", "body"];
|
|
43776
|
+
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
43777
|
+
var CONSUMABLE = ["device-consumable-low", "device-consumable-normal"];
|
|
43778
|
+
var UPDATES = [
|
|
43779
|
+
"addon-update-available",
|
|
43780
|
+
"server-update-available",
|
|
43781
|
+
"wrapper-update-available"
|
|
43782
|
+
];
|
|
43783
|
+
var PACKAGE_UPDATES = ["addon-update-available", "server-update-available"];
|
|
43784
|
+
var ALARM = [
|
|
43785
|
+
"alarm-triggered",
|
|
43786
|
+
"alarm-armed",
|
|
43787
|
+
"alarm-disarmed",
|
|
43788
|
+
"alarm-arming",
|
|
43789
|
+
"alarm-arm-refused"
|
|
43790
|
+
];
|
|
43791
|
+
var COMBINED_ALARM = ["alarm-triggered"];
|
|
43792
|
+
var DEVICE_EVENTS = [
|
|
43793
|
+
"device-online",
|
|
43794
|
+
"device-offline",
|
|
43795
|
+
"device-disabled",
|
|
43796
|
+
"device-enabled",
|
|
43797
|
+
...BATTERY,
|
|
43798
|
+
...CONSUMABLE,
|
|
43799
|
+
"stream-online",
|
|
43800
|
+
"stream-offline",
|
|
43801
|
+
"detection-blind",
|
|
43802
|
+
...ALARM
|
|
43803
|
+
];
|
|
43804
|
+
[...DEVICE_EVENTS], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...COMBINED_ALARM], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_BODY_ONLY], [...RULE_TEXT], [...RULE_TEXT], [...DEVICE_EVENTS], [...RULE_TEXT], [...DEVICE_EVENTS], [...RULE_TEXT], [...BATTERY, ...CONSUMABLE], [...RULE_TEXT], [...CONSUMABLE], [...RULE_TEXT], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...UPDATES], [...RULE_TEXT], [...PACKAGE_UPDATES], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT], [...RULE_TEXT];
|
|
43583
43805
|
/**
|
|
43584
43806
|
* TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
|
|
43585
43807
|
*
|
|
@@ -44074,7 +44296,7 @@ var AdminUIAddon = class extends BaseAddon {
|
|
|
44074
44296
|
capability: adminUiCapability,
|
|
44075
44297
|
provider: {
|
|
44076
44298
|
getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
|
|
44077
|
-
getVersion: async () => ({ version: "1.2.
|
|
44299
|
+
getVersion: async () => ({ version: "1.2.260" })
|
|
44078
44300
|
}
|
|
44079
44301
|
}];
|
|
44080
44302
|
}
|