@camstack/system 1.2.339 → 1.2.340

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-B3ObBHqQ.mjs → child-cap-dispatch-D-7-T--W.mjs} +1 -1
  52. package/dist/{child-cap-dispatch-B4L4V0gF.js → child-cap-dispatch-PI1sSVze.js} +1 -1
  53. package/dist/{composition-sources-CDDz1REg.mjs → composition-sources-CTqzrv1t.mjs} +1 -1
  54. package/dist/{composition-sources-C0Go51Qt.js → composition-sources-DBGzhDIQ.js} +1 -1
  55. package/dist/{dist-ByF1NqOH.mjs → dist-BQS_M1qw.mjs} +66 -23
  56. package/dist/{dist-CFQLMsVb.js → dist-BkhjxcSp.js} +66 -23
  57. package/dist/index.js +2 -2
  58. package/dist/index.mjs +2 -2
  59. package/dist/{retired-settings-keys-kGNucQWK.js → retired-settings-keys-CLazIr8J.js} +1 -1
  60. package/dist/{retired-settings-keys-AHxnm1MO.mjs → retired-settings-keys-RD8q79Sb.mjs} +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-PI1sSVze.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-D-7-T--W.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.js");
7
+ const require_composition_sources = require("../../composition-sources-DBGzhDIQ.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-BQS_M1qw.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-CTqzrv1t.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.js");
4
+ const require_composition_sources = require("../../composition-sources-DBGzhDIQ.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-BQS_M1qw.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-CTqzrv1t.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-BkhjxcSp.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-CLazIr8J.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-BQS_M1qw.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-RD8q79Sb.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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,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-BQS_M1qw.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,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-BkhjxcSp.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 { In as compositionSourceKey, Un as errMsg } from "./dist-ByF1NqOH.mjs";
1
+ import { In as compositionSourceKey, Un as errMsg } from "./dist-BQS_M1qw.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
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CFQLMsVb.js");
1
+ const require_dist = require("./dist-BkhjxcSp.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
@@ -37831,28 +37831,29 @@ 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).
37855
37836
  */
37837
+ /** One field reference inside a named multi-device template. */
37838
+ var OsdTemplateFieldSchema = z.object({
37839
+ deviceId: z.number().int(),
37840
+ capName: z.string().min(1).max(64),
37841
+ valuePath: z.string().min(1).max(64),
37842
+ /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
37843
+ displayUnit: z.string().max(16).optional(),
37844
+ maxDecimals: z.number().int().min(0).max(4).default(1)
37845
+ });
37846
+ /**
37847
+ * A named template: several device fields → one parser string with
37848
+ * `{deviceId.capName.valuePath}` tokens (Scrypted `{deviceId.sensorId}`).
37849
+ */
37850
+ var OsdNamedTemplateSchema = z.object({
37851
+ id: z.string().min(1).max(64),
37852
+ name: z.string().min(1).max(64),
37853
+ fields: z.array(OsdTemplateFieldSchema).max(32).default([]),
37854
+ /** Parser with multi-token placeholders, e.g. `T {12.thermometer.value}°`. */
37855
+ parser: z.string().max(256).default("")
37856
+ });
37856
37857
  /** Where a slot's value comes from. */
37857
37858
  var OsdSourceSchema = z.discriminatedUnion("kind", [
37858
37859
  z.object({
@@ -37871,11 +37872,17 @@ var OsdSourceSchema = z.discriminatedUnion("kind", [
37871
37872
  deviceId: z.number().int().optional(),
37872
37873
  capName: z.string().min(1).max(64),
37873
37874
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
37874
- valuePath: z.string().min(1).max(64)
37875
+ valuePath: z.string().min(1).max(64),
37876
+ /** Convert TO this unit at render. Absent = no conversion. */
37877
+ displayUnit: z.string().max(16).optional()
37875
37878
  }),
37876
37879
  z.object({
37877
37880
  kind: z.literal("latest-recognition"),
37878
37881
  recognition: z.enum(["person", "plate"])
37882
+ }),
37883
+ z.object({
37884
+ kind: z.literal("template"),
37885
+ templateId: z.string().min(1).max(64)
37879
37886
  })
37880
37887
  ]);
37881
37888
  var OsdSlotBindingSchema = z.object({
@@ -37891,7 +37898,10 @@ var OsdSlotBindingSchema = z.object({
37891
37898
  * documented workaround for firmwares that reject `.` in overlay text.
37892
37899
  */
37893
37900
  maxDecimals: z.number().int().min(0).max(4).default(1),
37894
- /** Appended via `${unit}`. The state mirror does not carry units. */
37901
+ /**
37902
+ * Appended via `${unit}` when no unit conversion produces a label.
37903
+ * Prefer `source.displayUnit` for converted device-state values.
37904
+ */
37895
37905
  unitLabel: z.string().max(8).optional(),
37896
37906
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
37897
37907
  valueMap: z.record(z.string(), z.string()).optional(),
@@ -38045,6 +38055,21 @@ var osdManagerCapability = {
38045
38055
  renderDevice: method(z.object({ deviceId: z.number().int() }), z.object({ results: z.array(OsdRenderResultSchema) }), {
38046
38056
  kind: "mutation",
38047
38057
  auth: "admin"
38058
+ }),
38059
+ /** Every named multi-device template. */
38060
+ listTemplates: method(z.object({}), z.object({ templates: z.array(OsdNamedTemplateSchema) }), { auth: "admin" }),
38061
+ /**
38062
+ * Create or replace a named template by `id`. Returns the stored record
38063
+ * after Zod normalisation.
38064
+ */
38065
+ upsertTemplate: method(z.object({ template: OsdNamedTemplateSchema }), z.object({ template: OsdNamedTemplateSchema }), {
38066
+ kind: "mutation",
38067
+ auth: "admin"
38068
+ }),
38069
+ /** Drop a named template. Bindings that still reference it render unreadable. */
38070
+ deleteTemplate: method(z.object({ templateId: z.string().min(1).max(64) }), z.object({ success: z.literal(true) }), {
38071
+ kind: "mutation",
38072
+ auth: "admin"
38048
38073
  })
38049
38074
  }
38050
38075
  };
@@ -51411,6 +51436,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51411
51436
  addonId: null,
51412
51437
  access: "create"
51413
51438
  },
51439
+ "osdManager.deleteTemplate": {
51440
+ capName: "osd-manager",
51441
+ capScope: "system",
51442
+ addonId: null,
51443
+ access: "delete"
51444
+ },
51414
51445
  "osdManager.getConditionSupport": {
51415
51446
  capName: "osd-manager",
51416
51447
  capScope: "system",
@@ -51429,6 +51460,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51429
51460
  addonId: null,
51430
51461
  access: "view"
51431
51462
  },
51463
+ "osdManager.listTemplates": {
51464
+ capName: "osd-manager",
51465
+ capScope: "system",
51466
+ addonId: null,
51467
+ access: "view"
51468
+ },
51432
51469
  "osdManager.previewSlot": {
51433
51470
  capName: "osd-manager",
51434
51471
  capScope: "system",
@@ -51447,6 +51484,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51447
51484
  addonId: null,
51448
51485
  access: "create"
51449
51486
  },
51487
+ "osdManager.upsertTemplate": {
51488
+ capName: "osd-manager",
51489
+ capScope: "system",
51490
+ addonId: null,
51491
+ access: "create"
51492
+ },
51450
51493
  "petFeeder.callPet": {
51451
51494
  capName: "pet-feeder",
51452
51495
  capScope: "device",
@@ -37831,28 +37831,29 @@ 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).
37855
37836
  */
37837
+ /** One field reference inside a named multi-device template. */
37838
+ var OsdTemplateFieldSchema = zod.z.object({
37839
+ deviceId: zod.z.number().int(),
37840
+ capName: zod.z.string().min(1).max(64),
37841
+ valuePath: zod.z.string().min(1).max(64),
37842
+ /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
37843
+ displayUnit: zod.z.string().max(16).optional(),
37844
+ maxDecimals: zod.z.number().int().min(0).max(4).default(1)
37845
+ });
37846
+ /**
37847
+ * A named template: several device fields → one parser string with
37848
+ * `{deviceId.capName.valuePath}` tokens (Scrypted `{deviceId.sensorId}`).
37849
+ */
37850
+ var OsdNamedTemplateSchema = zod.z.object({
37851
+ id: zod.z.string().min(1).max(64),
37852
+ name: zod.z.string().min(1).max(64),
37853
+ fields: zod.z.array(OsdTemplateFieldSchema).max(32).default([]),
37854
+ /** Parser with multi-token placeholders, e.g. `T {12.thermometer.value}°`. */
37855
+ parser: zod.z.string().max(256).default("")
37856
+ });
37856
37857
  /** Where a slot's value comes from. */
37857
37858
  var OsdSourceSchema = zod.z.discriminatedUnion("kind", [
37858
37859
  zod.z.object({
@@ -37871,11 +37872,17 @@ var OsdSourceSchema = zod.z.discriminatedUnion("kind", [
37871
37872
  deviceId: zod.z.number().int().optional(),
37872
37873
  capName: zod.z.string().min(1).max(64),
37873
37874
  /** Dot path inside the slice, e.g. `detected`, `value`, `mode`. */
37874
- valuePath: zod.z.string().min(1).max(64)
37875
+ valuePath: zod.z.string().min(1).max(64),
37876
+ /** Convert TO this unit at render. Absent = no conversion. */
37877
+ displayUnit: zod.z.string().max(16).optional()
37875
37878
  }),
37876
37879
  zod.z.object({
37877
37880
  kind: zod.z.literal("latest-recognition"),
37878
37881
  recognition: zod.z.enum(["person", "plate"])
37882
+ }),
37883
+ zod.z.object({
37884
+ kind: zod.z.literal("template"),
37885
+ templateId: zod.z.string().min(1).max(64)
37879
37886
  })
37880
37887
  ]);
37881
37888
  var OsdSlotBindingSchema = zod.z.object({
@@ -37891,7 +37898,10 @@ var OsdSlotBindingSchema = zod.z.object({
37891
37898
  * documented workaround for firmwares that reject `.` in overlay text.
37892
37899
  */
37893
37900
  maxDecimals: zod.z.number().int().min(0).max(4).default(1),
37894
- /** Appended via `${unit}`. The state mirror does not carry units. */
37901
+ /**
37902
+ * Appended via `${unit}` when no unit conversion produces a label.
37903
+ * Prefer `source.displayUnit` for converted device-state values.
37904
+ */
37895
37905
  unitLabel: zod.z.string().max(8).optional(),
37896
37906
  /** Raw value → display text, e.g. `{"true":"MOTION","false":""}`. */
37897
37907
  valueMap: zod.z.record(zod.z.string(), zod.z.string()).optional(),
@@ -38045,6 +38055,21 @@ var osdManagerCapability = {
38045
38055
  renderDevice: method(zod.z.object({ deviceId: zod.z.number().int() }), zod.z.object({ results: zod.z.array(OsdRenderResultSchema) }), {
38046
38056
  kind: "mutation",
38047
38057
  auth: "admin"
38058
+ }),
38059
+ /** Every named multi-device template. */
38060
+ listTemplates: method(zod.z.object({}), zod.z.object({ templates: zod.z.array(OsdNamedTemplateSchema) }), { auth: "admin" }),
38061
+ /**
38062
+ * Create or replace a named template by `id`. Returns the stored record
38063
+ * after Zod normalisation.
38064
+ */
38065
+ upsertTemplate: method(zod.z.object({ template: OsdNamedTemplateSchema }), zod.z.object({ template: OsdNamedTemplateSchema }), {
38066
+ kind: "mutation",
38067
+ auth: "admin"
38068
+ }),
38069
+ /** Drop a named template. Bindings that still reference it render unreadable. */
38070
+ deleteTemplate: method(zod.z.object({ templateId: zod.z.string().min(1).max(64) }), zod.z.object({ success: zod.z.literal(true) }), {
38071
+ kind: "mutation",
38072
+ auth: "admin"
38048
38073
  })
38049
38074
  }
38050
38075
  };
@@ -51411,6 +51436,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51411
51436
  addonId: null,
51412
51437
  access: "create"
51413
51438
  },
51439
+ "osdManager.deleteTemplate": {
51440
+ capName: "osd-manager",
51441
+ capScope: "system",
51442
+ addonId: null,
51443
+ access: "delete"
51444
+ },
51414
51445
  "osdManager.getConditionSupport": {
51415
51446
  capName: "osd-manager",
51416
51447
  capScope: "system",
@@ -51429,6 +51460,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51429
51460
  addonId: null,
51430
51461
  access: "view"
51431
51462
  },
51463
+ "osdManager.listTemplates": {
51464
+ capName: "osd-manager",
51465
+ capScope: "system",
51466
+ addonId: null,
51467
+ access: "view"
51468
+ },
51432
51469
  "osdManager.previewSlot": {
51433
51470
  capName: "osd-manager",
51434
51471
  capScope: "system",
@@ -51447,6 +51484,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
51447
51484
  addonId: null,
51448
51485
  access: "create"
51449
51486
  },
51487
+ "osdManager.upsertTemplate": {
51488
+ capName: "osd-manager",
51489
+ capScope: "system",
51490
+ addonId: null,
51491
+ access: "create"
51492
+ },
51450
51493
  "petFeeder.callPet": {
51451
51494
  capName: "pet-feeder",
51452
51495
  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-BkhjxcSp.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-PI1sSVze.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-BQS_M1qw.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-D-7-T--W.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
- const require_dist = require("./dist-CFQLMsVb.js");
1
+ const require_dist = require("./dist-BkhjxcSp.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 { Zn as asJsonObject } from "./dist-ByF1NqOH.mjs";
1
+ import { Zn as asJsonObject } from "./dist-BQS_M1qw.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?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.339",
3
+ "version": "1.2.340",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",