@camstack/addon-provider-onvif 1.2.142 → 1.2.144

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/addon.js CHANGED
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region \0rolldown/runtime.js
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  //#endregion
5
- //#region ../types/dist/event-category-DOl51-Ij.mjs
5
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
6
6
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
7
7
  EventCategory["SystemBoot"] = "system.boot";
8
8
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -319,6 +319,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
319
319
  */
320
320
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
321
321
  /**
322
+ * A camera's motion source has fired constantly with no subject for an hour
323
+ * (motion duty or session count over the bar, zero detections) — it is not
324
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
325
+ * {@link PipelineMotionCalm}.
326
+ */
327
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
328
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
329
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
330
+ /**
322
331
  * Per-camera pipeline config was mutated by the orchestrator
323
332
  * (3-level settings change via `setAgentAddonDefaults` /
324
333
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -690,6 +699,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
690
699
  EventCategory["BackupRestored"] = "backup.restored";
691
700
  EventCategory["NotificationDispatched"] = "notification.dispatched";
692
701
  EventCategory["NotificationFailed"] = "notification.failed";
702
+ /**
703
+ * A notification rule that cannot work (D905): its stored row does not load,
704
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
705
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
706
+ */
707
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
708
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
709
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
693
710
  EventCategory["DeviceUpdated"] = "device.updated";
694
711
  /**
695
712
  * Transport-level connectivity. Emitted by the device driver when
@@ -5417,7 +5434,7 @@ var ZodIssueCode = {
5417
5434
  var ZodFirstPartyTypeKind;
5418
5435
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5419
5436
  //#endregion
5420
- //#region ../types/dist/sleep-_sV1BE2f.mjs
5437
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5421
5438
  /**
5422
5439
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5423
5440
  * window to float samples (D455).
@@ -7879,7 +7896,7 @@ var EntryDescriptorSchema = object({
7879
7896
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
7880
7897
  fields: record(string(), unknown())
7881
7898
  }).strict();
7882
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
7899
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
7883
7900
  var RecordKindDeclarationSchema = object({
7884
7901
  database: _enum(RECORD_DATABASES).default("settings"),
7885
7902
  class: _enum(RECORD_CLASSES),
@@ -7898,14 +7915,6 @@ var RecordKindDeclarationSchema = object({
7898
7915
  secretPaths: array(string().min(1)).default([]),
7899
7916
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
7900
7917
  secretArrayKeys: record(string(), string()).default({}),
7901
- /**
7902
- * RETIRED (D900): the legacy table a kind adopted from during the records
7903
- * migration. Nothing declares it any more and nothing reads it; the schema
7904
- * still ACCEPTS it because the catalog rows the migration wrote carry it
7905
- * (an orphaned kind is never redeclared) and an addon built before the
7906
- * removal still sends it. Never set it.
7907
- */
7908
- adoptsFrom: string().min(1).optional(),
7909
7918
  /** Kinds that must agree through `transact` sit in one file under one family name. */
7910
7919
  transactFamily: string().min(1).optional(),
7911
7920
  entry: EntryDescriptorSchema.optional()
@@ -12579,17 +12588,6 @@ object({
12579
12588
  createdAt: number(),
12580
12589
  updatedAt: number()
12581
12590
  });
12582
- object({
12583
- id: string(),
12584
- label: string(),
12585
- isAdmin: boolean().default(false),
12586
- allowedProviders: AllowedProviderSchema,
12587
- allowedDevices: AllowedDevicesSchema,
12588
- tokenHash: string(),
12589
- tokenPrefix: string(),
12590
- createdAt: number(),
12591
- lastUsedAt: number().optional()
12592
- });
12593
12591
  object({
12594
12592
  id: string(),
12595
12593
  userId: string(),
@@ -16465,16 +16463,36 @@ var RecordKindStateSchema = _enum([
16465
16463
  var DeclareKindResultSchema = object({
16466
16464
  kindId: number().int(),
16467
16465
  state: RecordKindStateSchema,
16468
- createdIndexes: array(string()),
16469
- /**
16470
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16471
- * it stays on the wire, null, because an addon built before the removal reads
16472
- * an ABSENT field as "adoption pending" and refuses to start.
16473
- */
16474
- adoptionPending: _null()
16466
+ createdIndexes: array(string())
16475
16467
  });
16476
16468
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16477
16469
  var SecretRefsList = array(string());
16470
+ /**
16471
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16472
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16473
+ */
16474
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16475
+ object({
16476
+ op: literal("put"),
16477
+ kind: RecordKindNameSchema,
16478
+ record: RecordInputSchema,
16479
+ ifRev: number().int().min(0).optional()
16480
+ }),
16481
+ object({
16482
+ op: literal("patch"),
16483
+ kind: RecordKindNameSchema,
16484
+ id: RecordIdSchema,
16485
+ data: RecordBodySchema,
16486
+ at: number().int().nullable().optional(),
16487
+ expiresAt: number().int().nullable().optional(),
16488
+ ifRev: number().int().min(1).optional()
16489
+ }),
16490
+ object({
16491
+ op: literal("delete"),
16492
+ kind: RecordKindNameSchema,
16493
+ id: RecordIdSchema
16494
+ })
16495
+ ]);
16478
16496
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16479
16497
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16480
16498
  kind: "mutation",
@@ -16581,6 +16599,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16581
16599
  }), {
16582
16600
  kind: "mutation",
16583
16601
  auth: "admin"
16602
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
16603
+ results: array(object({
16604
+ rev: number().int().nullable(),
16605
+ deleted: boolean()
16606
+ })),
16607
+ releasedRefs: SecretRefsList,
16608
+ secretRefs: SecretRefsList
16609
+ }), {
16610
+ kind: "mutation",
16611
+ auth: "admin"
16584
16612
  }), method(object({
16585
16613
  deviceId: number().int(),
16586
16614
  kinds: array(RecordKindNameSchema).optional()
@@ -42133,9 +42161,13 @@ var NcSystemEventKindSchema = _enum([
42133
42161
  "node-updating",
42134
42162
  "node-inference-unavailable",
42135
42163
  "detection-blind",
42164
+ "motion-noisy",
42165
+ "motion-calm",
42136
42166
  "recording-stalled",
42137
42167
  "recording-healthy",
42138
42168
  "recording-degraded",
42169
+ "device-attention-required",
42170
+ "device-attention-resolved",
42139
42171
  "storage-location-low",
42140
42172
  "storage-location-critical",
42141
42173
  "storage-location-ok",
@@ -42159,6 +42191,8 @@ var NcSystemEventKindSchema = _enum([
42159
42191
  "alert-critical",
42160
42192
  "alert-error",
42161
42193
  "alert-critical-resolved",
42194
+ "rule-broken",
42195
+ "rule-repaired",
42162
42196
  "camera-online",
42163
42197
  "camera-offline",
42164
42198
  "camera-disabled",
@@ -54694,6 +54728,16 @@ object({
54694
54728
  powerState: string().nullable(),
54695
54729
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54696
54730
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54731
+ /**
54732
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54733
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54734
+ * when none is reported. A cleared reminder is not an unknown one.
54735
+ */
54736
+ filterCleaningDue: boolean().nullable(),
54737
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54738
+ machineCareDue: boolean().nullable(),
54739
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54740
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54697
54741
  /** Option states: null when the appliance does not expose the option or has not said. */
54698
54742
  halfLoad: boolean().nullable(),
54699
54743
  hygienePlus: boolean().nullable(),
@@ -61403,16 +61447,6 @@ var UpdateUserInputSchema = object({
61403
61447
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61404
61448
  scopes: array(TokenScopeSchema).optional()
61405
61449
  });
61406
- var ApiKeySummarySchema = object({
61407
- id: string(),
61408
- label: string(),
61409
- isAdmin: boolean().default(false),
61410
- allowedProviders: union([array(string()), literal("*")]).optional(),
61411
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61412
- tokenPrefix: string(),
61413
- createdAt: number(),
61414
- lastUsedAt: number().optional()
61415
- });
61416
61450
  var OauthSessionSummarySchema = object({
61417
61451
  id: string(),
61418
61452
  userId: string(),
@@ -61434,8 +61468,7 @@ var TotpStatusSchema = object({
61434
61468
  confirmedAt: number().nullable()
61435
61469
  });
61436
61470
  /**
61437
- * user-management — singleton capability for user accounts and the
61438
- * legacy API-key rows.
61471
+ * user-management — singleton capability for user accounts.
61439
61472
  *
61440
61473
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61441
61474
  * — the subset check on `setUserScopes` is moot
@@ -61491,10 +61524,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61491
61524
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61492
61525
  kind: "mutation",
61493
61526
  access: "view"
61494
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61495
- kind: "mutation",
61496
- auth: "admin",
61497
- access: "delete"
61498
61527
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61499
61528
  kind: "mutation",
61500
61529
  auth: "admin",
@@ -69832,6 +69861,12 @@ Object.freeze({
69832
69861
  addonId: null,
69833
69862
  access: "view"
69834
69863
  },
69864
+ "records.transact": {
69865
+ capName: "records",
69866
+ capScope: "system",
69867
+ addonId: null,
69868
+ access: "create"
69869
+ },
69835
69870
  "sceneMonitor.captureReference": {
69836
69871
  capName: "scene-monitor",
69837
69872
  capScope: "device",
@@ -71164,12 +71199,6 @@ Object.freeze({
71164
71199
  addonId: null,
71165
71200
  access: "view"
71166
71201
  },
71167
- "userManagement.listApiKeys": {
71168
- capName: "user-management",
71169
- capScope: "system",
71170
- addonId: null,
71171
- access: "view"
71172
- },
71173
71202
  "userManagement.listExternalIdentities": {
71174
71203
  capName: "user-management",
71175
71204
  capScope: "system",
@@ -71224,12 +71253,6 @@ Object.freeze({
71224
71253
  addonId: null,
71225
71254
  access: "create"
71226
71255
  },
71227
- "userManagement.revokeApiKey": {
71228
- capName: "user-management",
71229
- capScope: "system",
71230
- addonId: null,
71231
- access: "delete"
71232
- },
71233
71256
  "userManagement.revokeOauthSession": {
71234
71257
  capName: "user-management",
71235
71258
  capScope: "system",
@@ -74660,9 +74683,13 @@ new Map(Object.entries({
74660
74683
  "stream-online": "device-events",
74661
74684
  "stream-offline": "device-events",
74662
74685
  "detection-blind": "device-events",
74686
+ "motion-noisy": "device-events",
74687
+ "motion-calm": "device-events",
74663
74688
  "recording-stalled": "device-events",
74664
74689
  "recording-healthy": "device-events",
74665
74690
  "recording-degraded": "device-events",
74691
+ "device-attention-required": "device-events",
74692
+ "device-attention-resolved": "device-events",
74666
74693
  "node-online": "system",
74667
74694
  "node-offline": "system",
74668
74695
  "node-restarting": "system",
@@ -74679,6 +74706,8 @@ new Map(Object.entries({
74679
74706
  "alert-critical": "system",
74680
74707
  "alert-error": "system",
74681
74708
  "alert-critical-resolved": "system",
74709
+ "rule-broken": "system",
74710
+ "rule-repaired": "system",
74682
74711
  "storage-location-low": "system",
74683
74712
  "storage-location-critical": "system",
74684
74713
  "storage-location-ok": "system",
@@ -74743,6 +74772,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74743
74772
  label: "Detecting nothing",
74744
74773
  kinds: ["detection-blind"]
74745
74774
  },
74775
+ {
74776
+ id: "motion-noise",
74777
+ family: "device-events",
74778
+ label: "Motion without a subject",
74779
+ kinds: ["motion-noisy", "motion-calm"]
74780
+ },
74746
74781
  {
74747
74782
  id: "recording",
74748
74783
  family: "device-events",
@@ -74753,6 +74788,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74753
74788
  "recording-degraded"
74754
74789
  ]
74755
74790
  },
74791
+ {
74792
+ id: "device-attention",
74793
+ family: "device-events",
74794
+ label: "Needs attention",
74795
+ kinds: ["device-attention-required", "device-attention-resolved"]
74796
+ },
74756
74797
  {
74757
74798
  id: "nodes",
74758
74799
  family: "system",
@@ -74813,6 +74854,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74813
74854
  "alert-critical-resolved"
74814
74855
  ]
74815
74856
  },
74857
+ {
74858
+ id: "rule-health",
74859
+ family: "system",
74860
+ label: "Notification rules",
74861
+ kinds: ["rule-broken", "rule-repaired"]
74862
+ },
74816
74863
  {
74817
74864
  id: "alarm",
74818
74865
  family: "alarm",
@@ -74886,6 +74933,7 @@ var ALERT_EPISODE = [
74886
74933
  "alert-error",
74887
74934
  "alert-critical-resolved"
74888
74935
  ];
74936
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74889
74937
  var UPDATES = [
74890
74938
  "addon-update-available",
74891
74939
  "server-update-available",
@@ -74915,9 +74963,12 @@ var DEVICE_EVENTS = [
74915
74963
  "stream-online",
74916
74964
  "stream-offline",
74917
74965
  "detection-blind",
74966
+ "motion-noisy",
74967
+ "motion-calm",
74918
74968
  "recording-stalled",
74919
74969
  "recording-healthy",
74920
74970
  "recording-degraded",
74971
+ ...DEVICE_ATTENTION,
74921
74972
  ...ALARM
74922
74973
  ];
74923
74974
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -75085,7 +75136,13 @@ var STATE_SUMMARY_VARS = [
75085
75136
  [...RULE_TEXT],
75086
75137
  [...RULE_TEXT],
75087
75138
  [...RULE_TEXT],
75088
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75139
+ [...RULE_TEXT],
75140
+ [...RULE_TEXT],
75141
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75142
+ [...RULE_TEXT],
75143
+ [...RULE_TEXT],
75144
+ [...RULE_TEXT],
75145
+ [...RULE_TEXT],
75089
75146
  [...RULE_TEXT],
75090
75147
  [...RULE_TEXT],
75091
75148
  [...RULE_TEXT],
@@ -75103,11 +75160,11 @@ var STATE_SUMMARY_VARS = [
75103
75160
  [...RULE_TEXT],
75104
75161
  [...RULE_TEXT],
75105
75162
  [...RULE_TEXT],
75163
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75106
75164
  ([...RULE_TEXT], [...ALERT_EPISODE]),
75165
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75107
75166
  ([...RULE_TEXT], [...ALERT_EPISODE]),
75108
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75109
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75110
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75167
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75111
75168
  [...RULE_TEXT],
75112
75169
  [...RULE_TEXT],
75113
75170
  [...RULE_TEXT],
@@ -75128,6 +75185,125 @@ var STATE_SUMMARY_VARS = [
75128
75185
  [...RULE_TEXT],
75129
75186
  ...STATE_SUMMARY_VARS
75130
75187
  ];
75188
+ new Map([
75189
+ {
75190
+ id: "device-connectivity",
75191
+ family: "device-events",
75192
+ label: "Device connectivity (offline / back online)",
75193
+ bad: ["device-offline"],
75194
+ recovery: ["device-online"],
75195
+ snapshotLabel: "Devices offline now",
75196
+ snapshotSection: "device-state"
75197
+ },
75198
+ {
75199
+ id: "device-switch",
75200
+ family: "device-events",
75201
+ label: "Device switched off / back on",
75202
+ bad: ["device-disabled"],
75203
+ recovery: ["device-enabled"],
75204
+ snapshotLabel: "Devices switched off now",
75205
+ snapshotSection: "device-state"
75206
+ },
75207
+ {
75208
+ id: "stream-connectivity",
75209
+ family: "device-events",
75210
+ label: "Stream connectivity (offline / back online)",
75211
+ bad: ["stream-offline"],
75212
+ recovery: ["stream-online"],
75213
+ snapshotLabel: "Streams offline now",
75214
+ snapshotSection: "streams"
75215
+ },
75216
+ {
75217
+ id: "battery",
75218
+ family: "device-events",
75219
+ label: "Battery (low / back to normal)",
75220
+ bad: ["device-battery-low"],
75221
+ recovery: ["device-battery-normal"],
75222
+ snapshotLabel: "Batteries low now",
75223
+ snapshotSection: "battery"
75224
+ },
75225
+ {
75226
+ id: "consumables",
75227
+ family: "device-events",
75228
+ label: "Consumables (low / replaced)",
75229
+ bad: ["device-consumable-low"],
75230
+ recovery: ["device-consumable-normal"],
75231
+ snapshotLabel: "Consumables low now",
75232
+ snapshotSection: "consumables"
75233
+ },
75234
+ {
75235
+ id: "tanks",
75236
+ family: "device-events",
75237
+ label: "Tanks (low or full / back to normal)",
75238
+ bad: ["device-tank-low", "device-tank-full"],
75239
+ recovery: ["device-tank-normal"],
75240
+ snapshotLabel: "Tanks low or full now",
75241
+ snapshotSection: "tanks"
75242
+ },
75243
+ {
75244
+ id: "motion-noise",
75245
+ family: "device-events",
75246
+ label: "Motion without a subject (constant / calm again)",
75247
+ bad: ["motion-noisy"],
75248
+ recovery: ["motion-calm"],
75249
+ snapshotLabel: "Cameras with constant motion now",
75250
+ snapshotSection: null
75251
+ },
75252
+ {
75253
+ id: "recording-health",
75254
+ family: "device-events",
75255
+ label: "Recording health (stalled or degraded / recording again)",
75256
+ bad: ["recording-stalled", "recording-degraded"],
75257
+ recovery: ["recording-healthy"],
75258
+ snapshotLabel: "Recordings stalled now",
75259
+ snapshotSection: null
75260
+ },
75261
+ {
75262
+ id: "device-attention",
75263
+ family: "device-events",
75264
+ label: "Device needs attention (raised / resolved)",
75265
+ bad: ["device-attention-required"],
75266
+ recovery: ["device-attention-resolved"],
75267
+ snapshotLabel: "Devices needing attention now",
75268
+ snapshotSection: null
75269
+ },
75270
+ {
75271
+ id: "node-connectivity",
75272
+ family: "system",
75273
+ label: "Node connectivity (offline / back online)",
75274
+ bad: ["node-offline"],
75275
+ recovery: ["node-online"],
75276
+ snapshotLabel: "Nodes offline now",
75277
+ snapshotSection: "nodes"
75278
+ },
75279
+ {
75280
+ id: "storage-space",
75281
+ family: "system",
75282
+ label: "Storage space (low or critical / ok again)",
75283
+ bad: ["storage-location-low", "storage-location-critical"],
75284
+ recovery: ["storage-location-ok"],
75285
+ snapshotLabel: "Storage locations low now",
75286
+ snapshotSection: null
75287
+ },
75288
+ {
75289
+ id: "critical-alerts",
75290
+ family: "system",
75291
+ label: "Critical alerts (raised / resolved)",
75292
+ bad: ["alert-critical"],
75293
+ recovery: ["alert-critical-resolved"],
75294
+ snapshotLabel: "Critical alerts open now",
75295
+ snapshotSection: null
75296
+ },
75297
+ {
75298
+ id: "rule-health",
75299
+ family: "system",
75300
+ label: "Rule health (broken / repaired)",
75301
+ bad: ["rule-broken"],
75302
+ recovery: ["rule-repaired"],
75303
+ snapshotLabel: "Notification rules broken now",
75304
+ snapshotSection: null
75305
+ }
75306
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
75131
75307
  new Set([
75132
75308
  "disarmed",
75133
75309
  "armed_home",
@@ -85125,8 +85301,6 @@ var OnvifProviderAddon = class extends BaseDeviceProvider {
85125
85301
  id: "discovery",
85126
85302
  title: "ONVIF Discovery",
85127
85303
  titleKey: "provider-onvif:globalSettings.s_discovery.title",
85128
- description: "Find ONVIF cameras on the local network when you add a device",
85129
- descriptionKey: "provider-onvif:globalSettings.s_discovery.description",
85130
85304
  columns: 2,
85131
85305
  fields: [{
85132
85306
  type: "number",
@@ -85142,8 +85316,6 @@ var OnvifProviderAddon = class extends BaseDeviceProvider {
85142
85316
  id: "credentials",
85143
85317
  title: "Default Credentials",
85144
85318
  titleKey: "provider-onvif:globalSettings.s_credentials.title",
85145
- description: "Default credentials for discovered cameras",
85146
- descriptionKey: "provider-onvif:globalSettings.s_credentials.description",
85147
85319
  columns: 2,
85148
85320
  fields: [{
85149
85321
  type: "text",
package/dist/addon.mjs CHANGED
@@ -3,7 +3,7 @@ import { createRequire } from "node:module";
3
3
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
4
4
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
5
5
  //#endregion
6
- //#region ../types/dist/event-category-DOl51-Ij.mjs
6
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
7
7
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
8
8
  EventCategory["SystemBoot"] = "system.boot";
9
9
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -320,6 +320,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
320
320
  */
321
321
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
322
322
  /**
323
+ * A camera's motion source has fired constantly with no subject for an hour
324
+ * (motion duty or session count over the bar, zero detections) — it is not
325
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
326
+ * {@link PipelineMotionCalm}.
327
+ */
328
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
329
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
330
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
331
+ /**
323
332
  * Per-camera pipeline config was mutated by the orchestrator
324
333
  * (3-level settings change via `setAgentAddonDefaults` /
325
334
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -691,6 +700,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
691
700
  EventCategory["BackupRestored"] = "backup.restored";
692
701
  EventCategory["NotificationDispatched"] = "notification.dispatched";
693
702
  EventCategory["NotificationFailed"] = "notification.failed";
703
+ /**
704
+ * A notification rule that cannot work (D905): its stored row does not load,
705
+ * or it still names a device / delivery target the prune CONFIRMED deleted.
706
+ * One edge per rule per distinct set of reasons; never on an unanswered read.
707
+ */
708
+ EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
709
+ /** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
710
+ EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
694
711
  EventCategory["DeviceUpdated"] = "device.updated";
695
712
  /**
696
713
  * Transport-level connectivity. Emitted by the device driver when
@@ -5418,7 +5435,7 @@ var ZodIssueCode = {
5418
5435
  var ZodFirstPartyTypeKind;
5419
5436
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5420
5437
  //#endregion
5421
- //#region ../types/dist/sleep-_sV1BE2f.mjs
5438
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5422
5439
  /**
5423
5440
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5424
5441
  * window to float samples (D455).
@@ -7880,7 +7897,7 @@ var EntryDescriptorSchema = object({
7880
7897
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
7881
7898
  fields: record(string(), unknown())
7882
7899
  }).strict();
7883
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
7900
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
7884
7901
  var RecordKindDeclarationSchema = object({
7885
7902
  database: _enum(RECORD_DATABASES).default("settings"),
7886
7903
  class: _enum(RECORD_CLASSES),
@@ -7899,14 +7916,6 @@ var RecordKindDeclarationSchema = object({
7899
7916
  secretPaths: array(string().min(1)).default([]),
7900
7917
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
7901
7918
  secretArrayKeys: record(string(), string()).default({}),
7902
- /**
7903
- * RETIRED (D900): the legacy table a kind adopted from during the records
7904
- * migration. Nothing declares it any more and nothing reads it; the schema
7905
- * still ACCEPTS it because the catalog rows the migration wrote carry it
7906
- * (an orphaned kind is never redeclared) and an addon built before the
7907
- * removal still sends it. Never set it.
7908
- */
7909
- adoptsFrom: string().min(1).optional(),
7910
7919
  /** Kinds that must agree through `transact` sit in one file under one family name. */
7911
7920
  transactFamily: string().min(1).optional(),
7912
7921
  entry: EntryDescriptorSchema.optional()
@@ -12580,17 +12589,6 @@ object({
12580
12589
  createdAt: number(),
12581
12590
  updatedAt: number()
12582
12591
  });
12583
- object({
12584
- id: string(),
12585
- label: string(),
12586
- isAdmin: boolean().default(false),
12587
- allowedProviders: AllowedProviderSchema,
12588
- allowedDevices: AllowedDevicesSchema,
12589
- tokenHash: string(),
12590
- tokenPrefix: string(),
12591
- createdAt: number(),
12592
- lastUsedAt: number().optional()
12593
- });
12594
12592
  object({
12595
12593
  id: string(),
12596
12594
  userId: string(),
@@ -16466,16 +16464,36 @@ var RecordKindStateSchema = _enum([
16466
16464
  var DeclareKindResultSchema = object({
16467
16465
  kindId: number().int(),
16468
16466
  state: RecordKindStateSchema,
16469
- createdIndexes: array(string()),
16470
- /**
16471
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
16472
- * it stays on the wire, null, because an addon built before the removal reads
16473
- * an ABSENT field as "adoption pending" and refuses to start.
16474
- */
16475
- adoptionPending: _null()
16467
+ createdIndexes: array(string())
16476
16468
  });
16477
16469
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
16478
16470
  var SecretRefsList = array(string());
16471
+ /**
16472
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
16473
+ * All ops of one call share ONE database file and ONE `transactFamily`.
16474
+ */
16475
+ var RecordTransactOpSchema = discriminatedUnion("op", [
16476
+ object({
16477
+ op: literal("put"),
16478
+ kind: RecordKindNameSchema,
16479
+ record: RecordInputSchema,
16480
+ ifRev: number().int().min(0).optional()
16481
+ }),
16482
+ object({
16483
+ op: literal("patch"),
16484
+ kind: RecordKindNameSchema,
16485
+ id: RecordIdSchema,
16486
+ data: RecordBodySchema,
16487
+ at: number().int().nullable().optional(),
16488
+ expiresAt: number().int().nullable().optional(),
16489
+ ifRev: number().int().min(1).optional()
16490
+ }),
16491
+ object({
16492
+ op: literal("delete"),
16493
+ kind: RecordKindNameSchema,
16494
+ id: RecordIdSchema
16495
+ })
16496
+ ]);
16479
16497
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
16480
16498
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
16481
16499
  kind: "mutation",
@@ -16582,6 +16600,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
16582
16600
  }), {
16583
16601
  kind: "mutation",
16584
16602
  auth: "admin"
16603
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
16604
+ results: array(object({
16605
+ rev: number().int().nullable(),
16606
+ deleted: boolean()
16607
+ })),
16608
+ releasedRefs: SecretRefsList,
16609
+ secretRefs: SecretRefsList
16610
+ }), {
16611
+ kind: "mutation",
16612
+ auth: "admin"
16585
16613
  }), method(object({
16586
16614
  deviceId: number().int(),
16587
16615
  kinds: array(RecordKindNameSchema).optional()
@@ -42134,9 +42162,13 @@ var NcSystemEventKindSchema = _enum([
42134
42162
  "node-updating",
42135
42163
  "node-inference-unavailable",
42136
42164
  "detection-blind",
42165
+ "motion-noisy",
42166
+ "motion-calm",
42137
42167
  "recording-stalled",
42138
42168
  "recording-healthy",
42139
42169
  "recording-degraded",
42170
+ "device-attention-required",
42171
+ "device-attention-resolved",
42140
42172
  "storage-location-low",
42141
42173
  "storage-location-critical",
42142
42174
  "storage-location-ok",
@@ -42160,6 +42192,8 @@ var NcSystemEventKindSchema = _enum([
42160
42192
  "alert-critical",
42161
42193
  "alert-error",
42162
42194
  "alert-critical-resolved",
42195
+ "rule-broken",
42196
+ "rule-repaired",
42163
42197
  "camera-online",
42164
42198
  "camera-offline",
42165
42199
  "camera-disabled",
@@ -54695,6 +54729,16 @@ object({
54695
54729
  powerState: string().nullable(),
54696
54730
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
54697
54731
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
54732
+ /**
54733
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
54734
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
54735
+ * when none is reported. A cleared reminder is not an unknown one.
54736
+ */
54737
+ filterCleaningDue: boolean().nullable(),
54738
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
54739
+ machineCareDue: boolean().nullable(),
54740
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
54741
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
54698
54742
  /** Option states: null when the appliance does not expose the option or has not said. */
54699
54743
  halfLoad: boolean().nullable(),
54700
54744
  hygienePlus: boolean().nullable(),
@@ -61404,16 +61448,6 @@ var UpdateUserInputSchema = object({
61404
61448
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61405
61449
  scopes: array(TokenScopeSchema).optional()
61406
61450
  });
61407
- var ApiKeySummarySchema = object({
61408
- id: string(),
61409
- label: string(),
61410
- isAdmin: boolean().default(false),
61411
- allowedProviders: union([array(string()), literal("*")]).optional(),
61412
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
61413
- tokenPrefix: string(),
61414
- createdAt: number(),
61415
- lastUsedAt: number().optional()
61416
- });
61417
61451
  var OauthSessionSummarySchema = object({
61418
61452
  id: string(),
61419
61453
  userId: string(),
@@ -61435,8 +61469,7 @@ var TotpStatusSchema = object({
61435
61469
  confirmedAt: number().nullable()
61436
61470
  });
61437
61471
  /**
61438
- * user-management — singleton capability for user accounts and the
61439
- * legacy API-key rows.
61472
+ * user-management — singleton capability for user accounts.
61440
61473
  *
61441
61474
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
61442
61475
  * — the subset check on `setUserScopes` is moot
@@ -61492,10 +61525,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
61492
61525
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
61493
61526
  kind: "mutation",
61494
61527
  access: "view"
61495
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
61496
- kind: "mutation",
61497
- auth: "admin",
61498
- access: "delete"
61499
61528
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
61500
61529
  kind: "mutation",
61501
61530
  auth: "admin",
@@ -69833,6 +69862,12 @@ Object.freeze({
69833
69862
  addonId: null,
69834
69863
  access: "view"
69835
69864
  },
69865
+ "records.transact": {
69866
+ capName: "records",
69867
+ capScope: "system",
69868
+ addonId: null,
69869
+ access: "create"
69870
+ },
69836
69871
  "sceneMonitor.captureReference": {
69837
69872
  capName: "scene-monitor",
69838
69873
  capScope: "device",
@@ -71165,12 +71200,6 @@ Object.freeze({
71165
71200
  addonId: null,
71166
71201
  access: "view"
71167
71202
  },
71168
- "userManagement.listApiKeys": {
71169
- capName: "user-management",
71170
- capScope: "system",
71171
- addonId: null,
71172
- access: "view"
71173
- },
71174
71203
  "userManagement.listExternalIdentities": {
71175
71204
  capName: "user-management",
71176
71205
  capScope: "system",
@@ -71225,12 +71254,6 @@ Object.freeze({
71225
71254
  addonId: null,
71226
71255
  access: "create"
71227
71256
  },
71228
- "userManagement.revokeApiKey": {
71229
- capName: "user-management",
71230
- capScope: "system",
71231
- addonId: null,
71232
- access: "delete"
71233
- },
71234
71257
  "userManagement.revokeOauthSession": {
71235
71258
  capName: "user-management",
71236
71259
  capScope: "system",
@@ -74661,9 +74684,13 @@ new Map(Object.entries({
74661
74684
  "stream-online": "device-events",
74662
74685
  "stream-offline": "device-events",
74663
74686
  "detection-blind": "device-events",
74687
+ "motion-noisy": "device-events",
74688
+ "motion-calm": "device-events",
74664
74689
  "recording-stalled": "device-events",
74665
74690
  "recording-healthy": "device-events",
74666
74691
  "recording-degraded": "device-events",
74692
+ "device-attention-required": "device-events",
74693
+ "device-attention-resolved": "device-events",
74667
74694
  "node-online": "system",
74668
74695
  "node-offline": "system",
74669
74696
  "node-restarting": "system",
@@ -74680,6 +74707,8 @@ new Map(Object.entries({
74680
74707
  "alert-critical": "system",
74681
74708
  "alert-error": "system",
74682
74709
  "alert-critical-resolved": "system",
74710
+ "rule-broken": "system",
74711
+ "rule-repaired": "system",
74683
74712
  "storage-location-low": "system",
74684
74713
  "storage-location-critical": "system",
74685
74714
  "storage-location-ok": "system",
@@ -74744,6 +74773,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74744
74773
  label: "Detecting nothing",
74745
74774
  kinds: ["detection-blind"]
74746
74775
  },
74776
+ {
74777
+ id: "motion-noise",
74778
+ family: "device-events",
74779
+ label: "Motion without a subject",
74780
+ kinds: ["motion-noisy", "motion-calm"]
74781
+ },
74747
74782
  {
74748
74783
  id: "recording",
74749
74784
  family: "device-events",
@@ -74754,6 +74789,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74754
74789
  "recording-degraded"
74755
74790
  ]
74756
74791
  },
74792
+ {
74793
+ id: "device-attention",
74794
+ family: "device-events",
74795
+ label: "Needs attention",
74796
+ kinds: ["device-attention-required", "device-attention-resolved"]
74797
+ },
74757
74798
  {
74758
74799
  id: "nodes",
74759
74800
  family: "system",
@@ -74814,6 +74855,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
74814
74855
  "alert-critical-resolved"
74815
74856
  ]
74816
74857
  },
74858
+ {
74859
+ id: "rule-health",
74860
+ family: "system",
74861
+ label: "Notification rules",
74862
+ kinds: ["rule-broken", "rule-repaired"]
74863
+ },
74817
74864
  {
74818
74865
  id: "alarm",
74819
74866
  family: "alarm",
@@ -74887,6 +74934,7 @@ var ALERT_EPISODE = [
74887
74934
  "alert-error",
74888
74935
  "alert-critical-resolved"
74889
74936
  ];
74937
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
74890
74938
  var UPDATES = [
74891
74939
  "addon-update-available",
74892
74940
  "server-update-available",
@@ -74916,9 +74964,12 @@ var DEVICE_EVENTS = [
74916
74964
  "stream-online",
74917
74965
  "stream-offline",
74918
74966
  "detection-blind",
74967
+ "motion-noisy",
74968
+ "motion-calm",
74919
74969
  "recording-stalled",
74920
74970
  "recording-healthy",
74921
74971
  "recording-degraded",
74972
+ ...DEVICE_ATTENTION,
74922
74973
  ...ALARM
74923
74974
  ];
74924
74975
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -75086,7 +75137,13 @@ var STATE_SUMMARY_VARS = [
75086
75137
  [...RULE_TEXT],
75087
75138
  [...RULE_TEXT],
75088
75139
  [...RULE_TEXT],
75089
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75140
+ [...RULE_TEXT],
75141
+ [...RULE_TEXT],
75142
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75143
+ [...RULE_TEXT],
75144
+ [...RULE_TEXT],
75145
+ [...RULE_TEXT],
75146
+ [...RULE_TEXT],
75090
75147
  [...RULE_TEXT],
75091
75148
  [...RULE_TEXT],
75092
75149
  [...RULE_TEXT],
@@ -75104,11 +75161,11 @@ var STATE_SUMMARY_VARS = [
75104
75161
  [...RULE_TEXT],
75105
75162
  [...RULE_TEXT],
75106
75163
  [...RULE_TEXT],
75164
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75107
75165
  ([...RULE_TEXT], [...ALERT_EPISODE]),
75166
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75108
75167
  ([...RULE_TEXT], [...ALERT_EPISODE]),
75109
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75110
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75111
- ([...RULE_TEXT], [...ALERT_EPISODE]),
75168
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
75112
75169
  [...RULE_TEXT],
75113
75170
  [...RULE_TEXT],
75114
75171
  [...RULE_TEXT],
@@ -75129,6 +75186,125 @@ var STATE_SUMMARY_VARS = [
75129
75186
  [...RULE_TEXT],
75130
75187
  ...STATE_SUMMARY_VARS
75131
75188
  ];
75189
+ new Map([
75190
+ {
75191
+ id: "device-connectivity",
75192
+ family: "device-events",
75193
+ label: "Device connectivity (offline / back online)",
75194
+ bad: ["device-offline"],
75195
+ recovery: ["device-online"],
75196
+ snapshotLabel: "Devices offline now",
75197
+ snapshotSection: "device-state"
75198
+ },
75199
+ {
75200
+ id: "device-switch",
75201
+ family: "device-events",
75202
+ label: "Device switched off / back on",
75203
+ bad: ["device-disabled"],
75204
+ recovery: ["device-enabled"],
75205
+ snapshotLabel: "Devices switched off now",
75206
+ snapshotSection: "device-state"
75207
+ },
75208
+ {
75209
+ id: "stream-connectivity",
75210
+ family: "device-events",
75211
+ label: "Stream connectivity (offline / back online)",
75212
+ bad: ["stream-offline"],
75213
+ recovery: ["stream-online"],
75214
+ snapshotLabel: "Streams offline now",
75215
+ snapshotSection: "streams"
75216
+ },
75217
+ {
75218
+ id: "battery",
75219
+ family: "device-events",
75220
+ label: "Battery (low / back to normal)",
75221
+ bad: ["device-battery-low"],
75222
+ recovery: ["device-battery-normal"],
75223
+ snapshotLabel: "Batteries low now",
75224
+ snapshotSection: "battery"
75225
+ },
75226
+ {
75227
+ id: "consumables",
75228
+ family: "device-events",
75229
+ label: "Consumables (low / replaced)",
75230
+ bad: ["device-consumable-low"],
75231
+ recovery: ["device-consumable-normal"],
75232
+ snapshotLabel: "Consumables low now",
75233
+ snapshotSection: "consumables"
75234
+ },
75235
+ {
75236
+ id: "tanks",
75237
+ family: "device-events",
75238
+ label: "Tanks (low or full / back to normal)",
75239
+ bad: ["device-tank-low", "device-tank-full"],
75240
+ recovery: ["device-tank-normal"],
75241
+ snapshotLabel: "Tanks low or full now",
75242
+ snapshotSection: "tanks"
75243
+ },
75244
+ {
75245
+ id: "motion-noise",
75246
+ family: "device-events",
75247
+ label: "Motion without a subject (constant / calm again)",
75248
+ bad: ["motion-noisy"],
75249
+ recovery: ["motion-calm"],
75250
+ snapshotLabel: "Cameras with constant motion now",
75251
+ snapshotSection: null
75252
+ },
75253
+ {
75254
+ id: "recording-health",
75255
+ family: "device-events",
75256
+ label: "Recording health (stalled or degraded / recording again)",
75257
+ bad: ["recording-stalled", "recording-degraded"],
75258
+ recovery: ["recording-healthy"],
75259
+ snapshotLabel: "Recordings stalled now",
75260
+ snapshotSection: null
75261
+ },
75262
+ {
75263
+ id: "device-attention",
75264
+ family: "device-events",
75265
+ label: "Device needs attention (raised / resolved)",
75266
+ bad: ["device-attention-required"],
75267
+ recovery: ["device-attention-resolved"],
75268
+ snapshotLabel: "Devices needing attention now",
75269
+ snapshotSection: null
75270
+ },
75271
+ {
75272
+ id: "node-connectivity",
75273
+ family: "system",
75274
+ label: "Node connectivity (offline / back online)",
75275
+ bad: ["node-offline"],
75276
+ recovery: ["node-online"],
75277
+ snapshotLabel: "Nodes offline now",
75278
+ snapshotSection: "nodes"
75279
+ },
75280
+ {
75281
+ id: "storage-space",
75282
+ family: "system",
75283
+ label: "Storage space (low or critical / ok again)",
75284
+ bad: ["storage-location-low", "storage-location-critical"],
75285
+ recovery: ["storage-location-ok"],
75286
+ snapshotLabel: "Storage locations low now",
75287
+ snapshotSection: null
75288
+ },
75289
+ {
75290
+ id: "critical-alerts",
75291
+ family: "system",
75292
+ label: "Critical alerts (raised / resolved)",
75293
+ bad: ["alert-critical"],
75294
+ recovery: ["alert-critical-resolved"],
75295
+ snapshotLabel: "Critical alerts open now",
75296
+ snapshotSection: null
75297
+ },
75298
+ {
75299
+ id: "rule-health",
75300
+ family: "system",
75301
+ label: "Rule health (broken / repaired)",
75302
+ bad: ["rule-broken"],
75303
+ recovery: ["rule-repaired"],
75304
+ snapshotLabel: "Notification rules broken now",
75305
+ snapshotSection: null
75306
+ }
75307
+ ].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
75132
75308
  new Set([
75133
75309
  "disarmed",
75134
75310
  "armed_home",
@@ -85126,8 +85302,6 @@ var OnvifProviderAddon = class extends BaseDeviceProvider {
85126
85302
  id: "discovery",
85127
85303
  title: "ONVIF Discovery",
85128
85304
  titleKey: "provider-onvif:globalSettings.s_discovery.title",
85129
- description: "Find ONVIF cameras on the local network when you add a device",
85130
- descriptionKey: "provider-onvif:globalSettings.s_discovery.description",
85131
85305
  columns: 2,
85132
85306
  fields: [{
85133
85307
  type: "number",
@@ -85143,8 +85317,6 @@ var OnvifProviderAddon = class extends BaseDeviceProvider {
85143
85317
  id: "credentials",
85144
85318
  title: "Default Credentials",
85145
85319
  titleKey: "provider-onvif:globalSettings.s_credentials.title",
85146
- description: "Default credentials for discovered cameras",
85147
- descriptionKey: "provider-onvif:globalSettings.s_credentials.description",
85148
85320
  columns: 2,
85149
85321
  fields: [{
85150
85322
  type: "text",
package/i18n/en.json CHANGED
@@ -6,9 +6,7 @@
6
6
  "onGetCreation.s_connection.username.label": "Username",
7
7
  "onGetCreation.s_connection.password.label": "Password",
8
8
  "globalSettings.s_discovery.title": "ONVIF Discovery",
9
- "globalSettings.s_discovery.description": "Find ONVIF cameras on the local network when you add a device",
10
9
  "globalSettings.s_credentials.title": "Default Credentials",
11
- "globalSettings.s_credentials.description": "Default credentials for discovered cameras",
12
10
  "globalSettings.s_credentials.defaultUsername.label": "Default Username",
13
11
  "globalSettings.s_credentials.defaultPassword.label": "Default Password"
14
12
  }
package/i18n/it.json CHANGED
@@ -6,9 +6,7 @@
6
6
  "onGetCreation.s_connection.username.label": "Nome utente",
7
7
  "onGetCreation.s_connection.password.label": "Password",
8
8
  "globalSettings.s_discovery.title": "Rilevamento ONVIF",
9
- "globalSettings.s_discovery.description": "Trova le telecamere ONVIF sulla rete locale quando aggiungi un dispositivo",
10
9
  "globalSettings.s_credentials.title": "Credenziali predefinite",
11
- "globalSettings.s_credentials.description": "Credenziali predefinite per le telecamere rilevate",
12
10
  "globalSettings.s_credentials.defaultUsername.label": "Nome utente predefinito",
13
11
  "globalSettings.s_credentials.defaultPassword.label": "Password predefinita"
14
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-onvif",
3
- "version": "1.2.142",
3
+ "version": "1.2.144",
4
4
  "description": "ONVIF camera device provider addon for CamStack",
5
5
  "keywords": [
6
6
  "camstack",