@camstack/system 1.2.437 → 1.2.439

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 (109) hide show
  1. package/dist/addon-runner.js +64 -12
  2. package/dist/addon-runner.mjs +65 -13
  3. package/dist/{agent-https-BZIwS4xF.js → agent-https-DlpTMDqA.js} +252 -22
  4. package/dist/{agent-https-BPfHrI4c.mjs → agent-https-U0d4uvn2.mjs} +211 -23
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  8. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  9. package/dist/builtins/alerts/alerts.addon.js +7 -1
  10. package/dist/builtins/alerts/alerts.addon.mjs +7 -1
  11. package/dist/builtins/autotrack/index.js +1 -1
  12. package/dist/builtins/autotrack/index.mjs +1 -1
  13. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  14. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  15. package/dist/builtins/calendars/calendars.addon.js +1 -1
  16. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  17. package/dist/builtins/camera-grid/index.js +9 -1
  18. package/dist/builtins/camera-grid/index.mjs +9 -1
  19. package/dist/builtins/composer/composer.addon.js +2 -2
  20. package/dist/builtins/composer/composer.addon.mjs +2 -2
  21. package/dist/builtins/console-logging/index.js +12 -5
  22. package/dist/builtins/console-logging/index.mjs +12 -5
  23. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  24. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  25. package/dist/builtins/device-manager/device-manager.addon.d.ts +5 -0
  26. package/dist/builtins/device-manager/device-manager.addon.js +717 -28
  27. package/dist/builtins/device-manager/device-manager.addon.mjs +717 -28
  28. package/dist/builtins/device-manager/device-meta-types.d.ts +4 -0
  29. package/dist/builtins/device-manager/device-provider-context.d.ts +9 -0
  30. package/dist/builtins/device-manager/device-removal-hooks.d.ts +103 -0
  31. package/dist/builtins/device-manager/device-row-store.d.ts +1 -0
  32. package/dist/builtins/device-manager/device-tombstone-store.d.ts +68 -0
  33. package/dist/builtins/device-manager/removal-cleanup.d.ts +50 -0
  34. package/dist/builtins/hub-forwarder/index.js +1 -1
  35. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  36. package/dist/builtins/keychain/index.js +37 -4
  37. package/dist/builtins/keychain/index.mjs +37 -4
  38. package/dist/builtins/keychain/keychain-service.d.ts +14 -0
  39. package/dist/builtins/keychain/keychain-store.d.ts +1 -1
  40. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  41. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  42. package/dist/builtins/local-auth/local-auth.addon.js +12 -12
  43. package/dist/builtins/local-auth/local-auth.addon.mjs +12 -12
  44. package/dist/builtins/local-network/local-network.addon.js +16 -2
  45. package/dist/builtins/local-network/local-network.addon.mjs +16 -2
  46. package/dist/builtins/loki-logging/index.js +28 -5
  47. package/dist/builtins/loki-logging/index.mjs +28 -5
  48. package/dist/builtins/native-metrics/native-metrics.addon.js +11 -1
  49. package/dist/builtins/native-metrics/native-metrics.addon.mjs +11 -1
  50. package/dist/builtins/platform-probe/index.js +1 -1
  51. package/dist/builtins/platform-probe/index.mjs +1 -1
  52. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  53. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/snapshot/index.js +11 -1
  55. package/dist/builtins/snapshot/index.mjs +11 -1
  56. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +4 -1
  57. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +4 -1
  58. package/dist/builtins/sqlite-storage/index.js +1 -1
  59. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  60. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
  61. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
  62. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  63. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  64. package/dist/builtins/system-config/system-config.addon.js +22 -4
  65. package/dist/builtins/system-config/system-config.addon.mjs +22 -4
  66. package/dist/builtins/winston-logging/index.js +14 -5
  67. package/dist/builtins/winston-logging/index.mjs +14 -5
  68. package/dist/{composition-sources-BIT8IUKm.js → composition-sources-B4jC2FC7.js} +1 -1
  69. package/dist/{composition-sources-tpYR0f1x.mjs → composition-sources-BGOSCGWa.mjs} +1 -1
  70. package/dist/{constants-Bc6trhoW.mjs → constants-B92BjObl.mjs} +1 -1
  71. package/dist/{constants-CwRY32Nx.js → constants-BRsjQwi-.js} +1 -1
  72. package/dist/{device-ca-BhdBByGD.mjs → device-ca-46BUsWD1.mjs} +2 -2
  73. package/dist/{device-ca-DImD8IzR.js → device-ca-DHG9OW2m.js} +2 -2
  74. package/dist/{dist-CEAyXW3Q.js → dist-BOWdLjoK.js} +341 -13
  75. package/dist/{dist-m5JkT8UN.mjs → dist-yI6kF6r6.mjs} +306 -14
  76. package/dist/file-host-worker.js +1 -1
  77. package/dist/file-host-worker.mjs +1 -1
  78. package/dist/{hub-mdns-ciao-CBLvq2oj.js → hub-mdns-ciao-D7S5AJRU.js} +377 -69
  79. package/dist/{hub-mdns-ciao-DMlQTdPU.mjs → hub-mdns-ciao-DGwVc2uh.mjs} +344 -72
  80. package/dist/i18n/catalog-registry.d.ts +35 -0
  81. package/dist/i18n/index.d.ts +2 -0
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.js +698 -22
  84. package/dist/index.mjs +681 -24
  85. package/dist/kernel/gc-census.d.ts +18 -1
  86. package/dist/kernel/settings-view-types.d.ts +2 -0
  87. package/dist/kernel/transport/local-transport.d.ts +3 -0
  88. package/dist/kernel/transport/peer-answered-error.d.ts +5 -1
  89. package/dist/{lib-NNxHSOIE.js → lib-8oZrELLm.js} +1 -1
  90. package/dist/{lib-BeGzVQcd.mjs → lib-DK38ompL.mjs} +1 -1
  91. package/dist/{restore-archive-DNxAStrJ.mjs → restore-archive-CpdUO-uS.mjs} +1 -1
  92. package/dist/{restore-archive-C75srVbG.js → restore-archive-DiGiI6Jp.js} +1 -1
  93. package/dist/{retired-settings-keys-DNfV28R_.js → retired-settings-keys-CyQ7uvta.js} +1 -1
  94. package/dist/{retired-settings-keys-C5qP9QIf.mjs → retired-settings-keys-UsVtLOT0.mjs} +1 -1
  95. package/dist/tls/agent-https.d.ts +2 -2
  96. package/dist/tls/boot-tls.d.ts +6 -0
  97. package/dist/tls/cert-evaluation.d.ts +1 -1
  98. package/dist/tls/cert-issue.d.ts +5 -1
  99. package/dist/tls/cert-manager.d.ts +18 -0
  100. package/dist/tls/cert-name-constraints.d.ts +53 -0
  101. package/dist/tls/index.d.ts +5 -4
  102. package/dist/tls/tls-actions.d.ts +27 -7
  103. package/dist/tls/tls-status.d.ts +22 -0
  104. package/dist/tls/uploaded-cert.d.ts +36 -4
  105. package/dist/{wal-maintenance-Ch79gy9S.js → wal-maintenance-DEL_jeG0.js} +0 -0
  106. package/dist/{wal-maintenance-DvnVO5IK.mjs → wal-maintenance-xsvdT5Go.mjs} +0 -0
  107. package/dist/{x509.es-r7Ht1thA.js → x509.es-C4cOo48M.js} +36 -0
  108. package/dist/{x509.es-CDvj67p1.mjs → x509.es-DK__ETIe.mjs} +1 -1
  109. package/package.json +3 -1
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $ as addonPagesCapability, Cr as BaseAddon, Sr as errMsg, pi as EventCategory } from "../../dist-m5JkT8UN.mjs";
1
+ import { Dr as errMsg, Or as BaseAddon, nt as addonPagesCapability, yi as EventCategory } from "../../dist-yI6kF6r6.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Cr as BaseAddon, Sr as errMsg, pi as EventCategory, tt as addonWidgetsCapability } from "../../dist-m5JkT8UN.mjs";
1
+ import { Dr as errMsg, Or as BaseAddon, it as addonWidgetsCapability, yi as EventCategory } from "../../dist-yI6kF6r6.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
7
  //#region src/builtins/alerts/device-label.ts
8
8
  /**
9
9
  * Operator-facing device label for alert messages.
@@ -235,13 +235,17 @@ var AlertCenterAddon = class extends require_dist.BaseAddon {
235
235
  return this.schema({ sections: [{
236
236
  id: "alerts",
237
237
  title: "Alert Center",
238
+ titleKey: "server:globalSettings.s_alerts.title",
238
239
  description: "Configure alert storage and retention.",
240
+ descriptionKey: "server:globalSettings.s_alerts.description",
239
241
  columns: 1,
240
242
  fields: [this.field({
241
243
  type: "number",
242
244
  key: "maxAlerts",
243
245
  label: "Maximum stored alerts",
246
+ labelKey: "server:globalSettings.s_alerts.maxAlerts.label",
244
247
  description: "Oldest read alerts are deleted when this limit is exceeded.",
248
+ descriptionKey: "server:globalSettings.s_alerts.maxAlerts.description",
245
249
  min: 50,
246
250
  max: 5e3,
247
251
  step: 50,
@@ -250,7 +254,9 @@ var AlertCenterAddon = class extends require_dist.BaseAddon {
250
254
  type: "number",
251
255
  key: "retentionDays",
252
256
  label: "Alert retention (days)",
257
+ labelKey: "server:globalSettings.s_alerts.retentionDays.label",
253
258
  description: "Alerts older than this are automatically removed.",
259
+ descriptionKey: "server:globalSettings.s_alerts.retentionDays.description",
254
260
  min: 1,
255
261
  max: 365,
256
262
  step: 1,
@@ -1,4 +1,4 @@
1
- import { Cr as BaseAddon, Sr as errMsg, i as AlertSchema, nt as alertsCapability, pi as EventCategory, zr as createEvent } from "../../dist-m5JkT8UN.mjs";
1
+ import { Dr as errMsg, Or as BaseAddon, Wr as createEvent, at as alertsCapability, i as AlertSchema, yi as EventCategory } from "../../dist-yI6kF6r6.mjs";
2
2
  //#region src/builtins/alerts/device-label.ts
3
3
  /**
4
4
  * Operator-facing device label for alert messages.
@@ -230,13 +230,17 @@ var AlertCenterAddon = class extends BaseAddon {
230
230
  return this.schema({ sections: [{
231
231
  id: "alerts",
232
232
  title: "Alert Center",
233
+ titleKey: "server:globalSettings.s_alerts.title",
233
234
  description: "Configure alert storage and retention.",
235
+ descriptionKey: "server:globalSettings.s_alerts.description",
234
236
  columns: 1,
235
237
  fields: [this.field({
236
238
  type: "number",
237
239
  key: "maxAlerts",
238
240
  label: "Maximum stored alerts",
241
+ labelKey: "server:globalSettings.s_alerts.maxAlerts.label",
239
242
  description: "Oldest read alerts are deleted when this limit is exceeded.",
243
+ descriptionKey: "server:globalSettings.s_alerts.maxAlerts.description",
240
244
  min: 50,
241
245
  max: 5e3,
242
246
  step: 50,
@@ -245,7 +249,9 @@ var AlertCenterAddon = class extends BaseAddon {
245
249
  type: "number",
246
250
  key: "retentionDays",
247
251
  label: "Alert retention (days)",
252
+ labelKey: "server:globalSettings.s_alerts.retentionDays.label",
248
253
  description: "Alerts older than this are automatically removed.",
254
+ descriptionKey: "server:globalSettings.s_alerts.retentionDays.description",
249
255
  min: 1,
250
256
  max: 365,
251
257
  step: 1,
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
7
  //#region src/builtins/autotrack/autotrack-config.ts
8
8
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
9
9
  deadZoneFraction: .5,
@@ -1,4 +1,4 @@
1
- import { Cr as BaseAddon, Jr as isEvent, On as ptzAutotrackCapability, Sr as errMsg, at as bareAddonId, k as FIRST_LEVEL_MACRO_CLASSES, pi as EventCategory } from "../../dist-m5JkT8UN.mjs";
1
+ import { $r as isEvent, Dr as errMsg, M as FIRST_LEVEL_MACRO_CLASSES, Mn as ptzAutotrackCapability, Or as BaseAddon, ct as bareAddonId, yi as EventCategory } from "../../dist-yI6kF6r6.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
7
- const require_restore_archive = require("../../restore-archive-C75srVbG.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
+ const require_restore_archive = require("../../restore-archive-DiGiI6Jp.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_fs_promises = require("node:fs/promises");
10
10
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,5 +1,5 @@
1
- import { $r as nodePin, Cr as BaseAddon, Yn as storageOccupancyCapability, it as backupCapability, mn as mayWriteToLocation, pi as EventCategory, ui as toNodeId } from "../../dist-m5JkT8UN.mjs";
2
- import { a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-DNxAStrJ.mjs";
1
+ import { Or as BaseAddon, er as storageOccupancyCapability, hi as toNodeId, ii as nodePin, st as backupCapability, vn as mayWriteToLocation, yi as EventCategory } from "../../dist-yI6kF6r6.mjs";
2
+ import { a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-CpdUO-uS.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import * as fsp from "node:fs/promises";
5
5
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/calendars/calendar-color.ts
@@ -1,4 +1,4 @@
1
- import { Cr as BaseAddon, dt as calendarsCapability, h as CalendarPreferencesSchema } from "../../dist-m5JkT8UN.mjs";
1
+ import { Or as BaseAddon, g as CalendarPreferencesSchema, mt as calendarsCapability } from "../../dist-yI6kF6r6.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/calendars/calendar-color.ts
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
7
  let zod = require("zod");
8
8
  let _camstack_types_node = require("@camstack/types/node");
9
9
  let node_path = require("node:path");
@@ -92,11 +92,13 @@ function buildGridDeviceSchema(isGrid) {
92
92
  id: "camera-grid-layout",
93
93
  tab: "general",
94
94
  title: "Grid layout",
95
+ titleKey: "server:gridDevice.s_camera-grid-layout.title",
95
96
  order: 20,
96
97
  fields: [{
97
98
  type: "widget",
98
99
  key: "_gridLayout",
99
100
  label: "",
101
+ labelKey: "server:gridDevice.s_camera-grid-layout._gridLayout.label",
100
102
  widgetId: GRID_LAYOUT_WIDGET_ID
101
103
  }]
102
104
  }] };
@@ -3656,12 +3658,15 @@ var CameraGridAddon = class extends require_dist.BaseAddon {
3656
3658
  return this.schema({ sections: [{
3657
3659
  id: "camera-grids",
3658
3660
  title: "Camera grids",
3661
+ titleKey: "server:globalSettings.s_camera-grids.title",
3659
3662
  description: "A grid is a composite camera: several cameras composed into one picture, recorded and played back like any other camera. Create one here with a name; open its camera to lay it out. Object detection is switched OFF on a new grid — the cameras it is composed from are already analysed.",
3663
+ descriptionKey: "server:globalSettings.s_camera-grids.description",
3660
3664
  columns: 1,
3661
3665
  fields: [this.field({
3662
3666
  type: "editable-array",
3663
3667
  key: "cameraGrids",
3664
3668
  label: "Grids",
3669
+ labelKey: "server:globalSettings.s_camera-grids.cameraGrids.label",
3665
3670
  default: [],
3666
3671
  maxRows: 16,
3667
3672
  addLabel: "Add grid",
@@ -3675,12 +3680,15 @@ var CameraGridAddon = class extends require_dist.BaseAddon {
3675
3680
  type: "text",
3676
3681
  key: "name",
3677
3682
  label: "Name",
3683
+ labelKey: "server:globalSettings.s_camera-grids.cameraGrids.name.label",
3678
3684
  required: true
3679
3685
  }, {
3680
3686
  type: "boolean",
3681
3687
  key: "enabled",
3682
3688
  label: "Enabled",
3689
+ labelKey: "server:globalSettings.s_camera-grids.cameraGrids.enabled.label",
3683
3690
  description: "A disabled grid withdraws its camera.",
3691
+ descriptionKey: "server:globalSettings.s_camera-grids.cameraGrids.enabled.description",
3684
3692
  default: true
3685
3693
  }]
3686
3694
  })]
@@ -1,4 +1,4 @@
1
- import { Cr as BaseAddon, D as DeclaredDevices, Et as declarationOwnerNodeId, Kn as snapshotCapability, Kr as hydrateSchema, S as DERIVED_CAMERA_SILENCED_CAP_NAMES, Sr as errMsg, Zn as streamCatalogCapability, cr as buildFfmpegArgs, ft as cameraGridLayoutCapability, hn as memoizePinnedFfmpeg, o as BaseDevice, pi as EventCategory, vn as motionCapability, xr as DeviceType, yr as DeviceFeature, z as MOTION_CLOSE_AFTER_MS, zr as createEvent } from "../../dist-m5JkT8UN.mjs";
1
+ import { A as DeclaredDevices, Dr as errMsg, Er as DeviceType, H as MOTION_CLOSE_AFTER_MS, Or as BaseAddon, Sn as motionCapability, Wr as createEvent, Xn as snapshotCapability, Zr as hydrateSchema, ht as cameraGridLayoutCapability, kt as declarationOwnerNodeId, nr as streamCatalogCapability, o as BaseDevice, pr as buildFfmpegArgs, w as DERIVED_CAMERA_SILENCED_CAP_NAMES, wr as DeviceFeature, yi as EventCategory, yn as memoizePinnedFfmpeg } from "../../dist-yI6kF6r6.mjs";
2
2
  import { z } from "zod";
3
3
  import { FfmpegProcess } from "@camstack/types/node";
4
4
  import { join } from "node:path";
@@ -87,11 +87,13 @@ function buildGridDeviceSchema(isGrid) {
87
87
  id: "camera-grid-layout",
88
88
  tab: "general",
89
89
  title: "Grid layout",
90
+ titleKey: "server:gridDevice.s_camera-grid-layout.title",
90
91
  order: 20,
91
92
  fields: [{
92
93
  type: "widget",
93
94
  key: "_gridLayout",
94
95
  label: "",
96
+ labelKey: "server:gridDevice.s_camera-grid-layout._gridLayout.label",
95
97
  widgetId: GRID_LAYOUT_WIDGET_ID
96
98
  }]
97
99
  }] };
@@ -3651,12 +3653,15 @@ var CameraGridAddon = class extends BaseAddon {
3651
3653
  return this.schema({ sections: [{
3652
3654
  id: "camera-grids",
3653
3655
  title: "Camera grids",
3656
+ titleKey: "server:globalSettings.s_camera-grids.title",
3654
3657
  description: "A grid is a composite camera: several cameras composed into one picture, recorded and played back like any other camera. Create one here with a name; open its camera to lay it out. Object detection is switched OFF on a new grid — the cameras it is composed from are already analysed.",
3658
+ descriptionKey: "server:globalSettings.s_camera-grids.description",
3655
3659
  columns: 1,
3656
3660
  fields: [this.field({
3657
3661
  type: "editable-array",
3658
3662
  key: "cameraGrids",
3659
3663
  label: "Grids",
3664
+ labelKey: "server:globalSettings.s_camera-grids.cameraGrids.label",
3660
3665
  default: [],
3661
3666
  maxRows: 16,
3662
3667
  addLabel: "Add grid",
@@ -3670,12 +3675,15 @@ var CameraGridAddon = class extends BaseAddon {
3670
3675
  type: "text",
3671
3676
  key: "name",
3672
3677
  label: "Name",
3678
+ labelKey: "server:globalSettings.s_camera-grids.cameraGrids.name.label",
3673
3679
  required: true
3674
3680
  }, {
3675
3681
  type: "boolean",
3676
3682
  key: "enabled",
3677
3683
  label: "Enabled",
3684
+ labelKey: "server:globalSettings.s_camera-grids.cameraGrids.enabled.label",
3678
3685
  description: "A disabled grid withdraws its camera.",
3686
+ descriptionKey: "server:globalSettings.s_camera-grids.cameraGrids.enabled.description",
3679
3687
  default: true
3680
3688
  }]
3681
3689
  })]
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
7
- const require_composition_sources = require("../../composition-sources-BIT8IUKm.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
+ const require_composition_sources = require("../../composition-sources-B4jC2FC7.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/shared/device-state-changed.ts
10
10
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -1,5 +1,5 @@
1
- import { Cr as BaseAddon, D as DeclaredDevices, Ht as expressionContainsBuiltinCall, Sr as errMsg, Tn as planComposition, _r as disarmRoseMemory, d as COMPOSED_ITEM_FIXED_FIELDS, dr as composedDeviceStableId, fr as compositionFeatureEnabled, gr as createStatefulExpressionMemory, gt as compositionFieldKey, hr as compositionSourceKey, ht as composerCapability, lr as cloneStatefulExpressionMemory, mr as compositionSliceKey, o as BaseDevice, pi as EventCategory, pr as compositionItemFieldPath, r as ALL_CAPABILITY_DEFINITIONS, sr as COMPOSER_ADDON_ID, st as buildCapabilityLookup, ur as composedDeviceRef, vr as toExpressionValue, xr as DeviceType, zr as createEvent, zt as evaluateCompositionField } from "../../dist-m5JkT8UN.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-tpYR0f1x.mjs";
1
+ import { A as DeclaredDevices, Cr as toExpressionValue, Dr as errMsg, Er as DeviceType, Gt as expressionContainsBuiltinCall, Ht as evaluateCompositionField, Or as BaseAddon, Sr as disarmRoseMemory, Wr as createEvent, _r as compositionFeatureEnabled, br as compositionSourceKey, f as COMPOSED_ITEM_FIXED_FIELDS, fr as COMPOSER_ADDON_ID, gr as composedDeviceStableId, hr as composedDeviceRef, kn as planComposition, mr as cloneStatefulExpressionMemory, o as BaseDevice, r as ALL_CAPABILITY_DEFINITIONS, ut as buildCapabilityLookup, vr as compositionItemFieldPath, vt as composerCapability, xr as createStatefulExpressionMemory, yi as EventCategory, yr as compositionSliceKey, yt as compositionFieldKey } from "../../dist-yI6kF6r6.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-BGOSCGWa.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/shared/device-state-changed.ts
5
5
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CEAyXW3Q.js");
6
+ const require_dist = require("../../dist-BOWdLjoK.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/console-logging/console-destination.ts
9
9
  var LEVEL_RANK = {
@@ -67,29 +67,36 @@ var ConsoleLoggingAddon = class extends require_dist.BaseAddon {
67
67
  return this.schema({ sections: [{
68
68
  id: "console-logging",
69
69
  title: "Console Logging",
70
+ titleKey: "server:globalSettings.s_console-logging.title",
70
71
  description: "Minimum log level to emit on stdout/stderr. Independent from the rotated-file (Winston) destination.",
72
+ descriptionKey: "server:globalSettings.s_console-logging.description",
71
73
  columns: 2,
72
74
  fields: [this.field({
73
75
  type: "select",
74
76
  key: "level",
75
77
  label: "Log Level",
78
+ labelKey: "server:globalSettings.s_console-logging.level.label",
76
79
  default: "info",
77
80
  options: [
78
81
  {
79
82
  value: "debug",
80
- label: "Debug"
83
+ label: "Debug",
84
+ labelKey: "server:globalSettings.s_console-logging.level.o_debug.label"
81
85
  },
82
86
  {
83
87
  value: "info",
84
- label: "Info"
88
+ label: "Info",
89
+ labelKey: "server:globalSettings.s_console-logging.level.o_info.label"
85
90
  },
86
91
  {
87
92
  value: "warn",
88
- label: "Warn"
93
+ label: "Warn",
94
+ labelKey: "server:globalSettings.s_console-logging.level.o_warn.label"
89
95
  },
90
96
  {
91
97
  value: "error",
92
- label: "Error"
98
+ label: "Error",
99
+ labelKey: "server:globalSettings.s_console-logging.level.o_error.label"
93
100
  }
94
101
  ]
95
102
  })]
@@ -1,4 +1,4 @@
1
- import { Cr as BaseAddon, un as logDestinationCapability } from "../../dist-m5JkT8UN.mjs";
1
+ import { Or as BaseAddon, mn as logDestinationCapability } from "../../dist-yI6kF6r6.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/console-logging/console-destination.ts
4
4
  var LEVEL_RANK = {
@@ -62,29 +62,36 @@ var ConsoleLoggingAddon = class extends BaseAddon {
62
62
  return this.schema({ sections: [{
63
63
  id: "console-logging",
64
64
  title: "Console Logging",
65
+ titleKey: "server:globalSettings.s_console-logging.title",
65
66
  description: "Minimum log level to emit on stdout/stderr. Independent from the rotated-file (Winston) destination.",
67
+ descriptionKey: "server:globalSettings.s_console-logging.description",
66
68
  columns: 2,
67
69
  fields: [this.field({
68
70
  type: "select",
69
71
  key: "level",
70
72
  label: "Log Level",
73
+ labelKey: "server:globalSettings.s_console-logging.level.label",
71
74
  default: "info",
72
75
  options: [
73
76
  {
74
77
  value: "debug",
75
- label: "Debug"
78
+ label: "Debug",
79
+ labelKey: "server:globalSettings.s_console-logging.level.o_debug.label"
76
80
  },
77
81
  {
78
82
  value: "info",
79
- label: "Info"
83
+ label: "Info",
84
+ labelKey: "server:globalSettings.s_console-logging.level.o_info.label"
80
85
  },
81
86
  {
82
87
  value: "warn",
83
- label: "Warn"
88
+ label: "Warn",
89
+ labelKey: "server:globalSettings.s_console-logging.level.o_warn.label"
84
90
  },
85
91
  {
86
92
  value: "error",
87
- label: "Error"
93
+ label: "Error",
94
+ labelKey: "server:globalSettings.s_console-logging.level.o_error.label"
88
95
  }
89
96
  ]
90
97
  })]
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-CEAyXW3Q.js");
4
- const require_composition_sources = require("../../composition-sources-BIT8IUKm.js");
3
+ const require_dist = require("../../dist-BOWdLjoK.js");
4
+ const require_composition_sources = require("../../composition-sources-B4jC2FC7.js");
5
5
  let node_crypto = require("node:crypto");
6
6
  let _camstack_types_node = require("@camstack/types/node");
7
7
  let node_fs_promises = require("node:fs/promises");
@@ -1,5 +1,5 @@
1
- import { An as replacedFieldKeys, At as describeComposableCaps, Cr as BaseAddon, D as DeclaredDevices, Kr as hydrateSchema, Nn as resolveCoreBlockEntry, Pn as resolveCoreBlockFiles, Sr as errMsg, St as coreBlocksCapability, Tn as planComposition, _t as compositionSourceRefs, bt as coreBlockIdFromAddonId, f as COMPOSER_RUNNER_ID, g as CoreBlockSchema, hr as compositionSourceKey, m as CORE_BLOCK_ADDON_PREFIX, p as CORE_BLOCKS_ADDON_ID, r as ALL_CAPABILITY_DEFINITIONS, st as buildCapabilityLookup, tr as validateComposition, ur as composedDeviceRef, vt as coreBlockAddonId, xt as coreBlockSourceKind, yn as normalizeCoreBlockWrite, yt as coreBlockComposition } from "../../dist-m5JkT8UN.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-tpYR0f1x.mjs";
1
+ import { A as DeclaredDevices, Cn as normalizeCoreBlockWrite, Ct as coreBlockIdFromAddonId, Dr as errMsg, Ln as resolveCoreBlockEntry, Nt as describeComposableCaps, Or as BaseAddon, Pn as replacedFieldKeys, Rn as resolveCoreBlockFiles, St as coreBlockComposition, Tt as coreBlocksCapability, Zr as hydrateSchema, br as compositionSourceKey, bt as compositionSourceRefs, h as CORE_BLOCK_ADDON_PREFIX, hr as composedDeviceRef, kn as planComposition, m as CORE_BLOCKS_ADDON_ID, or as validateComposition, p as COMPOSER_RUNNER_ID, r as ALL_CAPABILITY_DEFINITIONS, ut as buildCapabilityLookup, v as CoreBlockSchema, wt as coreBlockSourceKind, xt as coreBlockAddonId } from "../../dist-yI6kF6r6.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-BGOSCGWa.mjs";
3
3
  import { createRequire } from "node:module";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { customizationBlockName } from "@camstack/types/node";
@@ -95,6 +95,9 @@ export declare class DeviceManagerAddon extends BaseAddon {
95
95
  * `allocateDeviceId` never consults.
96
96
  */
97
97
  private readonly removalFence;
98
+ /** Store-by-store clean-up of a removed device, with a bounded retry (D864). */
99
+ private removalCleanupImpl;
100
+ private removalHooksCleanupImpl;
98
101
  /** Declared secret config paths per device, as last registered (D783). */
99
102
  private readonly secretConfigPaths;
100
103
  /** The keychain side of driver device forms (D789), wired in onInitialize. */
@@ -222,6 +225,8 @@ export declare class DeviceManagerAddon extends BaseAddon {
222
225
  /** The narrow dependency bag the activation verb needs (D556). */
223
226
  private get wrapperActivationDeps();
224
227
  protected onInitialize(): Promise<ProviderRegistration[] | void>;
228
+ private get removalCleanup();
229
+ private get removalHooksCleanup();
225
230
  protected onShutdown(): Promise<void>;
226
231
  }
227
232
  export default DeviceManagerAddon;