@camstack/system 1.2.340 → 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-PI1sSVze.js → child-cap-dispatch-CE8FZPwx.js} +1 -1
  52. package/dist/{child-cap-dispatch-D-7-T--W.mjs → child-cap-dispatch-CFBFivGj.mjs} +1 -1
  53. package/dist/{composition-sources-DBGzhDIQ.js → composition-sources-D3jZT3Xx.js} +1 -1
  54. package/dist/{composition-sources-CTqzrv1t.mjs → composition-sources-D7poRDHO.mjs} +1 -1
  55. package/dist/{dist-BQS_M1qw.mjs → dist-C9uyNQLN.mjs} +28 -7
  56. package/dist/{dist-BkhjxcSp.js → dist-dflxzOjI.js} +28 -7
  57. package/dist/index.js +2 -2
  58. package/dist/index.mjs +2 -2
  59. package/dist/{retired-settings-keys-RD8q79Sb.mjs → retired-settings-keys-BWwZzByT.mjs} +1 -1
  60. package/dist/{retired-settings-keys-CLazIr8J.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-PI1sSVze.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-D-7-T--W.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.js");
7
- const require_composition_sources = require("../../composition-sources-DBGzhDIQ.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-BQS_M1qw.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-CTqzrv1t.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.js");
4
- const require_composition_sources = require("../../composition-sources-DBGzhDIQ.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-BQS_M1qw.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-CTqzrv1t.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-BkhjxcSp.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-CLazIr8J.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-BQS_M1qw.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-RD8q79Sb.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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-BkhjxcSp.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-BQS_M1qw.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
@@ -37834,24 +37834,45 @@ setOverlay: method(z.object({
37834
37834
  * conditions it is shown at all. Named TEMPLATES combine many device
37835
37835
  * fields into one overlay string (Scrypted OSD Manager parity).
37836
37836
  */
37837
- /** One field reference inside a named multi-device template. */
37838
- var OsdTemplateFieldSchema = z.object({
37839
- deviceId: z.number().int(),
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
+ */
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,
37840
37860
  capName: z.string().min(1).max(64),
37841
37861
  valuePath: z.string().min(1).max(64),
37862
+ format: OsdTemplateFormatSchema.default("value+unit"),
37842
37863
  /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
37843
37864
  displayUnit: z.string().max(16).optional(),
37844
37865
  maxDecimals: z.number().int().min(0).max(4).default(1)
37845
37866
  });
37846
37867
  /**
37847
- * A named template: several device fields → one parser string with
37848
- * `{deviceId.capName.valuePath}` tokens (Scrypted `{deviceId.sensorId}`).
37868
+ * A named template: bindings (alias → leaf field) + a parser that only
37869
+ * references `{alias}` tokens.
37849
37870
  */
37850
37871
  var OsdNamedTemplateSchema = z.object({
37851
37872
  id: z.string().min(1).max(64),
37852
37873
  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}°`. */
37874
+ bindings: z.array(OsdTemplateBindingSchema).max(32).default([]),
37875
+ /** Parser with alias placeholders, e.g. `{t} / {h}`. */
37855
37876
  parser: z.string().max(256).default("")
37856
37877
  });
37857
37878
  /** Where a slot's value comes from. */
@@ -37834,24 +37834,45 @@ setOverlay: method(zod.z.object({
37834
37834
  * conditions it is shown at all. Named TEMPLATES combine many device
37835
37835
  * fields into one overlay string (Scrypted OSD Manager parity).
37836
37836
  */
37837
- /** One field reference inside a named multi-device template. */
37838
- var OsdTemplateFieldSchema = zod.z.object({
37839
- deviceId: zod.z.number().int(),
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
+ */
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,
37840
37860
  capName: zod.z.string().min(1).max(64),
37841
37861
  valuePath: zod.z.string().min(1).max(64),
37862
+ format: OsdTemplateFormatSchema.default("value+unit"),
37842
37863
  /** Convert TO this unit at render (`tryConvertUnit`). Absent = source unit. */
37843
37864
  displayUnit: zod.z.string().max(16).optional(),
37844
37865
  maxDecimals: zod.z.number().int().min(0).max(4).default(1)
37845
37866
  });
37846
37867
  /**
37847
- * A named template: several device fields → one parser string with
37848
- * `{deviceId.capName.valuePath}` tokens (Scrypted `{deviceId.sensorId}`).
37868
+ * A named template: bindings (alias → leaf field) + a parser that only
37869
+ * references `{alias}` tokens.
37849
37870
  */
37850
37871
  var OsdNamedTemplateSchema = zod.z.object({
37851
37872
  id: zod.z.string().min(1).max(64),
37852
37873
  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}°`. */
37874
+ bindings: zod.z.array(OsdTemplateBindingSchema).max(32).default([]),
37875
+ /** Parser with alias placeholders, e.g. `{t} / {h}`. */
37855
37876
  parser: zod.z.string().max(256).default("")
37856
37877
  });
37857
37878
  /** Where a slot's value comes from. */
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-BkhjxcSp.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-PI1sSVze.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-BQS_M1qw.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-D-7-T--W.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-BQS_M1qw.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-BkhjxcSp.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.340",
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",