@camstack/system 1.2.345 → 1.2.347

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 (67) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  13. package/dist/builtins/calendars/calendars.addon.js +1 -1
  14. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  15. package/dist/builtins/camera-grid/index.js +1 -1
  16. package/dist/builtins/camera-grid/index.mjs +1 -1
  17. package/dist/builtins/composer/composer.addon.js +2 -2
  18. package/dist/builtins/composer/composer.addon.mjs +2 -2
  19. package/dist/builtins/console-logging/index.js +1 -1
  20. package/dist/builtins/console-logging/index.mjs +1 -1
  21. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  22. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  23. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  24. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  25. package/dist/builtins/hub-forwarder/index.js +1 -1
  26. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  27. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  28. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  29. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  30. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  31. package/dist/builtins/local-network/local-network.addon.js +2 -2
  32. package/dist/builtins/local-network/local-network.addon.mjs +2 -2
  33. package/dist/builtins/loki-logging/index.js +1 -1
  34. package/dist/builtins/loki-logging/index.mjs +1 -1
  35. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  36. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  37. package/dist/builtins/platform-probe/index.js +1 -1
  38. package/dist/builtins/platform-probe/index.mjs +1 -1
  39. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  40. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  41. package/dist/builtins/snapshot/index.js +1 -1
  42. package/dist/builtins/snapshot/index.mjs +1 -1
  43. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  44. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  45. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  46. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  47. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  48. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  49. package/dist/builtins/system-config/system-config.addon.js +1 -1
  50. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  51. package/dist/builtins/winston-logging/index.js +1 -1
  52. package/dist/builtins/winston-logging/index.mjs +1 -1
  53. package/dist/{child-cap-dispatch-Bm4Kpo7v.js → child-cap-dispatch-CVOa1BZI.js} +1 -1
  54. package/dist/{child-cap-dispatch-B52e2Bcw.mjs → child-cap-dispatch-OLFN-F85.mjs} +1 -1
  55. package/dist/{composition-sources-Dk6MDMFV.js → composition-sources-CeZ3tyH8.js} +1 -1
  56. package/dist/{composition-sources-BSzq8Hfu.mjs → composition-sources-pQsmMdpR.mjs} +1 -1
  57. package/dist/{dist-0zO6jHkf.mjs → dist-BUFcHq7H.mjs} +92 -0
  58. package/dist/{dist-CqafgUSr.js → dist-DTgd2gOR.js} +92 -0
  59. package/dist/index.js +3 -3
  60. package/dist/index.mjs +3 -3
  61. package/dist/{retired-settings-keys-uQUjT56-.js → retired-settings-keys-Ddb5cCNR.js} +1 -1
  62. package/dist/{retired-settings-keys-Dnuhd8Ml.mjs → retired-settings-keys-ltKefX3N.mjs} +1 -1
  63. package/dist/tls/cert-identity.d.ts +4 -3
  64. package/dist/tls/cert-manager.d.ts +3 -2
  65. package/dist/{tls-IM-v7JV4.mjs → tls-DAtaKVUT.mjs} +10 -15
  66. package/dist/{tls-D_wUeOTD.js → tls-DEjOOARt.js} +10 -15
  67. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_child_cap_dispatch = require("./child-cap-dispatch-Bm4Kpo7v.js");
2
+ const require_child_cap_dispatch = require("./child-cap-dispatch-CVOa1BZI.js");
3
3
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
4
4
  let node_path = require("node:path");
5
5
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Ft as installManifestNativeDeps, H as createUdsLoggerWithControl, It as resolveAddonClass, St as validateProviderRegistrations, Tn as emitHeapDiagnosticReport, U as LocalChildClient, _t as getWorkerNativeCapProvider, bt as setWorkerNativeCapsChangeListener, en as RUNNER_RSS_BUDGET_ENV, f as installManifestSystemDeps, g as createUdsAddonContext, i as killOwnRunnerGroupAfterParentLoss, n as createChildCapDispatch, p as installManifestPythonDeps, pn as startRunnerHeapWatch, u as startRunnerParentDeathWatchdog, vt as getWorkerNativeCapSnapshot } from "./child-cap-dispatch-B52e2Bcw.mjs";
1
+ import { Ft as installManifestNativeDeps, H as createUdsLoggerWithControl, It as resolveAddonClass, St as validateProviderRegistrations, Tn as emitHeapDiagnosticReport, U as LocalChildClient, _t as getWorkerNativeCapProvider, bt as setWorkerNativeCapsChangeListener, en as RUNNER_RSS_BUDGET_ENV, f as installManifestSystemDeps, g as createUdsAddonContext, i as killOwnRunnerGroupAfterParentLoss, n as createChildCapDispatch, p as installManifestPythonDeps, pn as startRunnerHeapWatch, u as startRunnerParentDeathWatchdog, vt as getWorkerNativeCapSnapshot } from "./child-cap-dispatch-OLFN-F85.mjs";
2
2
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
3
3
  import { register } from "node:module";
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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.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 { Gn as BaseAddon, V as addonPagesCapability, Wn as errMsg, gr as EventCategory } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, V as addonPagesCapability, Wn as errMsg, gr as EventCategory } from "../../dist-BUFcHq7H.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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.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 { Gn as BaseAddon, U as addonWidgetsCapability, Wn as errMsg, gr as EventCategory } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, U as addonWidgetsCapability, Wn as errMsg, gr as EventCategory } from "../../dist-BUFcHq7H.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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  //#region src/builtins/alerts/prune-policy.ts
8
8
  /**
9
9
  * Ids older than `cutoffMs`, oldest first.
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, W as alertsCapability, Wn as errMsg, gr as EventCategory, n as AlertSchema, tr as createEvent } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, W as alertsCapability, Wn as errMsg, gr as EventCategory, n as AlertSchema, tr as createEvent } from "../../dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/alerts/prune-policy.ts
3
3
  /**
4
4
  * Ids older than `cutoffMs`, oldest first.
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.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 { Gn as BaseAddon, Wn as errMsg, b as FIRST_LEVEL_MACRO_CLASSES, gr as EventCategory, in as ptzAutotrackCapability, q as bareAddonId, sr as isEvent } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Wn as errMsg, b as FIRST_LEVEL_MACRO_CLASSES, gr as EventCategory, in as ptzAutotrackCapability, q as bareAddonId, sr as isEvent } from "../../dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let buffer = require("buffer");
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, K as backupCapability, Kt as mayWriteToLocation, cr as nodePin, gr as EventCategory, hr as toNodeId, m as DATABASE_SNAPSHOT_SUFFIX, yn as storageOccupancyCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, K as backupCapability, Kt as mayWriteToLocation, cr as nodePin, gr as EventCategory, hr as toNodeId, m as DATABASE_SNAPSHOT_SUFFIX, yn as storageOccupancyCapability } from "../../dist-BUFcHq7H.mjs";
2
2
  import { randomBytes, randomUUID } from "node:crypto";
3
3
  import { Buffer as Buffer$1 } from "buffer";
4
4
  import * as fsp from "node:fs/promises";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  //#region src/builtins/calendars/calendars.addon.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, Wn as errMsg, Z as calendarsCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Wn as errMsg, Z as calendarsCapability } from "../../dist-BUFcHq7H.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  //#region src/builtins/calendars/calendars.addon.ts
4
4
  /**
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.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");
@@ -1,4 +1,4 @@
1
- import { An as buildFfmpegArgs, Gn as BaseAddon, O as MOTION_CLOSE_AFTER_MS, Q as cameraGridLayoutCapability, Un as DeviceType, Vn as DeviceFeature, Wn as errMsg, Xt as motionCapability, _ as DERIVED_CAMERA_SILENCED_CAP_NAMES, ar as hydrateSchema, dt as declarationOwnerNodeId, gn as snapshotCapability, gr as EventCategory, i as BaseDevice, qt as memoizePinnedFfmpeg, tr as createEvent, v as DeclaredDevices, xn as streamCatalogCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { An as buildFfmpegArgs, Gn as BaseAddon, O as MOTION_CLOSE_AFTER_MS, Q as cameraGridLayoutCapability, Un as DeviceType, Vn as DeviceFeature, Wn as errMsg, Xt as motionCapability, _ as DERIVED_CAMERA_SILENCED_CAP_NAMES, ar as hydrateSchema, dt as declarationOwnerNodeId, gn as snapshotCapability, gr as EventCategory, i as BaseDevice, qt as memoizePinnedFfmpeg, tr as createEvent, v as DeclaredDevices, xn as streamCatalogCapability } from "../../dist-BUFcHq7H.mjs";
2
2
  import { z } from "zod";
3
3
  import { FfmpegProcess } from "@camstack/types/node";
4
4
  import { join } from "node:path";
@@ -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-CqafgUSr.js");
7
- const require_composition_sources = require("../../composition-sources-Dk6MDMFV.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
+ const require_composition_sources = require("../../composition-sources-CeZ3tyH8.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 { Bn as toExpressionValue, Ct as evaluateCompositionField, Fn as compositionItemFieldPath, Gn as BaseAddon, In as compositionSliceKey, Ln as compositionSourceKey, Mn as composedDeviceRef, Nn as composedDeviceStableId, Pn as compositionFeatureEnabled, Rn as createStatefulExpressionMemory, Un as DeviceType, Wn as errMsg, Y as buildCapabilityLookup, c as COMPOSED_ITEM_FIXED_FIELDS, et as composerCapability, gr as EventCategory, i as BaseDevice, jn as cloneStatefulExpressionMemory, kn as COMPOSER_ADDON_ID, t as ALL_CAPABILITY_DEFINITIONS, tn as planComposition, tr as createEvent, tt as compositionFieldKey, v as DeclaredDevices, zn as disarmRoseMemory } from "../../dist-0zO6jHkf.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-BSzq8Hfu.mjs";
1
+ import { Bn as toExpressionValue, Ct as evaluateCompositionField, Fn as compositionItemFieldPath, Gn as BaseAddon, In as compositionSliceKey, Ln as compositionSourceKey, Mn as composedDeviceRef, Nn as composedDeviceStableId, Pn as compositionFeatureEnabled, Rn as createStatefulExpressionMemory, Un as DeviceType, Wn as errMsg, Y as buildCapabilityLookup, c as COMPOSED_ITEM_FIXED_FIELDS, et as composerCapability, gr as EventCategory, i as BaseDevice, jn as cloneStatefulExpressionMemory, kn as COMPOSER_ADDON_ID, t as ALL_CAPABILITY_DEFINITIONS, tn as planComposition, tr as createEvent, tt as compositionFieldKey, v as DeclaredDevices, zn as disarmRoseMemory } from "../../dist-BUFcHq7H.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-pQsmMdpR.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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.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 = {
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-BUFcHq7H.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 = {
@@ -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-CqafgUSr.js");
4
- const require_composition_sources = require("../../composition-sources-Dk6MDMFV.js");
3
+ const require_dist = require("../../dist-DTgd2gOR.js");
4
+ const require_composition_sources = require("../../composition-sources-CeZ3tyH8.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 { Gn as BaseAddon, Ln as compositionSourceKey, Mn as composedDeviceRef, Wn as errMsg, Y as buildCapabilityLookup, at as coreBlockIdFromAddonId, d as CORE_BLOCK_ADDON_PREFIX, f as CoreBlockSchema, ht as describeComposableCaps, it as coreBlockComposition, l as COMPOSER_RUNNER_ID, nt as compositionSourceRefs, on as replacedFieldKeys, ot as coreBlockSourceKind, rt as coreBlockAddonId, st as coreBlocksCapability, t as ALL_CAPABILITY_DEFINITIONS, tn as planComposition, u as CORE_BLOCKS_ADDON_ID, v as DeclaredDevices, wn as validateComposition } from "../../dist-0zO6jHkf.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-BSzq8Hfu.mjs";
1
+ import { Gn as BaseAddon, Ln as compositionSourceKey, Mn as composedDeviceRef, Wn as errMsg, Y as buildCapabilityLookup, at as coreBlockIdFromAddonId, d as CORE_BLOCK_ADDON_PREFIX, f as CoreBlockSchema, ht as describeComposableCaps, it as coreBlockComposition, l as COMPOSER_RUNNER_ID, nt as compositionSourceRefs, on as replacedFieldKeys, ot as coreBlockSourceKind, rt as coreBlockAddonId, st as coreBlocksCapability, t as ALL_CAPABILITY_DEFINITIONS, tn as planComposition, u as CORE_BLOCKS_ADDON_ID, v as DeclaredDevices, wn as validateComposition } from "../../dist-BUFcHq7H.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-pQsmMdpR.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { customizationBlockName } from "@camstack/types/node";
5
5
  import * as fs from "node:fs/promises";
@@ -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-CqafgUSr.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-uQUjT56-.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-Ddb5cCNR.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
10
10
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,5 +1,5 @@
1
- import { D as MINUTES_PER_DAY, Gn as BaseAddon, Hn as DeviceRole, Lt as legacyAutoLinkIds, P as STREAM_PROFILE_META, S as FieldClaimSchema, St as enumerateSchemaFields, T as LocationIconIdSchema, Tt as expandContainer, Un as DeviceType, Vn as DeviceFeature, Vt as locationIconKey, Wn as errMsg, X as buildStreamParamsConfigSchema, Zn as WELL_KNOWN_TAB_MAP, Zt as normalizeUnit, _t as deviceManagerCapability, ct as createDeviceExtensionProvider, en as parseStreamParamsFormPatch, g as DAY_NAMES, gr as EventCategory, gt as deviceExtensionCapability, hn as siteZoneKey, kt as formatMinutes, mr as sleep$1, o as CAMERA_SWITCH_ORDER, or as isDeviceConfigCap, pt as defineExtensionSlotProvider, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, un as runtimeStatePolicyFor, vt as deviceStateCapability, x as FieldClaimModeSchema, xt as enumerateItemArrayFields, y as DeviceStatusSchema, yt as deviceStatusCapability } from "../../dist-0zO6jHkf.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-Dnuhd8Ml.mjs";
1
+ import { D as MINUTES_PER_DAY, Gn as BaseAddon, Hn as DeviceRole, Lt as legacyAutoLinkIds, P as STREAM_PROFILE_META, S as FieldClaimSchema, St as enumerateSchemaFields, T as LocationIconIdSchema, Tt as expandContainer, Un as DeviceType, Vn as DeviceFeature, Vt as locationIconKey, Wn as errMsg, X as buildStreamParamsConfigSchema, Zn as WELL_KNOWN_TAB_MAP, Zt as normalizeUnit, _t as deviceManagerCapability, ct as createDeviceExtensionProvider, en as parseStreamParamsFormPatch, g as DAY_NAMES, gr as EventCategory, gt as deviceExtensionCapability, hn as siteZoneKey, kt as formatMinutes, mr as sleep$1, o as CAMERA_SWITCH_ORDER, or as isDeviceConfigCap, pt as defineExtensionSlotProvider, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, un as runtimeStatePolicyFor, vt as deviceStateCapability, x as FieldClaimModeSchema, xt as enumerateItemArrayFields, y as DeviceStatusSchema, yt as deviceStatusCapability } from "../../dist-BUFcHq7H.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-ltKefX3N.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
9
9
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-BUFcHq7H.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-CqafgUSr.js");
3
+ const require_dist = require("../../dist-DTgd2gOR.js");
4
4
  //#region src/builtins/liveness-monitor/liveness-checks.ts
5
5
  var NO_DEVICES = "liveness:no-devices";
6
6
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, M as RecordingStatusSchema, Wn as errMsg, gr as EventCategory, k as RECORDING_SOURCE_CAMSTACK_ADDON, tr as createEvent } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, M as RecordingStatusSchema, Wn as errMsg, gr as EventCategory, k as RECORDING_SOURCE_CAMSTACK_ADDON, tr as createEvent } from "../../dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/liveness-monitor/liveness-checks.ts
3
3
  var NO_DEVICES = "liveness:no-devices";
4
4
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  node_crypto = require_chunk.__toESM(node_crypto);
9
9
  let crypto$1 = require("crypto");
@@ -1,5 +1,5 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { B as UserRecordSchema, Cn as userManagementCapability, F as ScopedTokenSchema, G as authProviderCapability, Gn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-0zO6jHkf.mjs";
2
+ import { B as UserRecordSchema, Cn as userManagementCapability, F as ScopedTokenSchema, G as authProviderCapability, Gn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-BUFcHq7H.mjs";
3
3
  import * as crypto$2 from "node:crypto";
4
4
  import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
5
5
  import nodeCrypto from "crypto";
@@ -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-CqafgUSr.js");
4
- const require_tls = require("../../tls-D_wUeOTD.js");
3
+ const require_dist = require("../../dist-DTgd2gOR.js");
4
+ const require_tls = require("../../tls-DEjOOARt.js");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  let node_path = require("node:path");
7
7
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
- import { Bt as localNetworkCapability, Gn as BaseAddon, gr as EventCategory } from "../../dist-0zO6jHkf.mjs";
2
- import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-IM-v7JV4.mjs";
1
+ import { Bt as localNetworkCapability, Gn as BaseAddon, gr as EventCategory } from "../../dist-BUFcHq7H.mjs";
2
+ import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-DAtaKVUT.mjs";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
4
  import { join } from "node:path";
5
5
  import { readFileSync } from "node:fs";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  //#region src/builtins/loki-logging/loki-payload.ts
8
8
  /**
9
9
  * Loki rejects a label name that is not a valid Prometheus label
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/loki-logging/loki-payload.ts
3
3
  /**
4
4
  * Loki rejects a label name that is not a valid Prometheus label
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  const require_proc_stat = require("../../proc-stat-DL-WUOhl.js");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_fs = require("node:fs");
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, Jt as metricsProviderCapability, Ot as foldSnapshotByFunction, Wn as errMsg, an as reducePoints, gr as EventCategory, sn as resolveBucketMs, tr as createEvent } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Jt as metricsProviderCapability, Ot as foldSnapshotByFunction, Wn as errMsg, an as reducePoints, gr as EventCategory, sn as resolveBucketMs, tr as createEvent } from "../../dist-BUFcHq7H.mjs";
2
2
  import { a as parseProcStat, i as nodeProcReader, n as elapsedSecSince, o as parseProcStatusRss, r as lifetimeCpuPercent, t as commandFromCmdline } from "../../proc-stat-CbC55Kqi.mjs";
3
3
  import { access, readFile, readdir } from "node:fs/promises";
4
4
  import * as fs from "node:fs";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Gn as BaseAddon, Wn as errMsg, bt as enumerateInferenceDevices, gr as EventCategory, nn as platformProbeCapability, pn as scoreRuntimes, rr as emitReadiness } from "../../dist-0zO6jHkf.mjs";
2
+ import { Gn as BaseAddon, Wn as errMsg, bt as enumerateInferenceDevices, gr as EventCategory, nn as platformProbeCapability, pn as scoreRuntimes, rr as emitReadiness } from "../../dist-BUFcHq7H.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { execFile } from "node:child_process";
5
5
  import * as os from "node:os";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
8
8
  /**
9
9
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, gr as EventCategory } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, gr as EventCategory } from "../../dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-D_C5-nC0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, J as batteryCapability, Sn as streamQualityLabel, Un as DeviceType, Vn as DeviceFeature, Wn as errMsg, a as BatteryStatusSchema, cr as nodePin, gn as snapshotCapability, gr as EventCategory, mt as deriveBatteryPresence, q as bareAddonId, qt as memoizePinnedFfmpeg } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, J as batteryCapability, Sn as streamQualityLabel, Un as DeviceType, Vn as DeviceFeature, Wn as errMsg, a as BatteryStatusSchema, cr as nodePin, gn as snapshotCapability, gr as EventCategory, mt as deriveBatteryPresence, q as bareAddonId, qt as memoizePinnedFfmpeg } from "../../dist-BUFcHq7H.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CyFs1M3I.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Dt as filesystemBrowseCapability, Gn as BaseAddon, bn as storageProviderCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { Dt as filesystemBrowseCapability, Gn as BaseAddon, bn as storageProviderCapability } from "../../dist-BUFcHq7H.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  const require_hub_cap_forward = require("../../hub-cap-forward-DmHNjbB0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { $ as collectSecretConfigKeys, A as REDACTED_SECRET, At as gbToBytes, Gn as BaseAddon, Gt as mayReadLocation, I as StorageCleanupJobSchema, Kt as mayWriteToLocation, L as StorageLocationModeSchema, Nt as isLocationEnabled, On as withLocationMode, R as StorageLocationTypeSchema, Rt as legacyModeOf, Yt as modeMayWrite, _n as storageCapability, cn as resolveLocationMode, gr as EventCategory, lr as parseJsonObject, mn as settingsStoreCapability, vn as storageMigrationCapability, w as LegacyStorageLocationDefaultSchema, wt as evictionPolicyOfLocation, z as StorageMigrationJobSchema } from "../../dist-0zO6jHkf.mjs";
1
+ import { $ as collectSecretConfigKeys, A as REDACTED_SECRET, At as gbToBytes, Gn as BaseAddon, Gt as mayReadLocation, I as StorageCleanupJobSchema, Kt as mayWriteToLocation, L as StorageLocationModeSchema, Nt as isLocationEnabled, On as withLocationMode, R as StorageLocationTypeSchema, Rt as legacyModeOf, Yt as modeMayWrite, _n as storageCapability, cn as resolveLocationMode, gr as EventCategory, lr as parseJsonObject, mn as settingsStoreCapability, vn as storageMigrationCapability, w as LegacyStorageLocationDefaultSchema, wt as evictionPolicyOfLocation, z as StorageMigrationJobSchema } from "../../dist-BUFcHq7H.mjs";
2
2
  import { t as HUB_CAP_FWD_ACTION } from "../../hub-cap-forward-BdT320dq.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  //#region src/builtins/system-config/system-config.addon.ts
8
8
  /**
9
9
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, Wn as errMsg, ar as hydrateSchema } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Wn as errMsg, ar as hydrateSchema } from "../../dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/system-config/system-config.addon.ts
3
3
  /**
4
4
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -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-CqafgUSr.js");
6
+ const require_dist = require("../../dist-DTgd2gOR.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-0zO6jHkf.mjs";
1
+ import { Gn as BaseAddon, Ht as logDestinationCapability } from "../../dist-BUFcHq7H.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-CqafgUSr.js");
2
+ const require_dist = require("./dist-DTgd2gOR.js");
3
3
  const require_proc_stat = require("./proc-stat-DL-WUOhl.js");
4
4
  require("./hub-cap-forward-DmHNjbB0.js");
5
5
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { gr as EventCategory$1, tr as createEvent } from "./dist-0zO6jHkf.mjs";
1
+ import { gr as EventCategory$1, tr as createEvent } from "./dist-BUFcHq7H.mjs";
2
2
  import { a as parseProcStat, i as nodeProcReader } from "./proc-stat-CbC55Kqi.mjs";
3
3
  import "./hub-cap-forward-BdT320dq.mjs";
4
4
  import * as crypto$1 from "node:crypto";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CqafgUSr.js");
1
+ const require_dist = require("./dist-DTgd2gOR.js");
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -1,4 +1,4 @@
1
- import { Ln as compositionSourceKey, Wn as errMsg } from "./dist-0zO6jHkf.mjs";
1
+ import { Ln as compositionSourceKey, Wn as errMsg } from "./dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/core-blocks/composition-sources.ts
3
3
  /**
4
4
  * Describe what a composition reads and writes for SAVE-time validation
@@ -21525,6 +21525,39 @@ var NcAlarmSettingsSchema = z.object({
21525
21525
  modeDelays: NcAlarmModeDelaysListSchema.default([])
21526
21526
  });
21527
21527
  /**
21528
+ * One named alarm configuration profile — a full {@link NcAlarmSettings} blob
21529
+ * (memberships including secure-on-arm, delays, announce targets). The id is
21530
+ * assigned by the server; clients show the name.
21531
+ */
21532
+ var NcAlarmProfileMetaSchema = z.object({
21533
+ id: z.string().min(1).max(64),
21534
+ name: z.string().min(1).max(64),
21535
+ /** The seeded Default profile — cannot be deleted. */
21536
+ isDefault: z.boolean()
21537
+ });
21538
+ /**
21539
+ * Profiles ride on {@link NcAlarmConfig}: one globally active profile, whose
21540
+ * settings are what arm decisions and `settings` already expose. Switching
21541
+ * active applies that profile's blob onto the panel.
21542
+ */
21543
+ var NcAlarmProfilesViewSchema = z.object({
21544
+ activeId: z.string().min(1),
21545
+ items: z.array(NcAlarmProfileMetaSchema).min(1)
21546
+ });
21547
+ var NcAlarmCreateProfileInputSchema = z.object({
21548
+ name: z.string().min(1).max(64),
21549
+ /**
21550
+ * Omit / undefined → system defaults (empty memberships, stock delays).
21551
+ * Set → clone that profile's settings.
21552
+ */
21553
+ cloneFromId: z.string().min(1).max(64).optional()
21554
+ });
21555
+ var NcAlarmRenameProfileInputSchema = z.object({
21556
+ id: z.string().min(1).max(64),
21557
+ name: z.string().min(1).max(64)
21558
+ });
21559
+ var NcAlarmProfileIdInputSchema = z.object({ id: z.string().min(1).max(64) });
21560
+ /**
21528
21561
  * Every field optional — a tab edits one control at a time.
21529
21562
  *
21530
21563
  * List fields and `modeDelays` are re-declared WITHOUT their defaults:
@@ -21635,6 +21668,11 @@ var NcAlarmConfigSchema = z.object({
21635
21668
  */
21636
21669
  deviceId: z.number().int().nullable(),
21637
21670
  settings: NcAlarmSettingsSchema,
21671
+ /**
21672
+ * Named configuration profiles. Optional so an older hub answer still parses;
21673
+ * a client without this field shows no picker (single implicit Default).
21674
+ */
21675
+ profiles: NcAlarmProfilesViewSchema.optional(),
21638
21676
  coverage: z.array(NcAlarmModeCoverageSchema),
21639
21677
  /**
21640
21678
  * The panel as it is NOW — state, what each mode would find open, what is
@@ -21925,6 +21963,36 @@ var notificationRulesCapability = {
21925
21963
  auth: "admin"
21926
21964
  }),
21927
21965
  /**
21966
+ * Create a named profile. Without `cloneFromId` the new profile starts at
21967
+ * system defaults (empty memberships); with it, a copy of that profile.
21968
+ * Does not activate — the operator switches explicitly.
21969
+ */
21970
+ createAlarmProfile: method(NcAlarmCreateProfileInputSchema, NcAlarmConfigSchema, {
21971
+ kind: "mutation",
21972
+ auth: "admin"
21973
+ }),
21974
+ /** Rename a profile (Default included — only the name, never the id). */
21975
+ renameAlarmProfile: method(NcAlarmRenameProfileInputSchema, NcAlarmConfigSchema, {
21976
+ kind: "mutation",
21977
+ auth: "admin"
21978
+ }),
21979
+ /**
21980
+ * Delete a non-default profile. If it was active, Default becomes active
21981
+ * and its settings are applied for arm decisions.
21982
+ */
21983
+ deleteAlarmProfile: method(NcAlarmProfileIdInputSchema, NcAlarmConfigSchema, {
21984
+ kind: "mutation",
21985
+ auth: "admin"
21986
+ }),
21987
+ /**
21988
+ * Make this profile active: its membership/delays blob is applied to the
21989
+ * panel so the next arm uses it.
21990
+ */
21991
+ activateAlarmProfile: method(NcAlarmProfileIdInputSchema, NcAlarmConfigSchema, {
21992
+ kind: "mutation",
21993
+ auth: "admin"
21994
+ }),
21995
+ /**
21928
21996
  * The CURRENT state of each asked device as the alarm reads it (D697) — open, closed,
21929
21997
  * unknown (why) or not an opening, plus liveness. Classified by the same table the arm
21930
21998
  * check uses (`alarm-openings.ts`), so the editor and the arm can never disagree. The
@@ -51423,12 +51491,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
51423
51491
  addonId: null,
51424
51492
  access: "create"
51425
51493
  },
51494
+ "notificationRules.activateAlarmProfile": {
51495
+ capName: "notification-rules",
51496
+ capScope: "system",
51497
+ addonId: null,
51498
+ access: "create"
51499
+ },
51426
51500
  "notificationRules.cancelSnooze": {
51427
51501
  capName: "notification-rules",
51428
51502
  capScope: "system",
51429
51503
  addonId: null,
51430
51504
  access: "create"
51431
51505
  },
51506
+ "notificationRules.createAlarmProfile": {
51507
+ capName: "notification-rules",
51508
+ capScope: "system",
51509
+ addonId: null,
51510
+ access: "create"
51511
+ },
51432
51512
  "notificationRules.createRule": {
51433
51513
  capName: "notification-rules",
51434
51514
  capScope: "system",
@@ -51441,6 +51521,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51441
51521
  addonId: null,
51442
51522
  access: "create"
51443
51523
  },
51524
+ "notificationRules.deleteAlarmProfile": {
51525
+ capName: "notification-rules",
51526
+ capScope: "system",
51527
+ addonId: null,
51528
+ access: "delete"
51529
+ },
51444
51530
  "notificationRules.deleteRule": {
51445
51531
  capName: "notification-rules",
51446
51532
  capScope: "system",
@@ -51525,6 +51611,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51525
51611
  addonId: null,
51526
51612
  access: "view"
51527
51613
  },
51614
+ "notificationRules.renameAlarmProfile": {
51615
+ capName: "notification-rules",
51616
+ capScope: "system",
51617
+ addonId: null,
51618
+ access: "create"
51619
+ },
51528
51620
  "notificationRules.resolveArtifactUrl": {
51529
51621
  capName: "notification-rules",
51530
51622
  capScope: "system",
@@ -21525,6 +21525,39 @@ var NcAlarmSettingsSchema = zod.z.object({
21525
21525
  modeDelays: NcAlarmModeDelaysListSchema.default([])
21526
21526
  });
21527
21527
  /**
21528
+ * One named alarm configuration profile — a full {@link NcAlarmSettings} blob
21529
+ * (memberships including secure-on-arm, delays, announce targets). The id is
21530
+ * assigned by the server; clients show the name.
21531
+ */
21532
+ var NcAlarmProfileMetaSchema = zod.z.object({
21533
+ id: zod.z.string().min(1).max(64),
21534
+ name: zod.z.string().min(1).max(64),
21535
+ /** The seeded Default profile — cannot be deleted. */
21536
+ isDefault: zod.z.boolean()
21537
+ });
21538
+ /**
21539
+ * Profiles ride on {@link NcAlarmConfig}: one globally active profile, whose
21540
+ * settings are what arm decisions and `settings` already expose. Switching
21541
+ * active applies that profile's blob onto the panel.
21542
+ */
21543
+ var NcAlarmProfilesViewSchema = zod.z.object({
21544
+ activeId: zod.z.string().min(1),
21545
+ items: zod.z.array(NcAlarmProfileMetaSchema).min(1)
21546
+ });
21547
+ var NcAlarmCreateProfileInputSchema = zod.z.object({
21548
+ name: zod.z.string().min(1).max(64),
21549
+ /**
21550
+ * Omit / undefined → system defaults (empty memberships, stock delays).
21551
+ * Set → clone that profile's settings.
21552
+ */
21553
+ cloneFromId: zod.z.string().min(1).max(64).optional()
21554
+ });
21555
+ var NcAlarmRenameProfileInputSchema = zod.z.object({
21556
+ id: zod.z.string().min(1).max(64),
21557
+ name: zod.z.string().min(1).max(64)
21558
+ });
21559
+ var NcAlarmProfileIdInputSchema = zod.z.object({ id: zod.z.string().min(1).max(64) });
21560
+ /**
21528
21561
  * Every field optional — a tab edits one control at a time.
21529
21562
  *
21530
21563
  * List fields and `modeDelays` are re-declared WITHOUT their defaults:
@@ -21635,6 +21668,11 @@ var NcAlarmConfigSchema = zod.z.object({
21635
21668
  */
21636
21669
  deviceId: zod.z.number().int().nullable(),
21637
21670
  settings: NcAlarmSettingsSchema,
21671
+ /**
21672
+ * Named configuration profiles. Optional so an older hub answer still parses;
21673
+ * a client without this field shows no picker (single implicit Default).
21674
+ */
21675
+ profiles: NcAlarmProfilesViewSchema.optional(),
21638
21676
  coverage: zod.z.array(NcAlarmModeCoverageSchema),
21639
21677
  /**
21640
21678
  * The panel as it is NOW — state, what each mode would find open, what is
@@ -21925,6 +21963,36 @@ var notificationRulesCapability = {
21925
21963
  auth: "admin"
21926
21964
  }),
21927
21965
  /**
21966
+ * Create a named profile. Without `cloneFromId` the new profile starts at
21967
+ * system defaults (empty memberships); with it, a copy of that profile.
21968
+ * Does not activate — the operator switches explicitly.
21969
+ */
21970
+ createAlarmProfile: method(NcAlarmCreateProfileInputSchema, NcAlarmConfigSchema, {
21971
+ kind: "mutation",
21972
+ auth: "admin"
21973
+ }),
21974
+ /** Rename a profile (Default included — only the name, never the id). */
21975
+ renameAlarmProfile: method(NcAlarmRenameProfileInputSchema, NcAlarmConfigSchema, {
21976
+ kind: "mutation",
21977
+ auth: "admin"
21978
+ }),
21979
+ /**
21980
+ * Delete a non-default profile. If it was active, Default becomes active
21981
+ * and its settings are applied for arm decisions.
21982
+ */
21983
+ deleteAlarmProfile: method(NcAlarmProfileIdInputSchema, NcAlarmConfigSchema, {
21984
+ kind: "mutation",
21985
+ auth: "admin"
21986
+ }),
21987
+ /**
21988
+ * Make this profile active: its membership/delays blob is applied to the
21989
+ * panel so the next arm uses it.
21990
+ */
21991
+ activateAlarmProfile: method(NcAlarmProfileIdInputSchema, NcAlarmConfigSchema, {
21992
+ kind: "mutation",
21993
+ auth: "admin"
21994
+ }),
21995
+ /**
21928
21996
  * The CURRENT state of each asked device as the alarm reads it (D697) — open, closed,
21929
21997
  * unknown (why) or not an opening, plus liveness. Classified by the same table the arm
21930
21998
  * check uses (`alarm-openings.ts`), so the editor and the arm can never disagree. The
@@ -51423,12 +51491,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
51423
51491
  addonId: null,
51424
51492
  access: "create"
51425
51493
  },
51494
+ "notificationRules.activateAlarmProfile": {
51495
+ capName: "notification-rules",
51496
+ capScope: "system",
51497
+ addonId: null,
51498
+ access: "create"
51499
+ },
51426
51500
  "notificationRules.cancelSnooze": {
51427
51501
  capName: "notification-rules",
51428
51502
  capScope: "system",
51429
51503
  addonId: null,
51430
51504
  access: "create"
51431
51505
  },
51506
+ "notificationRules.createAlarmProfile": {
51507
+ capName: "notification-rules",
51508
+ capScope: "system",
51509
+ addonId: null,
51510
+ access: "create"
51511
+ },
51432
51512
  "notificationRules.createRule": {
51433
51513
  capName: "notification-rules",
51434
51514
  capScope: "system",
@@ -51441,6 +51521,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51441
51521
  addonId: null,
51442
51522
  access: "create"
51443
51523
  },
51524
+ "notificationRules.deleteAlarmProfile": {
51525
+ capName: "notification-rules",
51526
+ capScope: "system",
51527
+ addonId: null,
51528
+ access: "delete"
51529
+ },
51444
51530
  "notificationRules.deleteRule": {
51445
51531
  capName: "notification-rules",
51446
51532
  capScope: "system",
@@ -51525,6 +51611,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51525
51611
  addonId: null,
51526
51612
  access: "view"
51527
51613
  },
51614
+ "notificationRules.renameAlarmProfile": {
51615
+ capName: "notification-rules",
51616
+ capScope: "system",
51617
+ addonId: null,
51618
+ access: "create"
51619
+ },
51528
51620
  "notificationRules.resolveArtifactUrl": {
51529
51621
  capName: "notification-rules",
51530
51622
  capScope: "system",
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-CqafgUSr.js");
3
+ const require_dist = require("./dist-DTgd2gOR.js");
4
4
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
5
5
  require("./builtins/alerts/index.js");
6
6
  const require_builtins_calendars_calendars_addon = require("./builtins/calendars/calendars.addon.js");
@@ -30,8 +30,8 @@ const require_builtins_system_config_system_config_addon = require("./builtins/s
30
30
  require("./builtins/system-config/index.js");
31
31
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
32
32
  const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-ey4mbofz.js");
33
- const require_tls$1 = require("./tls-D_wUeOTD.js");
34
- const require_child_cap_dispatch = require("./child-cap-dispatch-Bm4Kpo7v.js");
33
+ const require_tls$1 = require("./tls-DEjOOARt.js");
34
+ const require_child_cap_dispatch = require("./child-cap-dispatch-CVOa1BZI.js");
35
35
  const require_resource_monitor = require("./resource-monitor-DzNn_IZK.js");
36
36
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
37
37
  let zod = require("zod");
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
2
- import { $n as asNumber, $t as objectInputDeclaresRequiredDeviceId, C as LOG_LEVEL_RANK, E as METHOD_ACCESS_MAP, Et as extractNestedAddonId, Ft as isVoidInput, H as addonSettingsCapability, It as kebabToCamel, Jn as DEVICE_STATUS_METHOD, Kn as DATAPLANE_SECRET_HEADER$1, Mt as isCollectionArrayMethod, Pt as isObjectInput, Qn as asJsonObject$1, Qt as objectInputDeclaresAddonId, Ut as logLevelAtMost, Wn as errMsg$1, Wt as looseSchema, Xn as ReadinessTimeoutError, Yn as ReadinessRegistry, dn as scopesAllowAddon, dr as readinessKey, er as asString$1, fn as scopesAllowDeviceCap, fr as resolveCapMount, gr as EventCategory$1, ir as expandCapMethods, j as RUNTIME_DEFAULTS, jt as isArrayOutputSchema, ln as resolveMethodAuth, lr as parseJsonObject, nr as emitDownForOwnedCaps, pr as scopeKey, qn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, rn as procedureAuthKey, t as ALL_CAPABILITY_DEFINITIONS, tr as createEvent, ur as parseJsonUnknown, zt as lifecycleJobSchema } from "./dist-0zO6jHkf.mjs";
2
+ import { $n as asNumber, $t as objectInputDeclaresRequiredDeviceId, C as LOG_LEVEL_RANK, E as METHOD_ACCESS_MAP, Et as extractNestedAddonId, Ft as isVoidInput, H as addonSettingsCapability, It as kebabToCamel, Jn as DEVICE_STATUS_METHOD, Kn as DATAPLANE_SECRET_HEADER$1, Mt as isCollectionArrayMethod, Pt as isObjectInput, Qn as asJsonObject$1, Qt as objectInputDeclaresAddonId, Ut as logLevelAtMost, Wn as errMsg$1, Wt as looseSchema, Xn as ReadinessTimeoutError, Yn as ReadinessRegistry, dn as scopesAllowAddon, dr as readinessKey, er as asString$1, fn as scopesAllowDeviceCap, fr as resolveCapMount, gr as EventCategory$1, ir as expandCapMethods, j as RUNTIME_DEFAULTS, jt as isArrayOutputSchema, ln as resolveMethodAuth, lr as parseJsonObject, nr as emitDownForOwnedCaps, pr as scopeKey, qn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, rn as procedureAuthKey, t as ALL_CAPABILITY_DEFINITIONS, tr as createEvent, ur as parseJsonUnknown, zt as lifecycleJobSchema } from "./dist-BUFcHq7H.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { CalendarsAddon } from "./builtins/calendars/calendars.addon.mjs";
@@ -29,8 +29,8 @@ import { SystemConfigAddon } from "./builtins/system-config/system-config.addon.
29
29
  import "./builtins/system-config/index.mjs";
30
30
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
31
31
  import { _ as ensureModel, a as createFileDataPlaneHandler, c as parseRangeHeader, d as ModelDownloadService, g as downloadModel, h as downloadFile, i as startEventLoopStallMonitor, l as parseTokenizedUrl, m as deleteModelFromDisk, n as STALL_TICK_MS, o as contentTypeFor, p as collectModelFiles, r as attributeStall, s as createAuthenticatedFileServer, t as STALL_REPORT_MS, u as resolveFilePath, v as fetchJson, x as isModelDownloaded, y as getModelFilePath } from "./event-loop-stall-monitor-EXjzIxDz.mjs";
32
- import { C as registerLanHttpHandler, S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, b as bindPendingLanHttp, c as loadTlsCert, d as collectCertIdentity, f as CA_VALIDITY_DAYS, g as evaluateExistingCert, h as SERVER_AUTH_OID, i as writeExtraSans, l as reissueTlsLeaf, m as MAX_LEAF_VALIDITY_DAYS, n as readTlsAccessStatus, o as validateUploadedTls, p as LEAF_RENEWAL_WINDOW_DAYS, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, u as CA_COMMON_NAME, v as allFamiliesListenHost, x as closeLanHttp, y as applyLanHttp } from "./tls-IM-v7JV4.mjs";
33
- import { $ as CapRouteError, $n as CAP_ACTION_UNLABELLED, $t as RUNNER_HEAP_WATCH_INTERVAL_MS, A as resolveHwAccel, An as OUTBOUND_QUEUE_COOLDOWN_MS, At as serializeTypedArrays, B as udsChildLogToWorkerEntry, Bn as SOCKET_QUEUE_TOP_N, Bt as createAddonPeerBytesFacility, C as getBrokerEventBus, Cn as DECISIVE_HEAP_SPACES, Ct as NATIVE_PROVIDER_SERVICE_INFIX, D as subscribePassthrough, Dn as heapSpaceField, Dt as capServiceName, E as setNodeEventInterest, En as formatHeapSpaces, Et as capBareAction, F as ipcParentLink, Fn as MESH_QUEUE_TOP_N, Ft as installManifestNativeDeps, G as UDS_NO_ROUTE_PREFIX, Gn as readSocketQueues, Gt as HEAP_RECLAIM_TRIGGER_MB, H as createUdsLoggerWithControl, Hn as createSocketPlaneReader, Ht as createAddonDataPlaneFacility, I as localProviderLink, In as createMeshQueueReader, It as resolveAddonClass, J as answerClaimedGetStatus, Jn as recordSocketFrame, Jt as HUB_MAIN_HEAP_WATCH_LABEL, K as afterWorkerOnlineAnnounce, Kn as EMPTY_SOCKET_DIRECTION, Kt as HEAP_WATCH_INTERVAL_MS, L as createParentUnownedCallHandler, Ln as formatMeshQueue, Lt as buildNpmChildEnv, M as brokerTransportLink, Mn as OUTBOUND_QUEUE_THRESHOLD_BYTES, Mt as CapabilityHandle, N as buildLinkChain, Nn as createOutboundQueueGate, Nt as CapabilityUnavailableError, O as AddonDepsManager, On as readHeapSpaces, Ot as parseCapAction, P as deviceCapResolverLink, Pn as formatOutboundQueueVerdict, Pt as copyBundledNativeModules, Q as CapRouteResolver, Qn as CAP_ACTION_OVERFLOW_LABEL, Qt as RSS_BUDGET_RELEASE_RATIO, R as createUdsEventBridge, Rn as EMPTY_SOCKET_PLANE_BASELINE, Rt as resolveNpmInvocation, S as clusterEventTopic, Sn as isArrayBufferCensusReport, St as validateProviderRegistrations, T as registerEventBusService, Tn as emitHeapDiagnosticReport, Tt as capActionSuffix, U as LocalChildClient, Un as diffSocketPlane, Ut as HEAP_RECLAIM_MIN_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneMeter, Vt as hostNodeIdOf, W as LocalChildRegistry, Wn as formatSocketPlane, Wt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, X as AGENT_CAP_FWD_ACTION, Xn as socketDirectionBytes, Xt as HUB_RSS_BUDGET_ENV, Y as deviceOfGetStatus, Yn as sampleSocketDirection, Yt as HUB_MAIN_RSS_BUDGET_MB, Z as AGENT_CAP_FWD_SERVICE, Zn as socketDirectionMessages, Zt as RSS_BUDGET_REANNOUNCE_MIN_MS, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, a as reapProcessGroup, an as createV8Reclaimer, ar as EVENT_PLANE_TOP_N, at as __resetCapUsageRegistryForTests, b as setHubConnected, bn as createInspectorArrayBufferCensus, c as runnerOwnsProcessGroup, cn as nextRssBudgetState, cr as diffEventPlane, ct as UdsLocalTransportClient, d as summarizeMembers, dn as shouldReclaim, dt as PeerAnsweredError, en as RUNNER_RSS_BUDGET_ENV, er as EMPTY_CAP_ACTION_READING, et as classifyCapRoute, f as installManifestSystemDeps, fn as startHeapWatch, ft as localEndpointPath, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, gt as createBrokerDeviceManagerApi, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ht as buildNativeCapProxy, in as createLoopDelayMeter, ir as diffCapActionCensus, it as PARENT_ROUTED_PROVIDER_ADDON_ID, j as brokerCallForCap, jn as OUTBOUND_QUEUE_SUSTAIN_MS, jt as DeviceRegistry, k as createKernelHwAccel, kn as selectReportedSpaces, kt as deserializeTypedArrays, l as signalAllRunnerGroups, ln as parseRssBudgetMb, lr as formatEventPlane, lt as UdsLocalTransportServer, m as adaptBrokerToCluster, mn as strandedMb, mt as encodeFrame, nn as buildHeapSample, nr as capActionLabel, nt as readMoleculerFanoutMode, o as registerRunnerGroup, on as describeRss, or as createEventPlaneMeter, ot as getCapUsageRegistry, p as installManifestPythonDeps, pn as startRunnerHeapWatch, pt as FrameDecoder, q as GET_STATUS_METHOD, qn as createSocketDirectionCounters, qt as HEAP_WATCH_WARN_RATIO, r as defaultProcessGroupOps, rn as createDeferredHeapWatchSink, rr as createCapActionCensus, rt as CapUsageRegistry, s as releaseRunnerGroup, sn as hubMainRssBudget, sr as createEventPlaneReader, st as createLocalTransport, t as CAP_METHOD_NOT_IMPLEMENTED, tn as ZERO_LOOP_DELAY, tr as MAX_CAP_ACTIONS_PER_PEER, tt as callWithServiceDiscovery, un as reclaimIntervalMs, ut as SocketChannel, v as getOrInitReadinessRegistry, vn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, w as getMoleculerEventStats, wn as HEAP_SPACE_REPORT_MIN_MB, wt as capActionName, x as EVENT_TOPIC_PREFIX, xn as formatArrayBufferCensus, xt as createAddonService, y as getOrInitReadinessRegistryForClient, yn as createArrayBufferCensusGate, yt as mountNativeCapService, z as createUdsEventBus, zn as SOCKET_PLANE_TOP_N, zt as runNpm } from "./child-cap-dispatch-B52e2Bcw.mjs";
32
+ import { C as registerLanHttpHandler, S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, b as bindPendingLanHttp, c as loadTlsCert, d as collectCertIdentity, f as CA_VALIDITY_DAYS, g as evaluateExistingCert, h as SERVER_AUTH_OID, i as writeExtraSans, l as reissueTlsLeaf, m as MAX_LEAF_VALIDITY_DAYS, n as readTlsAccessStatus, o as validateUploadedTls, p as LEAF_RENEWAL_WINDOW_DAYS, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, u as CA_COMMON_NAME, v as allFamiliesListenHost, x as closeLanHttp, y as applyLanHttp } from "./tls-DAtaKVUT.mjs";
33
+ import { $ as CapRouteError, $n as CAP_ACTION_UNLABELLED, $t as RUNNER_HEAP_WATCH_INTERVAL_MS, A as resolveHwAccel, An as OUTBOUND_QUEUE_COOLDOWN_MS, At as serializeTypedArrays, B as udsChildLogToWorkerEntry, Bn as SOCKET_QUEUE_TOP_N, Bt as createAddonPeerBytesFacility, C as getBrokerEventBus, Cn as DECISIVE_HEAP_SPACES, Ct as NATIVE_PROVIDER_SERVICE_INFIX, D as subscribePassthrough, Dn as heapSpaceField, Dt as capServiceName, E as setNodeEventInterest, En as formatHeapSpaces, Et as capBareAction, F as ipcParentLink, Fn as MESH_QUEUE_TOP_N, Ft as installManifestNativeDeps, G as UDS_NO_ROUTE_PREFIX, Gn as readSocketQueues, Gt as HEAP_RECLAIM_TRIGGER_MB, H as createUdsLoggerWithControl, Hn as createSocketPlaneReader, Ht as createAddonDataPlaneFacility, I as localProviderLink, In as createMeshQueueReader, It as resolveAddonClass, J as answerClaimedGetStatus, Jn as recordSocketFrame, Jt as HUB_MAIN_HEAP_WATCH_LABEL, K as afterWorkerOnlineAnnounce, Kn as EMPTY_SOCKET_DIRECTION, Kt as HEAP_WATCH_INTERVAL_MS, L as createParentUnownedCallHandler, Ln as formatMeshQueue, Lt as buildNpmChildEnv, M as brokerTransportLink, Mn as OUTBOUND_QUEUE_THRESHOLD_BYTES, Mt as CapabilityHandle, N as buildLinkChain, Nn as createOutboundQueueGate, Nt as CapabilityUnavailableError, O as AddonDepsManager, On as readHeapSpaces, Ot as parseCapAction, P as deviceCapResolverLink, Pn as formatOutboundQueueVerdict, Pt as copyBundledNativeModules, Q as CapRouteResolver, Qn as CAP_ACTION_OVERFLOW_LABEL, Qt as RSS_BUDGET_RELEASE_RATIO, R as createUdsEventBridge, Rn as EMPTY_SOCKET_PLANE_BASELINE, Rt as resolveNpmInvocation, S as clusterEventTopic, Sn as isArrayBufferCensusReport, St as validateProviderRegistrations, T as registerEventBusService, Tn as emitHeapDiagnosticReport, Tt as capActionSuffix, U as LocalChildClient, Un as diffSocketPlane, Ut as HEAP_RECLAIM_MIN_INTERVAL_MS, V as createUdsLogger, Vn as createSocketPlaneMeter, Vt as hostNodeIdOf, W as LocalChildRegistry, Wn as formatSocketPlane, Wt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, X as AGENT_CAP_FWD_ACTION, Xn as socketDirectionBytes, Xt as HUB_RSS_BUDGET_ENV, Y as deviceOfGetStatus, Yn as sampleSocketDirection, Yt as HUB_MAIN_RSS_BUDGET_MB, Z as AGENT_CAP_FWD_SERVICE, Zn as socketDirectionMessages, Zt as RSS_BUDGET_REANNOUNCE_MIN_MS, _ as getWorkerDeviceRegistry, _n as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, a as reapProcessGroup, an as createV8Reclaimer, ar as EVENT_PLANE_TOP_N, at as __resetCapUsageRegistryForTests, b as setHubConnected, bn as createInspectorArrayBufferCensus, c as runnerOwnsProcessGroup, cn as nextRssBudgetState, cr as diffEventPlane, ct as UdsLocalTransportClient, d as summarizeMembers, dn as shouldReclaim, dt as PeerAnsweredError, en as RUNNER_RSS_BUDGET_ENV, er as EMPTY_CAP_ACTION_READING, et as classifyCapRoute, f as installManifestSystemDeps, fn as startHeapWatch, ft as localEndpointPath, g as createUdsAddonContext, gn as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, gt as createBrokerDeviceManagerApi, h as createAddonContext, hn as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, ht as buildNativeCapProxy, in as createLoopDelayMeter, ir as diffCapActionCensus, it as PARENT_ROUTED_PROVIDER_ADDON_ID, j as brokerCallForCap, jn as OUTBOUND_QUEUE_SUSTAIN_MS, jt as DeviceRegistry, k as createKernelHwAccel, kn as selectReportedSpaces, kt as deserializeTypedArrays, l as signalAllRunnerGroups, ln as parseRssBudgetMb, lr as formatEventPlane, lt as UdsLocalTransportServer, m as adaptBrokerToCluster, mn as strandedMb, mt as encodeFrame, nn as buildHeapSample, nr as capActionLabel, nt as readMoleculerFanoutMode, o as registerRunnerGroup, on as describeRss, or as createEventPlaneMeter, ot as getCapUsageRegistry, p as installManifestPythonDeps, pn as startRunnerHeapWatch, pt as FrameDecoder, q as GET_STATUS_METHOD, qn as createSocketDirectionCounters, qt as HEAP_WATCH_WARN_RATIO, r as defaultProcessGroupOps, rn as createDeferredHeapWatchSink, rr as createCapActionCensus, rt as CapUsageRegistry, s as releaseRunnerGroup, sn as hubMainRssBudget, sr as createEventPlaneReader, st as createLocalTransport, t as CAP_METHOD_NOT_IMPLEMENTED, tn as ZERO_LOOP_DELAY, tr as MAX_CAP_ACTIONS_PER_PEER, tt as callWithServiceDiscovery, un as reclaimIntervalMs, ut as SocketChannel, v as getOrInitReadinessRegistry, vn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, w as getMoleculerEventStats, wn as HEAP_SPACE_REPORT_MIN_MB, wt as capActionName, x as EVENT_TOPIC_PREFIX, xn as formatArrayBufferCensus, xt as createAddonService, y as getOrInitReadinessRegistryForClient, yn as createArrayBufferCensusGate, yt as mountNativeCapService, z as createUdsEventBus, zn as SOCKET_PLANE_TOP_N, zt as runNpm } from "./child-cap-dispatch-OLFN-F85.mjs";
34
34
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-B1v6E07R.mjs";
35
35
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
36
36
  import { z } from "zod";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CqafgUSr.js");
1
+ const require_dist = require("./dist-DTgd2gOR.js");
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -1,4 +1,4 @@
1
- import { Qn as asJsonObject } from "./dist-0zO6jHkf.mjs";
1
+ import { Qn as asJsonObject } from "./dist-BUFcHq7H.mjs";
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -24,9 +24,10 @@ export declare function systemHostFacts(): HostFacts;
24
24
  *
25
25
  * The two are deliberately different sizes. Everything plausible is
26
26
  * certified — costs nothing. Only a **stable** identity gates
27
- * regeneration, because a gate that fires on a rotating address rewrites
28
- * the certificate on every boot, which is a worse bug than the one the
29
- * gate exists to fix.
27
+ * regeneration (IPv4 + DNS + operator `extraSans`), because a gate that
28
+ * fires on a rotating address rewrites the certificate on every boot,
29
+ * which is a worse bug than the one the gate exists to fix. IPv6 never
30
+ * gates — ULA proved as unstable as global SLAAC on the live hub.
30
31
  */
31
32
  export interface CertIdentity {
32
33
  readonly dnsNames: readonly string[];
@@ -68,8 +68,9 @@ export interface CertOptions {
68
68
  *
69
69
  * And explicitly NOT when: the certificate names an address the machine
70
70
  * no longer has (a superset still works — the check is one-directional),
71
- * a volatile interface (docker/VPN/mesh) or a global-scope IPv6 address
72
- * changed (SLAAC privacy addresses rotate daily), or a new build shipped.
71
+ * a volatile interface (docker/VPN/mesh) or **any** IPv6 address changed
72
+ * (global and ULA both rotate under privacy extensions / interface-id
73
+ * churn — `os` cannot tell temporary from permanent), or a new build shipped.
73
74
  *
74
75
  * Every trigger is derived from the files plus the machine, so once a
75
76
  * reissue clears them it clears them for good: the next boot returns
@@ -277,27 +277,21 @@ function isLinkLocal(value) {
277
277
  const parsed = Number.parseInt(firstGroup, 16);
278
278
  return Number.isFinite(parsed) && (parsed & 65472) === 65152;
279
279
  }
280
- /** `fc00::/7` — the IPv6 range that behaves like RFC 1918 does for v4. */
281
- function isUniqueLocalIpv6(value) {
282
- if (!isIpv6(value)) return false;
283
- const firstGroup = value.split(":")[0] ?? "";
284
- const parsed = Number.parseInt(firstGroup, 16);
285
- return Number.isFinite(parsed) && (parsed & 65024) === 64512;
286
- }
287
280
  function isVolatileInterface(name) {
288
281
  const lower = name.toLowerCase();
289
282
  return VOLATILE_INTERFACE_PREFIXES.some((prefix) => lower.startsWith(prefix));
290
283
  }
291
284
  /**
292
- * A global-scope IPv6 address is NOT a stable identity: SLAAC privacy
293
- * extensions rotate temporary addresses roughly daily, and `os` gives us
294
- * no way to tell a temporary address from a permanent one. Gating on
295
- * one would reissue the certificate every day.
285
+ * Only IPv4 gates a reissue. Every IPv6 address we see — global **or**
286
+ * ULA — is certified but never required: `os` cannot tell a temporary
287
+ * address from a permanent one, and the live hub's ULA interface-id
288
+ * rotated on every restart (eight leaf reissues in one day under
289
+ * `san-coverage-gap`). Gating on ULA reproduced the churn D227 exists
290
+ * to prevent. Operators who need a fixed IPv6 declare it via `extraSans`.
296
291
  */
297
292
  function isStableGateAddress(address) {
298
293
  if (isLinkLocal(address)) return false;
299
- if (isIpv4(address)) return true;
300
- return isUniqueLocalIpv6(address);
294
+ return isIpv4(address);
301
295
  }
302
296
  function addSan(dns, ips, value) {
303
297
  const trimmed = value.trim();
@@ -11711,8 +11705,9 @@ var DEFAULT_COMMON_NAME = "camstack.local";
11711
11705
  *
11712
11706
  * And explicitly NOT when: the certificate names an address the machine
11713
11707
  * no longer has (a superset still works — the check is one-directional),
11714
- * a volatile interface (docker/VPN/mesh) or a global-scope IPv6 address
11715
- * changed (SLAAC privacy addresses rotate daily), or a new build shipped.
11708
+ * a volatile interface (docker/VPN/mesh) or **any** IPv6 address changed
11709
+ * (global and ULA both rotate under privacy extensions / interface-id
11710
+ * churn — `os` cannot tell temporary from permanent), or a new build shipped.
11716
11711
  *
11717
11712
  * Every trigger is derived from the files plus the machine, so once a
11718
11713
  * reissue clears them it clears them for good: the next boot returns
@@ -278,27 +278,21 @@ function isLinkLocal(value) {
278
278
  const parsed = Number.parseInt(firstGroup, 16);
279
279
  return Number.isFinite(parsed) && (parsed & 65472) === 65152;
280
280
  }
281
- /** `fc00::/7` — the IPv6 range that behaves like RFC 1918 does for v4. */
282
- function isUniqueLocalIpv6(value) {
283
- if (!isIpv6(value)) return false;
284
- const firstGroup = value.split(":")[0] ?? "";
285
- const parsed = Number.parseInt(firstGroup, 16);
286
- return Number.isFinite(parsed) && (parsed & 65024) === 64512;
287
- }
288
281
  function isVolatileInterface(name) {
289
282
  const lower = name.toLowerCase();
290
283
  return VOLATILE_INTERFACE_PREFIXES.some((prefix) => lower.startsWith(prefix));
291
284
  }
292
285
  /**
293
- * A global-scope IPv6 address is NOT a stable identity: SLAAC privacy
294
- * extensions rotate temporary addresses roughly daily, and `os` gives us
295
- * no way to tell a temporary address from a permanent one. Gating on
296
- * one would reissue the certificate every day.
286
+ * Only IPv4 gates a reissue. Every IPv6 address we see — global **or**
287
+ * ULA — is certified but never required: `os` cannot tell a temporary
288
+ * address from a permanent one, and the live hub's ULA interface-id
289
+ * rotated on every restart (eight leaf reissues in one day under
290
+ * `san-coverage-gap`). Gating on ULA reproduced the churn D227 exists
291
+ * to prevent. Operators who need a fixed IPv6 declare it via `extraSans`.
297
292
  */
298
293
  function isStableGateAddress(address) {
299
294
  if (isLinkLocal(address)) return false;
300
- if (isIpv4(address)) return true;
301
- return isUniqueLocalIpv6(address);
295
+ return isIpv4(address);
302
296
  }
303
297
  function addSan(dns, ips, value) {
304
298
  const trimmed = value.trim();
@@ -11712,8 +11706,9 @@ var DEFAULT_COMMON_NAME = "camstack.local";
11712
11706
  *
11713
11707
  * And explicitly NOT when: the certificate names an address the machine
11714
11708
  * no longer has (a superset still works — the check is one-directional),
11715
- * a volatile interface (docker/VPN/mesh) or a global-scope IPv6 address
11716
- * changed (SLAAC privacy addresses rotate daily), or a new build shipped.
11709
+ * a volatile interface (docker/VPN/mesh) or **any** IPv6 address changed
11710
+ * (global and ULA both rotate under privacy extensions / interface-id
11711
+ * churn — `os` cannot tell temporary from permanent), or a new build shipped.
11717
11712
  *
11718
11713
  * Every trigger is derived from the files plus the machine, so once a
11719
11714
  * reissue clears them it clears them for good: the next boot returns
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.345",
3
+ "version": "1.2.347",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",