@camstack/addon-admin-ui 1.2.259 → 1.2.261

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 (81) hide show
  1. package/dist/assets/{AddonCollectionPage-jmmQbNlm.js → AddonCollectionPage--eDij6gR.js} +1 -1
  2. package/dist/assets/{Addons-BsSGWb_z.js → Addons-DPcMLHlz.js} +1 -1
  3. package/dist/assets/{AdminTabs-DPQzm8ja.js → AdminTabs-BK7N8lsV.js} +1 -1
  4. package/dist/assets/{AiProfiles-W9aPBPZe.js → AiProfiles-B7jyJdda.js} +1 -1
  5. package/dist/assets/{BrokerForm-CVQ-rA2N.js → BrokerForm-ITsMv2qE.js} +1 -1
  6. package/dist/assets/{Build-DKhq3ZPS.js → Build-BBPfMW38.js} +1 -1
  7. package/dist/assets/{Capabilities-66Fkb86a.js → Capabilities-CuUy6amU.js} +1 -1
  8. package/dist/assets/{CapabilityBadges-BxsPe5Zv.js → CapabilityBadges-crNVvPMW.js} +1 -1
  9. package/dist/assets/{Cluster-D_iZDJn0.js → Cluster-CTZlYWRi.js} +1 -1
  10. package/dist/assets/{Data-DWc_uUjG.js → Data-vU8VVocG.js} +1 -1
  11. package/dist/assets/{DetectionIntelligence-7vWzLsQf.js → DetectionIntelligence-CsXbDOMG.js} +1 -1
  12. package/dist/assets/{DeviceAggregateSection-CKoUTomJ.js → DeviceAggregateSection-Bns6q4dh.js} +1 -1
  13. package/dist/assets/{DeviceDetail-D8Wt4euP.js → DeviceDetail-Bf9bvxlm.js} +1 -1
  14. package/dist/assets/{Devices-DPQUPRve.js → Devices-DyfNHzjP.js} +1 -1
  15. package/dist/assets/{EmbedPlayerPage-CwCK4H7y.js → EmbedPlayerPage-OeC5zBSX.js} +1 -1
  16. package/dist/assets/{Events-Ckv4KkpG.js → Events-bi-6IwJN.js} +1 -1
  17. package/dist/assets/{FormBuilder-OQj-b3vo.js → FormBuilder-GwoY4eBk.js} +1 -1
  18. package/dist/assets/{Identity-DimZNUxf.js → Identity-BBIh2my-.js} +1 -1
  19. package/dist/assets/{IntegrationDetail-C-DRNloj.js → IntegrationDetail-CKWEoy9C.js} +1 -1
  20. package/dist/assets/{Integrations-BqzMaD-1.js → Integrations-BWWIE00S.js} +1 -1
  21. package/dist/assets/{Integrations-B9OOxvsb.js → Integrations-Ciw2g5r2.js} +1 -1
  22. package/dist/assets/{Locations-B4yncwki.js → Locations-2ZAHX5o0.js} +1 -1
  23. package/dist/assets/{Logs-DWmSJIzl.js → Logs-D671CkLk.js} +1 -1
  24. package/dist/assets/{MotionZonesSettings-BJ4XzX38.js → MotionZonesSettings-BLY_TxNO.js} +1 -1
  25. package/dist/assets/{MyAccess-BaioSuA9.js → MyAccess-DhSsXA2u.js} +1 -1
  26. package/dist/assets/{Network-sYvTsGXU.js → Network-B2odAKC8.js} +1 -1
  27. package/dist/assets/{NodeAddonsSettingsPanel-CNk8xstc.js → NodeAddonsSettingsPanel-D5FQHmR2.js} +1 -1
  28. package/dist/assets/{NodeInferenceDevices-DvkNwX7-.js → NodeInferenceDevices-C7Az-W_O.js} +1 -1
  29. package/dist/assets/Notifications-Blz8iPpb.js +1 -0
  30. package/dist/assets/{Pipeline-KySyNzp2.js → Pipeline-DoJ8nNnx.js} +1 -1
  31. package/dist/assets/{Plates-DAsfL6eC.js → Plates-IKZ7Utth.js} +1 -1
  32. package/dist/assets/{PrivacyMaskSettings-P1egG4Gq.js → PrivacyMaskSettings-CqzEZNtz.js} +1 -1
  33. package/dist/assets/{ProviderIcon-vyz-QK1L.js → ProviderIcon-BAV-Rvhs.js} +1 -1
  34. package/dist/assets/{Recordings-CNgGUlGk.js → Recordings-BP0eyo5u.js} +1 -1
  35. package/dist/assets/{ScanNetworkModal-BvSevznk.js → ScanNetworkModal-CU9cvVBy.js} +1 -1
  36. package/dist/assets/{SceneMonitorEditor-MEJ8MP4m.js → SceneMonitorEditor-v5nh2Lxc.js} +1 -1
  37. package/dist/assets/{Scenes-D8UmCN0j.js → Scenes-D1EvPYdu.js} +1 -1
  38. package/dist/assets/{Settings-YaOCkIql.js → Settings-dgHQMbm7.js} +1 -1
  39. package/dist/assets/{Showroom-Bg4x9Lzt.js → Showroom-CsAbqvVD.js} +1 -1
  40. package/dist/assets/{StorageLocationsPanel-BE5hB2Aa.js → StorageLocationsPanel-C2e4eB8x.js} +1 -1
  41. package/dist/assets/{Terminal-CHm5FlVJ.js → Terminal-hYboOO7b.js} +1 -1
  42. package/dist/assets/{Viewer-DLAPFaHz.js → Viewer-B02QBhjE.js} +1 -1
  43. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BiTKILzZ.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BKuXrkMW.js} +1 -1
  44. package/dist/assets/{archive-DydHm7oC.js → archive-DIvzskcI.js} +1 -1
  45. package/dist/assets/{authed-media-Cpcnxxci.js → authed-media-Bd-QFC5W.js} +1 -1
  46. package/dist/assets/{boxes-Tzjsnk2Q.js → boxes-CSKKBi4u.js} +1 -1
  47. package/dist/assets/circle-slash-CteLsla4.js +1 -0
  48. package/dist/assets/{debounced-invalidate-BShXPTRg.js → debounced-invalidate-BV3nDQPS.js} +1 -1
  49. package/dist/assets/dist-BbIc-rCH.js +349 -0
  50. package/dist/assets/{dist-4gnU2Lg3.js → dist-C4v18q8H.js} +1 -1
  51. package/dist/assets/{face-bbox-B7yuZrNl.js → face-bbox-BvbTxaCS.js} +1 -1
  52. package/dist/assets/{hard-drive-download-PRhNyH2U.js → hard-drive-download-B2GSnQHz.js} +1 -1
  53. package/dist/assets/{hostInit-C4xQoYJ9.js → hostInit-DSbv4-s9.js} +1 -1
  54. package/dist/assets/{index-BtoTwa3A.js → index-DAAsNMtg.js} +3 -3
  55. package/dist/assets/{layers-l0ePwwTT.js → layers-BBmKM8YT.js} +1 -1
  56. package/dist/assets/{location-owned-usage-DLAg7bui.js → location-owned-usage-kZ5sn58L.js} +1 -1
  57. package/dist/assets/{mf-entry-bootstrap-0-f9201282.js → mf-entry-bootstrap-0-86b82436.js} +2 -2
  58. package/dist/assets/{player-overlays-BAhe5OxX.js → player-overlays-DRIy-fCw.js} +1 -1
  59. package/dist/assets/remoteEntry-554FIKL7.js +1 -0
  60. package/dist/assets/{send-CR2WbB-q.js → send-DHfS_uWJ.js} +1 -1
  61. package/dist/assets/{settings-2-DamfG3Rr.js → settings-2-BBZVr4ih.js} +1 -1
  62. package/dist/assets/{square-check-big-CyRsLf9w.js → square-check-big-D11rDTUh.js} +1 -1
  63. package/dist/assets/src-CsP-9WJl.js +349 -0
  64. package/dist/assets/src-CvEqSgs7.js +67 -0
  65. package/dist/assets/{use-scenes-feed-CzKPS2XP.js → use-scenes-feed-BrKLinIU.js} +1 -1
  66. package/dist/assets/{use-stationary-objects-CldTVGD6.js → use-stationary-objects-BK5BDo2O.js} +1 -1
  67. package/dist/assets/useEventInvalidation-apdOrvxA.js +1 -0
  68. package/dist/assets/{useNodeUrlSelection-BrPudXce.js → useNodeUrlSelection-DjLiOaP3.js} +1 -1
  69. package/dist/assets/user-round-kptqRABF.js +1 -0
  70. 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_-BmTwfqc6.js} +2 -2
  71. package/dist/index.html +5 -5
  72. package/dist/server/addon.js +247 -21
  73. package/package.json +1 -1
  74. package/dist/assets/Notifications-DNjGTYu9.js +0 -1
  75. package/dist/assets/circle-slash-P5b6wYJL.js +0 -1
  76. package/dist/assets/dist--FGB4WO5.js +0 -349
  77. package/dist/assets/remoteEntry-DTRY01rz.js +0 -1
  78. package/dist/assets/src-CUaqZLmc.js +0 -349
  79. package/dist/assets/src-DrOD3ogD.js +0 -67
  80. package/dist/assets/useEventInvalidation-Clg20sS7.js +0 -1
  81. package/dist/assets/user-round-DONmU94i.js +0 -1
@@ -5361,7 +5361,7 @@ var ZodIssueCode = {
5361
5361
  var ZodFirstPartyTypeKind;
5362
5362
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5363
5363
  //#endregion
5364
- //#region ../types/dist/sleep-PEo0-Fz9.mjs
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}}` templating over camera/class/label/zones/confidence/time. */
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 three durations the panel's state machine runs on, plus who hears about
18073
- * an arm.
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
- * Where that notification goes. Target ids from `notification-output`.
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 arm announcement is a household
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 with `announceArm: true` sends nothing, and the server logs that —
18101
- * silence must be attributable.
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
- /** Every field optional — a tab edits one control at a time. */
18106
- var NcAlarmSettingsPatchSchema = NcAlarmSettingsSchema.partial();
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({ 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 }), {
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,41 @@ 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
+ "alarm-pending",
43791
+ "alarm-rearmed",
43792
+ "alarm-sensor-bypass",
43793
+ "alarm-check-failed"
43794
+ ];
43795
+ var COMBINED_ALARM = ["alarm-triggered"];
43796
+ var DEVICE_EVENTS = [
43797
+ "device-online",
43798
+ "device-offline",
43799
+ "device-disabled",
43800
+ "device-enabled",
43801
+ ...BATTERY,
43802
+ ...CONSUMABLE,
43803
+ "stream-online",
43804
+ "stream-offline",
43805
+ "detection-blind",
43806
+ ...ALARM
43807
+ ];
43808
+ [...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
43809
  /**
43584
43810
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
43585
43811
  *
@@ -44074,7 +44300,7 @@ var AdminUIAddon = class extends BaseAddon {
44074
44300
  capability: adminUiCapability,
44075
44301
  provider: {
44076
44302
  getStaticDir: async () => ({ staticDir: resolveAdminUiDistDir() }),
44077
- getVersion: async () => ({ version: "1.2.259" })
44303
+ getVersion: async () => ({ version: "1.2.261" })
44078
44304
  }
44079
44305
  }];
44080
44306
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-admin-ui",
3
- "version": "1.2.259",
3
+ "version": "1.2.261",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Admin UI — Vite frontend build and server-side addon",