@camstack/system 1.2.339 → 1.2.341

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 (61) 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/camera-grid/index.js +1 -1
  14. package/dist/builtins/camera-grid/index.mjs +1 -1
  15. package/dist/builtins/composer/composer.addon.js +2 -2
  16. package/dist/builtins/composer/composer.addon.mjs +2 -2
  17. package/dist/builtins/console-logging/index.js +1 -1
  18. package/dist/builtins/console-logging/index.mjs +1 -1
  19. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  20. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  21. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  22. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  23. package/dist/builtins/hub-forwarder/index.js +1 -1
  24. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  25. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  26. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  27. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  28. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  29. package/dist/builtins/local-network/local-network.addon.js +1 -1
  30. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  31. package/dist/builtins/loki-logging/index.js +1 -1
  32. package/dist/builtins/loki-logging/index.mjs +1 -1
  33. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  34. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  35. package/dist/builtins/platform-probe/index.js +1 -1
  36. package/dist/builtins/platform-probe/index.mjs +1 -1
  37. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  38. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  39. package/dist/builtins/snapshot/index.js +1 -1
  40. package/dist/builtins/snapshot/index.mjs +1 -1
  41. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  42. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  43. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  44. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  46. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  47. package/dist/builtins/system-config/system-config.addon.js +1 -1
  48. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  49. package/dist/builtins/winston-logging/index.js +1 -1
  50. package/dist/builtins/winston-logging/index.mjs +1 -1
  51. package/dist/{child-cap-dispatch-B4L4V0gF.js → child-cap-dispatch-CE8FZPwx.js} +1 -1
  52. package/dist/{child-cap-dispatch-B3ObBHqQ.mjs → child-cap-dispatch-CFBFivGj.mjs} +1 -1
  53. package/dist/{composition-sources-C0Go51Qt.js → composition-sources-D3jZT3Xx.js} +1 -1
  54. package/dist/{composition-sources-CDDz1REg.mjs → composition-sources-D7poRDHO.mjs} +1 -1
  55. package/dist/{dist-ByF1NqOH.mjs → dist-C9uyNQLN.mjs} +87 -23
  56. package/dist/{dist-CFQLMsVb.js → dist-dflxzOjI.js} +87 -23
  57. package/dist/index.js +2 -2
  58. package/dist/index.mjs +2 -2
  59. package/dist/{retired-settings-keys-AHxnm1MO.mjs → retired-settings-keys-BWwZzByT.mjs} +1 -1
  60. package/dist/{retired-settings-keys-kGNucQWK.js → retired-settings-keys-DIlQ685i.js} +1 -1
  61. 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-B4L4V0gF.js");
2
+ const require_child_cap_dispatch = require("./child-cap-dispatch-CE8FZPwx.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-B3ObBHqQ.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-CFBFivGj.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Un as errMsg, V as addonPagesCapability, Wn as BaseAddon, hr as EventCategory } from "../../dist-ByF1NqOH.mjs";
1
+ import { Un as errMsg, V as addonPagesCapability, Wn as BaseAddon, hr as EventCategory } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { U as addonWidgetsCapability, Un as errMsg, Wn as BaseAddon, hr as EventCategory } from "../../dist-ByF1NqOH.mjs";
1
+ import { U as addonWidgetsCapability, Un as errMsg, Wn as BaseAddon, hr as EventCategory } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Un as errMsg, W as alertsCapability, Wn as BaseAddon, er as createEvent, hr as EventCategory, n as AlertSchema } from "../../dist-ByF1NqOH.mjs";
1
+ import { Un as errMsg, W as alertsCapability, Wn as BaseAddon, er as createEvent, hr as EventCategory, n as AlertSchema } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Un as errMsg, Wn as BaseAddon, b as FIRST_LEVEL_MACRO_CLASSES, hr as EventCategory, or as isEvent, q as bareAddonId, rn as ptzAutotrackCapability } from "../../dist-ByF1NqOH.mjs";
1
+ import { Un as errMsg, Wn as BaseAddon, b as FIRST_LEVEL_MACRO_CLASSES, hr as EventCategory, or as isEvent, q as bareAddonId, rn as ptzAutotrackCapability } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Gt as mayWriteToLocation, K as backupCapability, Wn as BaseAddon, hr as EventCategory, m as DATABASE_SNAPSHOT_SUFFIX, mr as toNodeId, sr as nodePin, vn as storageOccupancyCapability } from "../../dist-ByF1NqOH.mjs";
1
+ import { Gt as mayWriteToLocation, K as backupCapability, Wn as BaseAddon, hr as EventCategory, m as DATABASE_SNAPSHOT_SUFFIX, mr as toNodeId, sr as nodePin, vn as storageOccupancyCapability } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Bn as DeviceFeature, Hn as DeviceType, Kt as memoizePinnedFfmpeg, O as MOTION_CLOSE_AFTER_MS, Un as errMsg, Wn as BaseAddon, Yt as motionCapability, Z as cameraGridLayoutCapability, _ as DERIVED_CAMERA_SILENCED_CAP_NAMES, bn as streamCatalogCapability, er as createEvent, hn as snapshotCapability, hr as EventCategory, i as BaseDevice, ir as hydrateSchema, kn as buildFfmpegArgs, ut as declarationOwnerNodeId, v as DeclaredDevices } from "../../dist-ByF1NqOH.mjs";
1
+ import { Bn as DeviceFeature, Hn as DeviceType, Kt as memoizePinnedFfmpeg, O as MOTION_CLOSE_AFTER_MS, Un as errMsg, Wn as BaseAddon, Yt as motionCapability, Z as cameraGridLayoutCapability, _ as DERIVED_CAMERA_SILENCED_CAP_NAMES, bn as streamCatalogCapability, er as createEvent, hn as snapshotCapability, hr as EventCategory, i as BaseDevice, ir as hydrateSchema, kn as buildFfmpegArgs, ut as declarationOwnerNodeId, v as DeclaredDevices } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
7
- const require_composition_sources = require("../../composition-sources-C0Go51Qt.js");
6
+ const require_dist = require("../../dist-dflxzOjI.js");
7
+ const require_composition_sources = require("../../composition-sources-D3jZT3Xx.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 { $ as composerCapability, An as cloneStatefulExpressionMemory, Fn as compositionSliceKey, Hn as DeviceType, In as compositionSourceKey, Ln as createStatefulExpressionMemory, Mn as composedDeviceStableId, Nn as compositionFeatureEnabled, On as COMPOSER_ADDON_ID, Pn as compositionItemFieldPath, Rn as disarmRoseMemory, St as evaluateCompositionField, Un as errMsg, Wn as BaseAddon, Y as buildCapabilityLookup, c as COMPOSED_ITEM_FIXED_FIELDS, en as planComposition, er as createEvent, et as compositionFieldKey, hr as EventCategory, i as BaseDevice, jn as composedDeviceRef, t as ALL_CAPABILITY_DEFINITIONS, v as DeclaredDevices, zn as toExpressionValue } from "../../dist-ByF1NqOH.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-CDDz1REg.mjs";
1
+ import { $ as composerCapability, An as cloneStatefulExpressionMemory, Fn as compositionSliceKey, Hn as DeviceType, In as compositionSourceKey, Ln as createStatefulExpressionMemory, Mn as composedDeviceStableId, Nn as compositionFeatureEnabled, On as COMPOSER_ADDON_ID, Pn as compositionItemFieldPath, Rn as disarmRoseMemory, St as evaluateCompositionField, Un as errMsg, Wn as BaseAddon, Y as buildCapabilityLookup, c as COMPOSED_ITEM_FIXED_FIELDS, en as planComposition, er as createEvent, et as compositionFieldKey, hr as EventCategory, i as BaseDevice, jn as composedDeviceRef, t as ALL_CAPABILITY_DEFINITIONS, v as DeclaredDevices, zn as toExpressionValue } from "../../dist-C9uyNQLN.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-D7poRDHO.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-ByF1NqOH.mjs";
1
+ import { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
4
- const require_composition_sources = require("../../composition-sources-C0Go51Qt.js");
3
+ const require_dist = require("../../dist-dflxzOjI.js");
4
+ const require_composition_sources = require("../../composition-sources-D3jZT3Xx.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 { Cn as validateComposition, In as compositionSourceKey, Un as errMsg, Wn as BaseAddon, Y as buildCapabilityLookup, an as replacedFieldKeys, at as coreBlockSourceKind, d as CORE_BLOCK_ADDON_PREFIX, en as planComposition, f as CoreBlockSchema, it as coreBlockIdFromAddonId, jn as composedDeviceRef, l as COMPOSER_RUNNER_ID, mt as describeComposableCaps, nt as coreBlockAddonId, ot as coreBlocksCapability, rt as coreBlockComposition, t as ALL_CAPABILITY_DEFINITIONS, tt as compositionSourceRefs, u as CORE_BLOCKS_ADDON_ID, v as DeclaredDevices } from "../../dist-ByF1NqOH.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-CDDz1REg.mjs";
1
+ import { Cn as validateComposition, In as compositionSourceKey, Un as errMsg, Wn as BaseAddon, Y as buildCapabilityLookup, an as replacedFieldKeys, at as coreBlockSourceKind, d as CORE_BLOCK_ADDON_PREFIX, en as planComposition, f as CoreBlockSchema, it as coreBlockIdFromAddonId, jn as composedDeviceRef, l as COMPOSER_RUNNER_ID, mt as describeComposableCaps, nt as coreBlockAddonId, ot as coreBlocksCapability, rt as coreBlockComposition, t as ALL_CAPABILITY_DEFINITIONS, tt as compositionSourceRefs, u as CORE_BLOCKS_ADDON_ID, v as DeclaredDevices } from "../../dist-C9uyNQLN.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-D7poRDHO.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-CFQLMsVb.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-kGNucQWK.js");
6
+ const require_dist = require("../../dist-dflxzOjI.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-DIlQ685i.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 { $t as parseStreamParamsFormPatch, Bn as DeviceFeature, Bt as locationIconKey, D as MINUTES_PER_DAY, Hn as DeviceType, It as legacyAutoLinkIds, Ot as formatMinutes, P as STREAM_PROFILE_META, S as FieldClaimSchema, T as LocationIconIdSchema, Un as errMsg, Vn as DeviceRole, Wn as BaseAddon, X as buildStreamParamsConfigSchema, Xn as WELL_KNOWN_TAB_MAP, Xt as normalizeUnit, _t as deviceStateCapability, ar as isDeviceConfigCap, bt as enumerateItemArrayFields, ft as defineExtensionSlotProvider, g as DAY_NAMES, gt as deviceManagerCapability, hr as EventCategory, ht as deviceExtensionCapability, ln as runtimeStatePolicyFor, mn as siteZoneKey, o as CAMERA_SWITCH_ORDER, pr as sleep$1, s as CAP_NAMES_WITH_STATUS, st as createDeviceExtensionProvider, t as ALL_CAPABILITY_DEFINITIONS, vt as deviceStatusCapability, wt as expandContainer, x as FieldClaimModeSchema, xt as enumerateSchemaFields, y as DeviceStatusSchema } from "../../dist-ByF1NqOH.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-AHxnm1MO.mjs";
1
+ import { $t as parseStreamParamsFormPatch, Bn as DeviceFeature, Bt as locationIconKey, D as MINUTES_PER_DAY, Hn as DeviceType, It as legacyAutoLinkIds, Ot as formatMinutes, P as STREAM_PROFILE_META, S as FieldClaimSchema, T as LocationIconIdSchema, Un as errMsg, Vn as DeviceRole, Wn as BaseAddon, X as buildStreamParamsConfigSchema, Xn as WELL_KNOWN_TAB_MAP, Xt as normalizeUnit, _t as deviceStateCapability, ar as isDeviceConfigCap, bt as enumerateItemArrayFields, ft as defineExtensionSlotProvider, g as DAY_NAMES, gt as deviceManagerCapability, hr as EventCategory, ht as deviceExtensionCapability, ln as runtimeStatePolicyFor, mn as siteZoneKey, o as CAMERA_SWITCH_ORDER, pr as sleep$1, s as CAP_NAMES_WITH_STATUS, st as createDeviceExtensionProvider, t as ALL_CAPABILITY_DEFINITIONS, vt as deviceStatusCapability, wt as expandContainer, x as FieldClaimModeSchema, xt as enumerateSchemaFields, y as DeviceStatusSchema } from "../../dist-C9uyNQLN.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-BWwZzByT.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-ByF1NqOH.mjs";
1
+ import { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
3
+ const require_dist = require("../../dist-dflxzOjI.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 { M as RecordingStatusSchema, Un as errMsg, Wn as BaseAddon, er as createEvent, hr as EventCategory, k as RECORDING_SOURCE_CAMSTACK_ADDON } from "../../dist-ByF1NqOH.mjs";
1
+ import { M as RecordingStatusSchema, Un as errMsg, Wn as BaseAddon, er as createEvent, hr as EventCategory, k as RECORDING_SOURCE_CAMSTACK_ADDON } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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, F as ScopedTokenSchema, G as authProviderCapability, Sn as userManagementCapability, Wn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-ByF1NqOH.mjs";
2
+ import { B as UserRecordSchema, F as ScopedTokenSchema, G as authProviderCapability, Sn as userManagementCapability, Wn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-C9uyNQLN.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,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-CFQLMsVb.js");
3
+ const require_dist = require("../../dist-dflxzOjI.js");
4
4
  const require_tls = require("../../tls-D_wUeOTD.js");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Wn as BaseAddon, hr as EventCategory, zt as localNetworkCapability } from "../../dist-ByF1NqOH.mjs";
1
+ import { Wn as BaseAddon, hr as EventCategory, zt as localNetworkCapability } from "../../dist-C9uyNQLN.mjs";
2
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";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
4
  import { join } 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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-ByF1NqOH.mjs";
1
+ import { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Dt as foldSnapshotByFunction, Un as errMsg, Wn as BaseAddon, er as createEvent, hr as EventCategory, in as reducePoints, on as resolveBucketMs, qt as metricsProviderCapability } from "../../dist-ByF1NqOH.mjs";
1
+ import { Dt as foldSnapshotByFunction, Un as errMsg, Wn as BaseAddon, er as createEvent, hr as EventCategory, in as reducePoints, on as resolveBucketMs, qt as metricsProviderCapability } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Un as errMsg, Wn as BaseAddon, fn as scoreRuntimes, hr as EventCategory, nr as emitReadiness, tn as platformProbeCapability, yt as enumerateInferenceDevices } from "../../dist-ByF1NqOH.mjs";
2
+ import { Un as errMsg, Wn as BaseAddon, fn as scoreRuntimes, hr as EventCategory, nr as emitReadiness, tn as platformProbeCapability, yt as enumerateInferenceDevices } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Wn as BaseAddon, hr as EventCategory } from "../../dist-ByF1NqOH.mjs";
1
+ import { Wn as BaseAddon, hr as EventCategory } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Bn as DeviceFeature, Hn as DeviceType, J as batteryCapability, Kt as memoizePinnedFfmpeg, Un as errMsg, Wn as BaseAddon, a as BatteryStatusSchema, hn as snapshotCapability, hr as EventCategory, pt as deriveBatteryPresence, q as bareAddonId, sr as nodePin, xn as streamQualityLabel } from "../../dist-ByF1NqOH.mjs";
1
+ import { Bn as DeviceFeature, Hn as DeviceType, J as batteryCapability, Kt as memoizePinnedFfmpeg, Un as errMsg, Wn as BaseAddon, a as BatteryStatusSchema, hn as snapshotCapability, hr as EventCategory, pt as deriveBatteryPresence, q as bareAddonId, sr as nodePin, xn as streamQualityLabel } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Et as filesystemBrowseCapability, Wn as BaseAddon, yn as storageProviderCapability } from "../../dist-ByF1NqOH.mjs";
1
+ import { Et as filesystemBrowseCapability, Wn as BaseAddon, yn as storageProviderCapability } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { A as REDACTED_SECRET, Ct as evictionPolicyOfLocation, Dn as withLocationMode, Gt as mayWriteToLocation, I as StorageCleanupJobSchema, Jt as modeMayWrite, L as StorageLocationModeSchema, Lt as legacyModeOf, Mt as isLocationEnabled, Q as collectSecretConfigKeys, R as StorageLocationTypeSchema, Wn as BaseAddon, Wt as mayReadLocation, _n as storageMigrationCapability, cr as parseJsonObject, gn as storageCapability, hr as EventCategory, kt as gbToBytes, pn as settingsStoreCapability, sn as resolveLocationMode, w as LegacyStorageLocationDefaultSchema, z as StorageMigrationJobSchema } from "../../dist-ByF1NqOH.mjs";
1
+ import { A as REDACTED_SECRET, Ct as evictionPolicyOfLocation, Dn as withLocationMode, Gt as mayWriteToLocation, I as StorageCleanupJobSchema, Jt as modeMayWrite, L as StorageLocationModeSchema, Lt as legacyModeOf, Mt as isLocationEnabled, Q as collectSecretConfigKeys, R as StorageLocationTypeSchema, Wn as BaseAddon, Wt as mayReadLocation, _n as storageMigrationCapability, cr as parseJsonObject, gn as storageCapability, hr as EventCategory, kt as gbToBytes, pn as settingsStoreCapability, sn as resolveLocationMode, w as LegacyStorageLocationDefaultSchema, z as StorageMigrationJobSchema } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Un as errMsg, Wn as BaseAddon, ir as hydrateSchema } from "../../dist-ByF1NqOH.mjs";
1
+ import { Un as errMsg, Wn as BaseAddon, ir as hydrateSchema } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
6
+ const require_dist = require("../../dist-dflxzOjI.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 { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-ByF1NqOH.mjs";
1
+ import { Vt as logDestinationCapability, Wn as BaseAddon } from "../../dist-C9uyNQLN.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-CFQLMsVb.js");
2
+ const require_dist = require("./dist-dflxzOjI.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 { er as createEvent, hr as EventCategory$1 } from "./dist-ByF1NqOH.mjs";
1
+ import { er as createEvent, hr as EventCategory$1 } from "./dist-C9uyNQLN.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-CFQLMsVb.js");
1
+ const require_dist = require("./dist-dflxzOjI.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 { In as compositionSourceKey, Un as errMsg } from "./dist-ByF1NqOH.mjs";
1
+ import { In as compositionSourceKey, Un as errMsg } from "./dist-C9uyNQLN.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
@@ -37831,28 +37831,50 @@ setOverlay: method(z.object({
37831
37831
  *
37832
37832
  * This cap owns the other half: a per-(camera, slot) BINDING that says
37833
37833
  * which value feeds the slot, how it is formatted, and under which
37834
- * conditions it is shown at all. One addon renders every binding on every
37835
- * camera, so a new source costs zero driver code.
37836
- *
37837
- * Three deliberate choices, each with a rejected alternative:
37838
- *
37839
- * 1. A source is `(capName, valuePath)` over the kernel's device
37840
- * runtime-state mirror — NOT a closed enum of source kinds. Every
37841
- * cap-keyed slice a device publishes is bindable the day the cap
37842
- * ships. The rejected alternative (one enum member per source, with
37843
- * a resolver branch each) is what makes "add the humidity too" a
37844
- * code change.
37845
- * 2. The display gate reuses `NcConditionsSchema` verbatim — the
37846
- * notification centre's condition vocabulary — rather than a parallel
37847
- * model. An operator who has learned one condition editor has learned
37848
- * both.
37849
- * 3. Because the renderer's facts are device STATE and not a detection
37850
- * record, only a SUBSET of that vocabulary can be answered here.
37851
- * `setSlotBinding` REJECTS the rest at write time (see
37852
- * `getConditionSupport`). It does not accept-then-fail-closed: a
37853
- * condition that can never be true renders a permanently blank
37854
- * overlay, and a blank overlay looks exactly like a broken camera.
37834
+ * conditions it is shown at all. Named TEMPLATES combine many device
37835
+ * fields into one overlay string (Scrypted OSD Manager parity).
37836
+ */
37837
+ /** What `{alias}` expands to for one template binding. Exactly one choice. */
37838
+ var OsdTemplateFormatSchema = z.enum([
37839
+ "value+unit",
37840
+ "value",
37841
+ "unit"
37842
+ ]);
37843
+ /**
37844
+ * How the operator reached the leaf device. `deviceId` is ALWAYS the
37845
+ * OSD-supported leaf that is read; `containerId` is set when the pick
37846
+ * went through a container (gateway) first.
37847
+ */
37848
+ var OsdTemplatePickSchema = z.object({
37849
+ containerId: z.number().int().optional(),
37850
+ deviceId: z.number().int()
37851
+ });
37852
+ /**
37853
+ * One named binding inside a multi-device template. The parser only
37854
+ * sees `{alias}`; format / unit / decimals live here structurally.
37855
37855
  */
37856
+ var OsdTemplateBindingSchema = z.object({
37857
+ /** Token in the parser, e.g. `t` → `{t}`. Unique within the template. */
37858
+ alias: z.string().min(1).max(32).regex(/^[A-Za-z][A-Za-z0-9_-]*$/, "alias must start with a letter"),
37859
+ pick: OsdTemplatePickSchema,
37860
+ capName: z.string().min(1).max(64),
37861
+ valuePath: z.string().min(1).max(64),
37862
+ format: OsdTemplateFormatSchema.default("value+unit"),
37863
+ /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
37864
+ displayUnit: z.string().max(16).optional(),
37865
+ maxDecimals: z.number().int().min(0).max(4).default(1)
37866
+ });
37867
+ /**
37868
+ * A named template: bindings (alias → leaf field) + a parser that only
37869
+ * references `{alias}` tokens.
37870
+ */
37871
+ var OsdNamedTemplateSchema = z.object({
37872
+ id: z.string().min(1).max(64),
37873
+ name: z.string().min(1).max(64),
37874
+ bindings: z.array(OsdTemplateBindingSchema).max(32).default([]),
37875
+ /** Parser with alias placeholders, e.g. `{t} / {h}`. */
37876
+ parser: z.string().max(256).default("")
37877
+ });
37856
37878
  /** Where a slot's value comes from. */
37857
37879
  var OsdSourceSchema = z.discriminatedUnion("kind", [
37858
37880
  z.object({
@@ -37871,11 +37893,17 @@ var OsdSourceSchema = z.discriminatedUnion("kind", [
37871
37893
  deviceId: z.number().int().optional(),
37872
37894
  capName: z.string().min(1).max(64),
37873
37895
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
37874
- valuePath: z.string().min(1).max(64)
37896
+ valuePath: z.string().min(1).max(64),
37897
+ /** Convert TO this unit at render. Absent = no conversion. */
37898
+ displayUnit: z.string().max(16).optional()
37875
37899
  }),
37876
37900
  z.object({
37877
37901
  kind: z.literal("latest-recognition"),
37878
37902
  recognition: z.enum(["person", "plate"])
37903
+ }),
37904
+ z.object({
37905
+ kind: z.literal("template"),
37906
+ templateId: z.string().min(1).max(64)
37879
37907
  })
37880
37908
  ]);
37881
37909
  var OsdSlotBindingSchema = z.object({
@@ -37891,7 +37919,10 @@ var OsdSlotBindingSchema = z.object({
37891
37919
  * documented workaround for firmwares that reject `.` in overlay text.
37892
37920
  */
37893
37921
  maxDecimals: z.number().int().min(0).max(4).default(1),
37894
- /** Appended via `${unit}`. The state mirror does not carry units. */
37922
+ /**
37923
+ * Appended via `${unit}` when no unit conversion produces a label.
37924
+ * Prefer `source.displayUnit` for converted device-state values.
37925
+ */
37895
37926
  unitLabel: z.string().max(8).optional(),
37896
37927
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
37897
37928
  valueMap: z.record(z.string(), z.string()).optional(),
@@ -38045,6 +38076,21 @@ var osdManagerCapability = {
38045
38076
  renderDevice: method(z.object({ deviceId: z.number().int() }), z.object({ results: z.array(OsdRenderResultSchema) }), {
38046
38077
  kind: "mutation",
38047
38078
  auth: "admin"
38079
+ }),
38080
+ /** Every named multi-device template. */
38081
+ listTemplates: method(z.object({}), z.object({ templates: z.array(OsdNamedTemplateSchema) }), { auth: "admin" }),
38082
+ /**
38083
+ * Create or replace a named template by `id`. Returns the stored record
38084
+ * after Zod normalisation.
38085
+ */
38086
+ upsertTemplate: method(z.object({ template: OsdNamedTemplateSchema }), z.object({ template: OsdNamedTemplateSchema }), {
38087
+ kind: "mutation",
38088
+ auth: "admin"
38089
+ }),
38090
+ /** Drop a named template. Bindings that still reference it render unreadable. */
38091
+ deleteTemplate: method(z.object({ templateId: z.string().min(1).max(64) }), z.object({ success: z.literal(true) }), {
38092
+ kind: "mutation",
38093
+ auth: "admin"
38048
38094
  })
38049
38095
  }
38050
38096
  };
@@ -51411,6 +51457,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51411
51457
  addonId: null,
51412
51458
  access: "create"
51413
51459
  },
51460
+ "osdManager.deleteTemplate": {
51461
+ capName: "osd-manager",
51462
+ capScope: "system",
51463
+ addonId: null,
51464
+ access: "delete"
51465
+ },
51414
51466
  "osdManager.getConditionSupport": {
51415
51467
  capName: "osd-manager",
51416
51468
  capScope: "system",
@@ -51429,6 +51481,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51429
51481
  addonId: null,
51430
51482
  access: "view"
51431
51483
  },
51484
+ "osdManager.listTemplates": {
51485
+ capName: "osd-manager",
51486
+ capScope: "system",
51487
+ addonId: null,
51488
+ access: "view"
51489
+ },
51432
51490
  "osdManager.previewSlot": {
51433
51491
  capName: "osd-manager",
51434
51492
  capScope: "system",
@@ -51447,6 +51505,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51447
51505
  addonId: null,
51448
51506
  access: "create"
51449
51507
  },
51508
+ "osdManager.upsertTemplate": {
51509
+ capName: "osd-manager",
51510
+ capScope: "system",
51511
+ addonId: null,
51512
+ access: "create"
51513
+ },
51450
51514
  "petFeeder.callPet": {
51451
51515
  capName: "pet-feeder",
51452
51516
  capScope: "device",
@@ -37831,28 +37831,50 @@ setOverlay: method(zod.z.object({
37831
37831
  *
37832
37832
  * This cap owns the other half: a per-(camera, slot) BINDING that says
37833
37833
  * which value feeds the slot, how it is formatted, and under which
37834
- * conditions it is shown at all. One addon renders every binding on every
37835
- * camera, so a new source costs zero driver code.
37836
- *
37837
- * Three deliberate choices, each with a rejected alternative:
37838
- *
37839
- * 1. A source is `(capName, valuePath)` over the kernel's device
37840
- * runtime-state mirror — NOT a closed enum of source kinds. Every
37841
- * cap-keyed slice a device publishes is bindable the day the cap
37842
- * ships. The rejected alternative (one enum member per source, with
37843
- * a resolver branch each) is what makes "add the humidity too" a
37844
- * code change.
37845
- * 2. The display gate reuses `NcConditionsSchema` verbatim — the
37846
- * notification centre's condition vocabulary — rather than a parallel
37847
- * model. An operator who has learned one condition editor has learned
37848
- * both.
37849
- * 3. Because the renderer's facts are device STATE and not a detection
37850
- * record, only a SUBSET of that vocabulary can be answered here.
37851
- * `setSlotBinding` REJECTS the rest at write time (see
37852
- * `getConditionSupport`). It does not accept-then-fail-closed: a
37853
- * condition that can never be true renders a permanently blank
37854
- * overlay, and a blank overlay looks exactly like a broken camera.
37834
+ * conditions it is shown at all. Named TEMPLATES combine many device
37835
+ * fields into one overlay string (Scrypted OSD Manager parity).
37836
+ */
37837
+ /** What `{alias}` expands to for one template binding. Exactly one choice. */
37838
+ var OsdTemplateFormatSchema = zod.z.enum([
37839
+ "value+unit",
37840
+ "value",
37841
+ "unit"
37842
+ ]);
37843
+ /**
37844
+ * How the operator reached the leaf device. `deviceId` is ALWAYS the
37845
+ * OSD-supported leaf that is read; `containerId` is set when the pick
37846
+ * went through a container (gateway) first.
37847
+ */
37848
+ var OsdTemplatePickSchema = zod.z.object({
37849
+ containerId: zod.z.number().int().optional(),
37850
+ deviceId: zod.z.number().int()
37851
+ });
37852
+ /**
37853
+ * One named binding inside a multi-device template. The parser only
37854
+ * sees `{alias}`; format / unit / decimals live here structurally.
37855
37855
  */
37856
+ var OsdTemplateBindingSchema = zod.z.object({
37857
+ /** Token in the parser, e.g. `t` → `{t}`. Unique within the template. */
37858
+ alias: zod.z.string().min(1).max(32).regex(/^[A-Za-z][A-Za-z0-9_-]*$/, "alias must start with a letter"),
37859
+ pick: OsdTemplatePickSchema,
37860
+ capName: zod.z.string().min(1).max(64),
37861
+ valuePath: zod.z.string().min(1).max(64),
37862
+ format: OsdTemplateFormatSchema.default("value+unit"),
37863
+ /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
37864
+ displayUnit: zod.z.string().max(16).optional(),
37865
+ maxDecimals: zod.z.number().int().min(0).max(4).default(1)
37866
+ });
37867
+ /**
37868
+ * A named template: bindings (alias → leaf field) + a parser that only
37869
+ * references `{alias}` tokens.
37870
+ */
37871
+ var OsdNamedTemplateSchema = zod.z.object({
37872
+ id: zod.z.string().min(1).max(64),
37873
+ name: zod.z.string().min(1).max(64),
37874
+ bindings: zod.z.array(OsdTemplateBindingSchema).max(32).default([]),
37875
+ /** Parser with alias placeholders, e.g. `{t} / {h}`. */
37876
+ parser: zod.z.string().max(256).default("")
37877
+ });
37856
37878
  /** Where a slot's value comes from. */
37857
37879
  var OsdSourceSchema = zod.z.discriminatedUnion("kind", [
37858
37880
  zod.z.object({
@@ -37871,11 +37893,17 @@ var OsdSourceSchema = zod.z.discriminatedUnion("kind", [
37871
37893
  deviceId: zod.z.number().int().optional(),
37872
37894
  capName: zod.z.string().min(1).max(64),
37873
37895
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
37874
- valuePath: zod.z.string().min(1).max(64)
37896
+ valuePath: zod.z.string().min(1).max(64),
37897
+ /** Convert TO this unit at render. Absent = no conversion. */
37898
+ displayUnit: zod.z.string().max(16).optional()
37875
37899
  }),
37876
37900
  zod.z.object({
37877
37901
  kind: zod.z.literal("latest-recognition"),
37878
37902
  recognition: zod.z.enum(["person", "plate"])
37903
+ }),
37904
+ zod.z.object({
37905
+ kind: zod.z.literal("template"),
37906
+ templateId: zod.z.string().min(1).max(64)
37879
37907
  })
37880
37908
  ]);
37881
37909
  var OsdSlotBindingSchema = zod.z.object({
@@ -37891,7 +37919,10 @@ var OsdSlotBindingSchema = zod.z.object({
37891
37919
  * documented workaround for firmwares that reject `.` in overlay text.
37892
37920
  */
37893
37921
  maxDecimals: zod.z.number().int().min(0).max(4).default(1),
37894
- /** Appended via `${unit}`. The state mirror does not carry units. */
37922
+ /**
37923
+ * Appended via `${unit}` when no unit conversion produces a label.
37924
+ * Prefer `source.displayUnit` for converted device-state values.
37925
+ */
37895
37926
  unitLabel: zod.z.string().max(8).optional(),
37896
37927
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
37897
37928
  valueMap: zod.z.record(zod.z.string(), zod.z.string()).optional(),
@@ -38045,6 +38076,21 @@ var osdManagerCapability = {
38045
38076
  renderDevice: method(zod.z.object({ deviceId: zod.z.number().int() }), zod.z.object({ results: zod.z.array(OsdRenderResultSchema) }), {
38046
38077
  kind: "mutation",
38047
38078
  auth: "admin"
38079
+ }),
38080
+ /** Every named multi-device template. */
38081
+ listTemplates: method(zod.z.object({}), zod.z.object({ templates: zod.z.array(OsdNamedTemplateSchema) }), { auth: "admin" }),
38082
+ /**
38083
+ * Create or replace a named template by `id`. Returns the stored record
38084
+ * after Zod normalisation.
38085
+ */
38086
+ upsertTemplate: method(zod.z.object({ template: OsdNamedTemplateSchema }), zod.z.object({ template: OsdNamedTemplateSchema }), {
38087
+ kind: "mutation",
38088
+ auth: "admin"
38089
+ }),
38090
+ /** Drop a named template. Bindings that still reference it render unreadable. */
38091
+ deleteTemplate: method(zod.z.object({ templateId: zod.z.string().min(1).max(64) }), zod.z.object({ success: zod.z.literal(true) }), {
38092
+ kind: "mutation",
38093
+ auth: "admin"
38048
38094
  })
38049
38095
  }
38050
38096
  };
@@ -51411,6 +51457,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51411
51457
  addonId: null,
51412
51458
  access: "create"
51413
51459
  },
51460
+ "osdManager.deleteTemplate": {
51461
+ capName: "osd-manager",
51462
+ capScope: "system",
51463
+ addonId: null,
51464
+ access: "delete"
51465
+ },
51414
51466
  "osdManager.getConditionSupport": {
51415
51467
  capName: "osd-manager",
51416
51468
  capScope: "system",
@@ -51429,6 +51481,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51429
51481
  addonId: null,
51430
51482
  access: "view"
51431
51483
  },
51484
+ "osdManager.listTemplates": {
51485
+ capName: "osd-manager",
51486
+ capScope: "system",
51487
+ addonId: null,
51488
+ access: "view"
51489
+ },
51432
51490
  "osdManager.previewSlot": {
51433
51491
  capName: "osd-manager",
51434
51492
  capScope: "system",
@@ -51447,6 +51505,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51447
51505
  addonId: null,
51448
51506
  access: "create"
51449
51507
  },
51508
+ "osdManager.upsertTemplate": {
51509
+ capName: "osd-manager",
51510
+ capScope: "system",
51511
+ addonId: null,
51512
+ access: "create"
51513
+ },
51450
51514
  "petFeeder.callPet": {
51451
51515
  capName: "pet-feeder",
51452
51516
  capScope: "device",
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-CFQLMsVb.js");
3
+ const require_dist = require("./dist-dflxzOjI.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_composer_composer_addon = require("./builtins/composer/composer.addon.js");
@@ -29,7 +29,7 @@ require("./builtins/system-config/index.js");
29
29
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
30
30
  const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-ey4mbofz.js");
31
31
  const require_tls$1 = require("./tls-D_wUeOTD.js");
32
- const require_child_cap_dispatch = require("./child-cap-dispatch-B4L4V0gF.js");
32
+ const require_child_cap_dispatch = require("./child-cap-dispatch-CE8FZPwx.js");
33
33
  const require_resource_monitor = require("./resource-monitor-DzNn_IZK.js");
34
34
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
35
35
  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 asString$1, At as isArrayOutputSchema, C as LOG_LEVEL_RANK, E as METHOD_ACCESS_MAP, Ft as kebabToCamel, Gn as DATAPLANE_SECRET_HEADER$1, H as addonSettingsCapability, Ht as logLevelAtMost, Jn as ReadinessRegistry, Kn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Nt as isObjectInput, Pt as isVoidInput, Qn as asNumber, Qt as objectInputDeclaresRequiredDeviceId, Rt as lifecycleJobSchema, Tt as extractNestedAddonId, Un as errMsg$1, Ut as looseSchema, Yn as ReadinessTimeoutError, Zn as asJsonObject$1, Zt as objectInputDeclaresAddonId, cn as resolveMethodAuth, cr as parseJsonObject, dn as scopesAllowDeviceCap, dr as resolveCapMount, er as createEvent, fr as scopeKey, hr as EventCategory$1, j as RUNTIME_DEFAULTS, jt as isCollectionArrayMethod, lr as parseJsonUnknown, nn as procedureAuthKey, qn as DEVICE_STATUS_METHOD, rr as expandCapMethods, t as ALL_CAPABILITY_DEFINITIONS, tr as emitDownForOwnedCaps, un as scopesAllowAddon, ur as readinessKey } from "./dist-ByF1NqOH.mjs";
2
+ import { $n as asString$1, At as isArrayOutputSchema, C as LOG_LEVEL_RANK, E as METHOD_ACCESS_MAP, Ft as kebabToCamel, Gn as DATAPLANE_SECRET_HEADER$1, H as addonSettingsCapability, Ht as logLevelAtMost, Jn as ReadinessRegistry, Kn as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Nt as isObjectInput, Pt as isVoidInput, Qn as asNumber, Qt as objectInputDeclaresRequiredDeviceId, Rt as lifecycleJobSchema, Tt as extractNestedAddonId, Un as errMsg$1, Ut as looseSchema, Yn as ReadinessTimeoutError, Zn as asJsonObject$1, Zt as objectInputDeclaresAddonId, cn as resolveMethodAuth, cr as parseJsonObject, dn as scopesAllowDeviceCap, dr as resolveCapMount, er as createEvent, fr as scopeKey, hr as EventCategory$1, j as RUNTIME_DEFAULTS, jt as isCollectionArrayMethod, lr as parseJsonUnknown, nn as procedureAuthKey, qn as DEVICE_STATUS_METHOD, rr as expandCapMethods, t as ALL_CAPABILITY_DEFINITIONS, tr as emitDownForOwnedCaps, un as scopesAllowAddon, ur as readinessKey } from "./dist-C9uyNQLN.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { ComposerAddon } from "./builtins/composer/composer.addon.mjs";
@@ -28,7 +28,7 @@ import "./builtins/system-config/index.mjs";
28
28
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
29
29
  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";
30
30
  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";
31
- 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-B3ObBHqQ.mjs";
31
+ 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-CFBFivGj.mjs";
32
32
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-B1v6E07R.mjs";
33
33
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
34
34
  import { z } from "zod";
@@ -1,4 +1,4 @@
1
- import { Zn as asJsonObject } from "./dist-ByF1NqOH.mjs";
1
+ import { Zn as asJsonObject } from "./dist-C9uyNQLN.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?
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CFQLMsVb.js");
1
+ const require_dist = require("./dist-dflxzOjI.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?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.339",
3
+ "version": "1.2.341",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",