@camstack/system 1.2.177 → 1.2.178

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 (56) 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/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/console-logging/index.js +1 -1
  12. package/dist/builtins/console-logging/index.mjs +1 -1
  13. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  14. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  15. package/dist/builtins/device-manager/device-manager.addon.js +8 -4
  16. package/dist/builtins/device-manager/device-manager.addon.mjs +8 -4
  17. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  18. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  19. package/dist/builtins/hub-forwarder/index.js +1 -1
  20. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  21. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  22. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  23. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  24. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  25. package/dist/builtins/local-network/local-network.addon.js +1 -1
  26. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  27. package/dist/builtins/loki-logging/index.js +1 -1
  28. package/dist/builtins/loki-logging/index.mjs +1 -1
  29. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  30. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  31. package/dist/builtins/platform-probe/index.js +1 -1
  32. package/dist/builtins/platform-probe/index.mjs +1 -1
  33. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  34. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  35. package/dist/builtins/snapshot/index.js +1 -1
  36. package/dist/builtins/snapshot/index.mjs +1 -1
  37. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  38. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  39. package/dist/builtins/sqlite-storage/filter-compiler.d.ts +10 -0
  40. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  41. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  42. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  43. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  44. package/dist/builtins/system-config/system-config.addon.js +1 -1
  45. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  46. package/dist/builtins/winston-logging/index.js +1 -1
  47. package/dist/builtins/winston-logging/index.mjs +1 -1
  48. package/dist/{dist-DkVaJ5vG.js → dist-C0IXtI_E.js} +97 -1
  49. package/dist/{dist-C-8k9Z9W.mjs → dist-DMJ-DM7n.mjs} +92 -2
  50. package/dist/index.js +2 -2
  51. package/dist/index.mjs +2 -2
  52. package/dist/{manifest-system-deps-4NeY_8iQ.mjs → manifest-system-deps-BMD6YE4f.mjs} +1 -1
  53. package/dist/{manifest-system-deps-BbB94ozU.js → manifest-system-deps-D6ncx0jA.js} +1 -1
  54. package/dist/{retired-settings-keys-wfKn2-Sk.mjs → retired-settings-keys-D66kBk8P.mjs} +1 -1
  55. package/dist/{retired-settings-keys-B1ij-xtH.js → retired-settings-keys-eLv_RCfp.js} +1 -1
  56. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_manifest_system_deps = require("./manifest-system-deps-BbB94ozU.js");
2
+ const require_manifest_system_deps = require("./manifest-system-deps-D6ncx0jA.js");
3
3
  const require_custom_action_registry = require("./custom-action-registry-jY0NOZK8.js");
4
4
  let node_path = require("node:path");
5
5
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { A as createUdsLoggerWithControl, Ft as RUNNER_RSS_BUDGET_ENV, Jt as startRunnerHeapWatch, Qt as emitHeapDiagnosticReport, a as createUdsAddonContext, bt as resolveAddonClass, it as setWorkerNativeCapsChangeListener, j as LocalChildClient, n as installManifestPythonDeps, nt as getWorkerNativeCapSnapshot, ot as validateProviderRegistrations, t as installManifestSystemDeps, tt as getWorkerNativeCapProvider, yt as installManifestNativeDeps } from "./manifest-system-deps-4NeY_8iQ.mjs";
1
+ import { A as createUdsLoggerWithControl, Ft as RUNNER_RSS_BUDGET_ENV, Jt as startRunnerHeapWatch, Qt as emitHeapDiagnosticReport, a as createUdsAddonContext, bt as resolveAddonClass, it as setWorkerNativeCapsChangeListener, j as LocalChildClient, n as installManifestPythonDeps, nt as getWorkerNativeCapSnapshot, ot as validateProviderRegistrations, t as installManifestSystemDeps, tt as getWorkerNativeCapProvider, yt as installManifestNativeDeps } from "./manifest-system-deps-BMD6YE4f.mjs";
2
2
  import { t as CustomActionRegistry } from "./custom-action-registry-F__gp_VX.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { E as addonPagesCapability, Nt as errMsg, Pt as BaseAddon, on as EventCategory } from "../../dist-C-8k9Z9W.mjs";
1
+ import { E as addonPagesCapability, Ft as BaseAddon, Pt as errMsg, sn as EventCategory } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Nt as errMsg, O as addonWidgetsCapability, Pt as BaseAddon, on as EventCategory } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, O as addonWidgetsCapability, Pt as errMsg, sn as EventCategory } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Nt as errMsg, Pt as BaseAddon, k as alertsCapability, n as AlertSchema, on as EventCategory, qt as createEvent } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, Jt as createEvent, Pt as errMsg, k as alertsCapability, n as AlertSchema, sn as EventCategory } from "../../dist-DMJ-DM7n.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
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Pt as BaseAddon, j as backupCapability, on as EventCategory } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, j as backupCapability, sn as EventCategory } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Pt as BaseAddon, ct as logDestinationCapability } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, ct as logDestinationCapability } from "../../dist-DMJ-DM7n.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,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-DkVaJ5vG.js");
3
+ const require_dist = require("../../dist-C0IXtI_E.js");
4
4
  let node_crypto = require("node:crypto");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,4 +1,4 @@
1
- import { I as coreBlockAddonId, L as coreBlockIdFromAddonId, Nt as errMsg, Pt as BaseAddon, R as coreBlocksCapability, c as CORE_BLOCK_ADDON_PREFIX, d as DeclaredDevices, l as CoreBlockSchema, s as CORE_BLOCKS_ADDON_ID } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, I as coreBlockAddonId, L as coreBlockIdFromAddonId, Pt as errMsg, R as coreBlocksCapability, c as CORE_BLOCK_ADDON_PREFIX, d as DeclaredDevices, l as CoreBlockSchema, s as CORE_BLOCKS_ADDON_ID } from "../../dist-DMJ-DM7n.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import * as fs from "node:fs/promises";
4
4
  import * as path$1 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-DkVaJ5vG.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-B1ij-xtH.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-eLv_RCfp.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let _camstack_types_node = require("@camstack/types/node");
10
10
  //#region src/builtins/device-manager/adoption-job-engine.ts
@@ -2086,8 +2086,12 @@ function expandContainer(id, byId, byParent, visited, out) {
2086
2086
  }
2087
2087
  const nextVisited = new Set(visited);
2088
2088
  nextVisited.add(id);
2089
- const children = byParent.get(id) ?? [];
2090
- for (const child of children) expandContainer(child.id, byId, byParent, nextVisited, out);
2089
+ const primary = require_dist.resolveContainerPrimaryChild((byParent.get(id) ?? []).map((c) => ({
2090
+ id: c.id,
2091
+ entityId: String(c.id),
2092
+ type: c.type
2093
+ })), void 0);
2094
+ if (primary !== null) expandContainer(primary.id, byId, byParent, nextVisited, out);
2091
2095
  }
2092
2096
  /**
2093
2097
  * Pure resolution core: children ∪ (auto → same-location | manual → list),
@@ -1,5 +1,5 @@
1
- import { Bt as DeviceType, H as deviceManagerCapability, J as enumerateSchemaFields, Nt as errMsg, P as buildStreamParamsConfigSchema, Pt as BaseAddon, Qt as isDeviceConfigCap, Rt as DeviceFeature, U as deviceStateCapability, Ut as WELL_KNOWN_TAB_MAP, W as deviceStatusCapability, a as CAMERA_SWITCH_ORDER, an as sleep, b as STREAM_PROFILE_META, bt as runtimeStatePolicyFor, f as DeviceStatusSchema, ft as normalizeUnit, mt as parseStreamParamsFormPatch, o as CAP_NAMES_WITH_STATUS, on as EventCategory, q as enumerateItemArrayFields, t as ALL_CAPABILITY_DEFINITIONS, zt as DeviceRole } from "../../dist-C-8k9Z9W.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-wfKn2-Sk.mjs";
1
+ import { $t as isDeviceConfigCap, Bt as DeviceRole, Ft as BaseAddon, H as deviceManagerCapability, J as enumerateSchemaFields, P as buildStreamParamsConfigSchema, Pt as errMsg, U as deviceStateCapability, Vt as DeviceType, W as deviceStatusCapability, Wt as WELL_KNOWN_TAB_MAP, a as CAMERA_SWITCH_ORDER, b as STREAM_PROFILE_META, f as DeviceStatusSchema, ft as normalizeUnit, mt as parseStreamParamsFormPatch, o as CAP_NAMES_WITH_STATUS, on as sleep, q as enumerateItemArrayFields, sn as EventCategory, t as ALL_CAPABILITY_DEFINITIONS, xt as runtimeStatePolicyFor, yt as resolveContainerPrimaryChild, zt as DeviceFeature } from "../../dist-DMJ-DM7n.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-D66kBk8P.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
5
5
  //#region src/builtins/device-manager/adoption-job-engine.ts
@@ -2081,8 +2081,12 @@ function expandContainer(id, byId, byParent, visited, out) {
2081
2081
  }
2082
2082
  const nextVisited = new Set(visited);
2083
2083
  nextVisited.add(id);
2084
- const children = byParent.get(id) ?? [];
2085
- for (const child of children) expandContainer(child.id, byId, byParent, nextVisited, out);
2084
+ const primary = resolveContainerPrimaryChild((byParent.get(id) ?? []).map((c) => ({
2085
+ id: c.id,
2086
+ entityId: String(c.id),
2087
+ type: c.type
2088
+ })), void 0);
2089
+ if (primary !== null) expandContainer(primary.id, byId, byParent, nextVisited, out);
2086
2090
  }
2087
2091
  /**
2088
2092
  * Pure resolution core: children ∪ (auto → same-location | manual → list),
@@ -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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.js");
7
7
  //#region src/builtins/doorbell/trigger-engine.ts
8
8
  /**
9
9
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -1,4 +1,4 @@
1
- import { Bt as DeviceType, G as doorbellCapability, M as bareAddonId, Nt as errMsg, Pt as BaseAddon, Y as evaluateSensorEdge, _ as SOURCE_CAPS, nt as isSameAddonId, on as EventCategory, qt as createEvent, rt as isSourceCap, v as SOURCE_DEVICE_TYPES } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, G as doorbellCapability, Jt as createEvent, M as bareAddonId, Pt as errMsg, Vt as DeviceType, Y as evaluateSensorEdge, _ as SOURCE_CAPS, nt as isSameAddonId, rt as isSourceCap, sn as EventCategory, v as SOURCE_DEVICE_TYPES } from "../../dist-DMJ-DM7n.mjs";
2
2
  //#region src/builtins/doorbell/trigger-engine.ts
3
3
  /**
4
4
  * Pure trigger logic for the virtual-doorbell builtin — edge detection over
@@ -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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Pt as BaseAddon, ct as logDestinationCapability } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, ct as logDestinationCapability } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
3
+ const require_dist = require("../../dist-C0IXtI_E.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 { Nt as errMsg, Pt as BaseAddon, on as EventCategory, qt as createEvent } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, Jt as createEvent, Pt as errMsg, sn as EventCategory } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { A as authProviderCapability, At as userManagementCapability, Pt as BaseAddon, T as UserRecordSchema, r as ApiKeyRecordSchema, x as ScopedTokenSchema } from "../../dist-C-8k9Z9W.mjs";
2
+ import { A as authProviderCapability, Ft as BaseAddon, T as UserRecordSchema, jt as userManagementCapability, r as ApiKeyRecordSchema, x as ScopedTokenSchema } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
3
+ const require_dist = require("../../dist-C0IXtI_E.js");
4
4
  const require_tls = require("../../tls-BxQlomxd.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 { Pt as BaseAddon, on as EventCategory, st as localNetworkCapability } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, sn as EventCategory, st as localNetworkCapability } from "../../dist-DMJ-DM7n.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-DOTmtLCW.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Pt as BaseAddon, ct as logDestinationCapability } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, ct as logDestinationCapability } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.js");
7
7
  let node_fs_promises = require("node:fs/promises");
8
8
  let node_child_process = require("node:child_process");
9
9
  let node_util = require("node:util");
@@ -1,4 +1,4 @@
1
- import { Nt as errMsg, Pt as BaseAddon, Q as foldSnapshotByFunction, _t as reducePoints, dt as metricsProviderCapability, on as EventCategory, qt as createEvent, vt as resolveBucketMs } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, Jt as createEvent, Pt as errMsg, Q as foldSnapshotByFunction, _t as reducePoints, dt as metricsProviderCapability, sn as EventCategory, vt as resolveBucketMs } from "../../dist-DMJ-DM7n.mjs";
2
2
  import { readFile, readdir } from "node:fs/promises";
3
3
  import { execFile, execFileSync } from "node:child_process";
4
4
  import { promisify } from "node:util";
@@ -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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Ct as scoreRuntimes, K as enumerateInferenceDevices, Nt as errMsg, Pt as BaseAddon, Yt as emitReadiness, ht as platformProbeCapability, on as EventCategory } from "../../dist-C-8k9Z9W.mjs";
2
+ import { Ft as BaseAddon, K as enumerateInferenceDevices, Pt as errMsg, Xt as emitReadiness, ht as platformProbeCapability, sn as EventCategory, wt as scoreRuntimes } from "../../dist-DMJ-DM7n.mjs";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
5
5
  import * as fs from "node:fs";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Pt as BaseAddon, on as EventCategory } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, sn as EventCategory } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,4 +1,4 @@
1
- import { $t as nodePin, Bt as DeviceType, M as bareAddonId, N as batteryCapability, Nt as errMsg, Pt as BaseAddon, Rt as DeviceFeature, Tt as snapshotCapability, V as deriveBatteryPresence, i as BatteryStatusSchema, kt as streamQualityLabel, on as EventCategory } from "../../dist-C-8k9Z9W.mjs";
1
+ import { At as streamQualityLabel, Et as snapshotCapability, Ft as BaseAddon, M as bareAddonId, N as batteryCapability, Pt as errMsg, V as deriveBatteryPresence, Vt as DeviceType, en as nodePin, i as BatteryStatusSchema, sn as EventCategory, zt as DeviceFeature } from "../../dist-DMJ-DM7n.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { signExpiringUrl, verifyExpiringUrl } from "@camstack/types/node";
@@ -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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Ot as storageProviderCapability, Pt as BaseAddon, Z as filesystemBrowseCapability } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, Z as filesystemBrowseCapability, kt as storageProviderCapability } from "../../dist-DMJ-DM7n.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";
@@ -80,6 +80,16 @@ export interface QueryFilterInput {
80
80
  * is not a contradiction.
81
81
  */
82
82
  readonly whereNot?: Readonly<Record<string, unknown>>;
83
+ /**
84
+ * JSON-array membership, compiled as
85
+ * `(expr IS NULL OR NOT json_valid(expr) OR EXISTS (SELECT 1 FROM
86
+ * json_each(expr) WHERE value IN (…)))`.
87
+ *
88
+ * A SUPERSET prefilter on purpose — see `QueryFilter.whereJsonArrayAny`. An
89
+ * unreadable column keeps its row rather than losing it, so this can narrow
90
+ * a read without ever changing an answer.
91
+ */
92
+ readonly whereJsonArrayAny?: Readonly<Record<string, readonly unknown[]>>;
83
93
  }
84
94
  /**
85
95
  * The predicate-only filter a bulk mutation accepts — no ordering, no limit.
@@ -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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { C as StorageLocationTypeSchema, Dt as storageMigrationCapability, Et as storageCapability, F as collectSecretConfigKeys, Pt as BaseAddon, S as StorageCleanupJobSchema, en as parseJsonObject, h as REDACTED_SECRET, w as StorageMigrationJobSchema, wt as settingsStoreCapability } from "../../dist-C-8k9Z9W.mjs";
1
+ import { C as StorageLocationTypeSchema, Dt as storageCapability, F as collectSecretConfigKeys, Ft as BaseAddon, Ot as storageMigrationCapability, S as StorageCleanupJobSchema, Tt as settingsStoreCapability, h as REDACTED_SECRET, tn as parseJsonObject, w as StorageMigrationJobSchema } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Nt as errMsg, Pt as BaseAddon, Zt as hydrateSchema } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, Pt as errMsg, Qt as hydrateSchema } from "../../dist-DMJ-DM7n.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-DkVaJ5vG.js");
6
+ const require_dist = require("../../dist-C0IXtI_E.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 { Pt as BaseAddon, ct as logDestinationCapability } from "../../dist-C-8k9Z9W.mjs";
1
+ import { Ft as BaseAddon, ct as logDestinationCapability } from "../../dist-DMJ-DM7n.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";
@@ -18419,7 +18419,21 @@ var pipelineAnalyticsCapability = {
18419
18419
  /** Include stationary-promoted rows (parked objects handed to the
18420
18420
  * stationary registry). Default false: the timeline lists passages,
18421
18421
  * not parking records (operator decision, 2026-08-15). */
18422
- includeStationary: zod.z.boolean().optional()
18422
+ includeStationary: zod.z.boolean().optional(),
18423
+ /**
18424
+ * Restrict to these track classes. ABSENT or EMPTY means no filter.
18425
+ *
18426
+ * Added 2026-09-03: the timeline's class chips filtered in the CLIENT,
18427
+ * on a day of rows already downloaded. The zone filter had been moved
18428
+ * here for exactly that reason — and it is also what lets the rows come
18429
+ * back `slim` — but the class filter was left behind, so a narrow
18430
+ * selection was still a wide read followed by a wide discard.
18431
+ *
18432
+ * Empty is "show all", not "nothing matches": a chip row with nothing
18433
+ * selected is an operator who has not narrowed anything, and an empty
18434
+ * timeline would read as a camera that saw nothing.
18435
+ */
18436
+ classes: zod.z.array(zod.z.string()).optional()
18423
18437
  }), zod.z.array(TrackSchema).readonly()),
18424
18438
  /**
18425
18439
  * Batched cluster-wide track listing — ONE call for the events page /
@@ -33719,6 +33733,82 @@ var RUNTIME_DEFAULTS = {
33719
33733
  "auth.tokenExpiry": "30d"
33720
33734
  };
33721
33735
  /**
33736
+ * WHICH child a container stands for — one definition, for every consumer.
33737
+ *
33738
+ * A CONTAINER device has no controllable surface of its own: it groups entity
33739
+ * children (a Gree air-conditioner grouping a climate child plus light, x-fan
33740
+ * and health switches). Everything that has to show or act on a container has
33741
+ * to answer the same question — which child IS the container — and until now
33742
+ * three places answered it separately:
33743
+ *
33744
+ * - `ui-library/device-controls/primary-child.ts` (admin-ui rendering)
33745
+ * - `addon-provider-homeassistant` PARENT_TYPE_PRIORITY (adoption)
33746
+ * - the viewer's own `container-primary.ts` (linked-devices panel)
33747
+ *
33748
+ * Each carried the same list and a comment asking the others to stay in sync.
33749
+ * This is that list, in the one package all of them already depend on.
33750
+ *
33751
+ * The rule has two halves and the ORDER matters: an operator's explicit pick
33752
+ * wins outright, and only in its absence does type priority decide. The pick is
33753
+ * keyed on the child's re-sync-stable `entityId`, not its numeric id, so it
33754
+ * survives a re-sync that reallocates ids.
33755
+ */
33756
+ /**
33757
+ * Type priority, most→least "primary". An actuator (climate / lock / cover / …)
33758
+ * outranks a bare `switch` so a container's defining child wins over its
33759
+ * auxiliary switches. Unknown or absent types sort after every entry.
33760
+ *
33761
+ * NB: `siren` deliberately sits BELOW `switch` — it is a switch-family
33762
+ * actuator, and a camera's siren must not out-rank the thing the container is.
33763
+ *
33764
+ * These strings are matched against a child's `DeviceType` VALUE, so they must
33765
+ * equal the enum's string values.
33766
+ */
33767
+ var CONTAINER_CHILD_PRIORITY = [
33768
+ "media-player",
33769
+ "alarm-panel",
33770
+ "thermostat",
33771
+ "climate",
33772
+ "humidifier",
33773
+ "water-heater",
33774
+ "lock",
33775
+ "cover",
33776
+ "valve",
33777
+ "fan",
33778
+ "vacuum",
33779
+ "lawn-mower",
33780
+ "light",
33781
+ "switch",
33782
+ "siren",
33783
+ "button",
33784
+ "control",
33785
+ "notifier",
33786
+ "script",
33787
+ "automation",
33788
+ "update",
33789
+ "presence",
33790
+ "weather",
33791
+ "image",
33792
+ "sensor"
33793
+ ];
33794
+ function rank(type) {
33795
+ const i = CONTAINER_CHILD_PRIORITY.indexOf(type);
33796
+ return i === -1 ? CONTAINER_CHILD_PRIORITY.length : i;
33797
+ }
33798
+ /**
33799
+ * The child a container stands for: the operator's pick when it still exists,
33800
+ * else the highest-priority type. `null` for a childless container — a caller
33801
+ * must decide what an empty container means for it, rather than being handed a
33802
+ * child that is not there.
33803
+ */
33804
+ function resolveContainerPrimaryChild(children, overrideEntityId) {
33805
+ if (overrideEntityId !== void 0 && overrideEntityId !== null) {
33806
+ const picked = children.find((c) => c.entityId === overrideEntityId);
33807
+ if (picked !== void 0) return picked;
33808
+ }
33809
+ return [...children].toSorted((a, b) => rank(a.type) - rank(b.type))[0] ?? null;
33810
+ }
33811
+ /**
33722
33812
  * Accessory device helpers — shared across drivers.
33723
33813
  *
33724
33814
  * Many vendor-specific drivers register accessory child devices on
@@ -43646,6 +43736,12 @@ Object.defineProperty(exports, "resolveCapMount", {
43646
43736
  return resolveCapMount;
43647
43737
  }
43648
43738
  });
43739
+ Object.defineProperty(exports, "resolveContainerPrimaryChild", {
43740
+ enumerable: true,
43741
+ get: function() {
43742
+ return resolveContainerPrimaryChild;
43743
+ }
43744
+ });
43649
43745
  Object.defineProperty(exports, "resolveMethodAuth", {
43650
43746
  enumerable: true,
43651
43747
  get: function() {
@@ -18419,7 +18419,21 @@ var pipelineAnalyticsCapability = {
18419
18419
  /** Include stationary-promoted rows (parked objects handed to the
18420
18420
  * stationary registry). Default false: the timeline lists passages,
18421
18421
  * not parking records (operator decision, 2026-08-15). */
18422
- includeStationary: z.boolean().optional()
18422
+ includeStationary: z.boolean().optional(),
18423
+ /**
18424
+ * Restrict to these track classes. ABSENT or EMPTY means no filter.
18425
+ *
18426
+ * Added 2026-09-03: the timeline's class chips filtered in the CLIENT,
18427
+ * on a day of rows already downloaded. The zone filter had been moved
18428
+ * here for exactly that reason — and it is also what lets the rows come
18429
+ * back `slim` — but the class filter was left behind, so a narrow
18430
+ * selection was still a wide read followed by a wide discard.
18431
+ *
18432
+ * Empty is "show all", not "nothing matches": a chip row with nothing
18433
+ * selected is an operator who has not narrowed anything, and an empty
18434
+ * timeline would read as a camera that saw nothing.
18435
+ */
18436
+ classes: z.array(z.string()).optional()
18423
18437
  }), z.array(TrackSchema).readonly()),
18424
18438
  /**
18425
18439
  * Batched cluster-wide track listing — ONE call for the events page /
@@ -33719,6 +33733,82 @@ var RUNTIME_DEFAULTS = {
33719
33733
  "auth.tokenExpiry": "30d"
33720
33734
  };
33721
33735
  /**
33736
+ * WHICH child a container stands for — one definition, for every consumer.
33737
+ *
33738
+ * A CONTAINER device has no controllable surface of its own: it groups entity
33739
+ * children (a Gree air-conditioner grouping a climate child plus light, x-fan
33740
+ * and health switches). Everything that has to show or act on a container has
33741
+ * to answer the same question — which child IS the container — and until now
33742
+ * three places answered it separately:
33743
+ *
33744
+ * - `ui-library/device-controls/primary-child.ts` (admin-ui rendering)
33745
+ * - `addon-provider-homeassistant` PARENT_TYPE_PRIORITY (adoption)
33746
+ * - the viewer's own `container-primary.ts` (linked-devices panel)
33747
+ *
33748
+ * Each carried the same list and a comment asking the others to stay in sync.
33749
+ * This is that list, in the one package all of them already depend on.
33750
+ *
33751
+ * The rule has two halves and the ORDER matters: an operator's explicit pick
33752
+ * wins outright, and only in its absence does type priority decide. The pick is
33753
+ * keyed on the child's re-sync-stable `entityId`, not its numeric id, so it
33754
+ * survives a re-sync that reallocates ids.
33755
+ */
33756
+ /**
33757
+ * Type priority, most→least "primary". An actuator (climate / lock / cover / …)
33758
+ * outranks a bare `switch` so a container's defining child wins over its
33759
+ * auxiliary switches. Unknown or absent types sort after every entry.
33760
+ *
33761
+ * NB: `siren` deliberately sits BELOW `switch` — it is a switch-family
33762
+ * actuator, and a camera's siren must not out-rank the thing the container is.
33763
+ *
33764
+ * These strings are matched against a child's `DeviceType` VALUE, so they must
33765
+ * equal the enum's string values.
33766
+ */
33767
+ var CONTAINER_CHILD_PRIORITY = [
33768
+ "media-player",
33769
+ "alarm-panel",
33770
+ "thermostat",
33771
+ "climate",
33772
+ "humidifier",
33773
+ "water-heater",
33774
+ "lock",
33775
+ "cover",
33776
+ "valve",
33777
+ "fan",
33778
+ "vacuum",
33779
+ "lawn-mower",
33780
+ "light",
33781
+ "switch",
33782
+ "siren",
33783
+ "button",
33784
+ "control",
33785
+ "notifier",
33786
+ "script",
33787
+ "automation",
33788
+ "update",
33789
+ "presence",
33790
+ "weather",
33791
+ "image",
33792
+ "sensor"
33793
+ ];
33794
+ function rank(type) {
33795
+ const i = CONTAINER_CHILD_PRIORITY.indexOf(type);
33796
+ return i === -1 ? CONTAINER_CHILD_PRIORITY.length : i;
33797
+ }
33798
+ /**
33799
+ * The child a container stands for: the operator's pick when it still exists,
33800
+ * else the highest-priority type. `null` for a childless container — a caller
33801
+ * must decide what an empty container means for it, rather than being handed a
33802
+ * child that is not there.
33803
+ */
33804
+ function resolveContainerPrimaryChild(children, overrideEntityId) {
33805
+ if (overrideEntityId !== void 0 && overrideEntityId !== null) {
33806
+ const picked = children.find((c) => c.entityId === overrideEntityId);
33807
+ if (picked !== void 0) return picked;
33808
+ }
33809
+ return [...children].toSorted((a, b) => rank(a.type) - rank(b.type))[0] ?? null;
33810
+ }
33811
+ /**
33722
33812
  * Accessory device helpers — shared across drivers.
33723
33813
  *
33724
33814
  * Many vendor-specific drivers register accessory child devices on
@@ -43058,4 +43148,4 @@ function enumerateInferenceDevices(hw) {
43058
43148
  return out;
43059
43149
  }
43060
43150
  //#endregion
43061
- export { isArrayOutputSchema as $, nodePin as $t, authProviderCapability as A, userManagementCapability as At, decodeVectorBase64 as B, DeviceType as Bt, StorageLocationTypeSchema as C, scoreRuntimes as Ct, addonSettingsCapability as D, storageMigrationCapability as Dt, addonPagesCapability as E, storageCapability as Et, collectSecretConfigKeys as F, DATAPLANE_SECRET_HEADER as Ft, doorbellCapability as G, asNumber as Gt, deviceManagerCapability as H, ReadinessTimeoutError as Ht, coreBlockAddonId as I, DEVICE_SETTINGS_CONTRIBUTION_METHODS as It, enumerateSchemaFields as J, emitDownForOwnedCaps as Jt, enumerateInferenceDevices as K, asString as Kt, coreBlockIdFromAddonId as L, DEVICE_STATUS_METHOD as Lt, bareAddonId as M, vectorStoreCapability as Mt, batteryCapability as N, errMsg as Nt, addonWidgetsCapability as O, storageProviderCapability as Ot, buildStreamParamsConfigSchema as P, BaseAddon as Pt, foldSnapshotByFunction as Q, isDeviceConfigCap as Qt, coreBlocksCapability as R, DeviceFeature as Rt, StorageCleanupJobSchema as S, scopesAllowDeviceCap as St, UserRecordSchema as T, snapshotCapability as Tt, deviceStateCapability as U, WELL_KNOWN_TAB_MAP as Ut, deriveBatteryPresence as V, ReadinessRegistry as Vt, deviceStatusCapability as W, asJsonObject as Wt, extractNestedAddonId as X, expandCapMethods as Xt, evaluateSensorEdge as Y, emitReadiness as Yt, filesystemBrowseCapability as Z, hydrateSchema as Zt, SOURCE_CAPS as _, reducePoints as _t, CAMERA_SWITCH_ORDER as a, sleep as an, kebabToCamel as at, STREAM_PROFILE_META as b, runtimeStatePolicyFor as bt, CORE_BLOCK_ADDON_PREFIX as c, logDestinationCapability as ct, DeclaredDevices as d, metricsProviderCapability as dt, parseJsonObject as en, isCollectionArrayMethod as et, DeviceStatusSchema as f, normalizeUnit as ft, RUNTIME_DEFAULTS as g, procedureAuthKey as gt, REDACTED_SECRET as h, platformProbeCapability as ht, BatteryStatusSchema as i, scopeKey as in, isVoidInput as it, backupCapability as j, vectorDimFromBase64 as jt, alertsCapability as k, streamQualityLabel as kt, CoreBlockSchema as l, logLevelAtMost as lt, METHOD_ACCESS_MAP as m, parseStreamParamsFormPatch as mt, AlertSchema as n, readinessKey as nn, isSameAddonId as nt, CAP_NAMES_WITH_STATUS as o, EventCategory as on, lifecycleJobSchema as ot, LOG_LEVEL_RANK as p, objectInputDeclaresAddonId as pt, enumerateItemArrayFields as q, createEvent as qt, ApiKeyRecordSchema as r, resolveCapMount as rn, isSourceCap as rt, CORE_BLOCKS_ADDON_ID as s, localNetworkCapability as st, ALL_CAPABILITY_DEFINITIONS as t, parseJsonUnknown as tn, isObjectInput as tt, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as u, looseSchema as ut, SOURCE_DEVICE_TYPES as v, resolveBucketMs as vt, StorageMigrationJobSchema as w, settingsStoreCapability as wt, ScopedTokenSchema as x, scopesAllowAddon as xt, STORAGE_ACCESS_FALLBACK as y, resolveMethodAuth as yt, dataStoreProviderCapability as z, DeviceRole as zt };
43151
+ export { isArrayOutputSchema as $, isDeviceConfigCap as $t, authProviderCapability as A, streamQualityLabel as At, decodeVectorBase64 as B, DeviceRole as Bt, StorageLocationTypeSchema as C, scopesAllowDeviceCap as Ct, addonSettingsCapability as D, storageCapability as Dt, addonPagesCapability as E, snapshotCapability as Et, collectSecretConfigKeys as F, BaseAddon as Ft, doorbellCapability as G, asJsonObject as Gt, deviceManagerCapability as H, ReadinessRegistry as Ht, coreBlockAddonId as I, DATAPLANE_SECRET_HEADER as It, enumerateSchemaFields as J, createEvent as Jt, enumerateInferenceDevices as K, asNumber as Kt, coreBlockIdFromAddonId as L, DEVICE_SETTINGS_CONTRIBUTION_METHODS as Lt, bareAddonId as M, vectorDimFromBase64 as Mt, batteryCapability as N, vectorStoreCapability as Nt, addonWidgetsCapability as O, storageMigrationCapability as Ot, buildStreamParamsConfigSchema as P, errMsg as Pt, foldSnapshotByFunction as Q, hydrateSchema as Qt, coreBlocksCapability as R, DEVICE_STATUS_METHOD as Rt, StorageCleanupJobSchema as S, scopesAllowAddon as St, UserRecordSchema as T, settingsStoreCapability as Tt, deviceStateCapability as U, ReadinessTimeoutError as Ut, deriveBatteryPresence as V, DeviceType as Vt, deviceStatusCapability as W, WELL_KNOWN_TAB_MAP as Wt, extractNestedAddonId as X, emitReadiness as Xt, evaluateSensorEdge as Y, emitDownForOwnedCaps as Yt, filesystemBrowseCapability as Z, expandCapMethods as Zt, SOURCE_CAPS as _, reducePoints as _t, CAMERA_SWITCH_ORDER as a, scopeKey as an, kebabToCamel as at, STREAM_PROFILE_META as b, resolveMethodAuth as bt, CORE_BLOCK_ADDON_PREFIX as c, logDestinationCapability as ct, DeclaredDevices as d, metricsProviderCapability as dt, nodePin as en, isCollectionArrayMethod as et, DeviceStatusSchema as f, normalizeUnit as ft, RUNTIME_DEFAULTS as g, procedureAuthKey as gt, REDACTED_SECRET as h, platformProbeCapability as ht, BatteryStatusSchema as i, resolveCapMount as in, isVoidInput as it, backupCapability as j, userManagementCapability as jt, alertsCapability as k, storageProviderCapability as kt, CoreBlockSchema as l, logLevelAtMost as lt, METHOD_ACCESS_MAP as m, parseStreamParamsFormPatch as mt, AlertSchema as n, parseJsonUnknown as nn, isSameAddonId as nt, CAP_NAMES_WITH_STATUS as o, sleep as on, lifecycleJobSchema as ot, LOG_LEVEL_RANK as p, objectInputDeclaresAddonId as pt, enumerateItemArrayFields as q, asString as qt, ApiKeyRecordSchema as r, readinessKey as rn, isSourceCap as rt, CORE_BLOCKS_ADDON_ID as s, EventCategory as sn, localNetworkCapability as st, ALL_CAPABILITY_DEFINITIONS as t, parseJsonObject as tn, isObjectInput as tt, DEFAULT_FIRST_SIGHTING_FRESHNESS_MS as u, looseSchema as ut, SOURCE_DEVICE_TYPES as v, resolveBucketMs as vt, StorageMigrationJobSchema as w, scoreRuntimes as wt, ScopedTokenSchema as x, runtimeStatePolicyFor as xt, STORAGE_ACCESS_FALLBACK as y, resolveContainerPrimaryChild as yt, dataStoreProviderCapability as z, DeviceFeature as zt };
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-DkVaJ5vG.js");
3
+ const require_dist = require("./dist-C0IXtI_E.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_formatter = require("./formatter-DqAKDlvN.js");
@@ -27,7 +27,7 @@ require("./builtins/system-config/index.js");
27
27
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
28
28
  const require_file_data_plane = require("./file-data-plane-DO8KbxCe.js");
29
29
  const require_tls$1 = require("./tls-BxQlomxd.js");
30
- const require_manifest_system_deps = require("./manifest-system-deps-BbB94ozU.js");
30
+ const require_manifest_system_deps = require("./manifest-system-deps-D6ncx0jA.js");
31
31
  const require_resource_monitor = require("./resource-monitor-CdnzxBLP.js");
32
32
  const require_custom_action_registry = require("./custom-action-registry-jY0NOZK8.js");
33
33
  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 { $ as isArrayOutputSchema, D as addonSettingsCapability, Ft as DATAPLANE_SECRET_HEADER$1, Gt as asNumber, Ht as ReadinessTimeoutError, It as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Jt as emitDownForOwnedCaps, Kt as asString$1, Lt as DEVICE_STATUS_METHOD, Nt as errMsg$1, St as scopesAllowDeviceCap, Vt as ReadinessRegistry, Wt as asJsonObject$1, X as extractNestedAddonId, Xt as expandCapMethods, at as kebabToCamel, en as parseJsonObject, et as isCollectionArrayMethod, g as RUNTIME_DEFAULTS, gt as procedureAuthKey, in as scopeKey, it as isVoidInput, lt as logLevelAtMost, m as METHOD_ACCESS_MAP, nn as readinessKey, on as EventCategory$1, ot as lifecycleJobSchema, p as LOG_LEVEL_RANK, pt as objectInputDeclaresAddonId, qt as createEvent, rn as resolveCapMount, t as ALL_CAPABILITY_DEFINITIONS, tn as parseJsonUnknown, tt as isObjectInput, ut as looseSchema, xt as scopesAllowAddon, yt as resolveMethodAuth } from "./dist-C-8k9Z9W.mjs";
2
+ import { $ as isArrayOutputSchema, Ct as scopesAllowDeviceCap, D as addonSettingsCapability, Gt as asJsonObject$1, Ht as ReadinessRegistry, It as DATAPLANE_SECRET_HEADER$1, Jt as createEvent, Kt as asNumber, Lt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Pt as errMsg$1, Rt as DEVICE_STATUS_METHOD, St as scopesAllowAddon, Ut as ReadinessTimeoutError, X as extractNestedAddonId, Yt as emitDownForOwnedCaps, Zt as expandCapMethods, an as scopeKey, at as kebabToCamel, bt as resolveMethodAuth, et as isCollectionArrayMethod, g as RUNTIME_DEFAULTS, gt as procedureAuthKey, in as resolveCapMount, it as isVoidInput, lt as logLevelAtMost, m as METHOD_ACCESS_MAP, nn as parseJsonUnknown, ot as lifecycleJobSchema, p as LOG_LEVEL_RANK, pt as objectInputDeclaresAddonId, qt as asString$1, rn as readinessKey, sn as EventCategory$1, t as ALL_CAPABILITY_DEFINITIONS, tn as parseJsonObject, tt as isObjectInput, ut as looseSchema } from "./dist-DMJ-DM7n.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { t as formatLogLine } from "./formatter-B7qW8bPJ.mjs";
@@ -26,7 +26,7 @@ import "./builtins/system-config/index.mjs";
26
26
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
27
27
  import { a as parseTokenizedUrl, c as collectModelFiles, d as downloadModel, f as ensureModel, h as isModelDownloaded, i as parseRangeHeader, l as deleteModelFromDisk, m as getModelFilePath, n as contentTypeFor, o as resolveFilePath, p as fetchJson, r as createAuthenticatedFileServer, s as ModelDownloadService, t as createFileDataPlaneHandler, u as downloadFile } from "./file-data-plane-BhKdxJgf.mjs";
28
28
  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-DOTmtLCW.mjs";
29
- import { $ as buildUdsNativeCapProxy, $t as formatHeapSpaces, A as createUdsLoggerWithControl, At as HUB_MAIN_RSS_BUDGET_MB, B as readMoleculerFanoutMode, Bt as createV8Reclaimer, C as ipcParentLink, Ct as createAddonDataPlaneFacility, D as createUdsEventBus, Dt as HEAP_WATCH_INTERVAL_MS, E as createUdsEventBridge, Et as HEAP_RECLAIM_TRIGGER_MB, F as AGENT_CAP_FWD_SERVICE, Ft as RUNNER_RSS_BUDGET_ENV, G as createLocalTransport, Gt as reclaimIntervalMs, H as PARENT_ROUTED_PROVIDER_ADDON_ID, Ht as hubMainRssBudget, I as CapRouteResolver, It as ZERO_LOOP_DELAY, J as SocketChannel, Jt as startRunnerHeapWatch, K as UdsLocalTransportClient, Kt as shouldReclaim, L as CapRouteError, Lt as buildHeapSample, M as LocalChildRegistry, Mt as RSS_BUDGET_REANNOUNCE_MIN_MS, N as UDS_NO_ROUTE_PREFIX, Nt as RSS_BUDGET_RELEASE_RATIO, O as udsChildLogToWorkerEntry, Ot as HEAP_WATCH_WARN_RATIO, P as AGENT_CAP_FWD_ACTION, Pt as RUNNER_HEAP_WATCH_INTERVAL_MS, Q as buildNativeCapProxy, Qt as emitHeapDiagnosticReport, R as classifyCapRoute, Rt as createDeferredHeapWatchSink, S as buildLinkChain, St as runNpm, T as createParentUnownedCallHandler, Tt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, U as __resetCapUsageRegistryForTests, Ut as nextRssBudgetState, V as CapUsageRegistry, Vt as describeRss, W as getCapUsageRegistry, Wt as parseRssBudgetMb, X as FrameDecoder, Xt as DECISIVE_HEAP_SPACES, Y as localEndpointPath, Yt as strandedMb, Z as encodeFrame, Zt as HEAP_SPACE_REPORT_MIN_MB, _ as AddonDepsManager, _n as createEventPlaneReader, _t as CapabilityUnavailableError, a as createUdsAddonContext, an as createSocketPlaneMeter, at as createAddonService, b as brokerCallForCap, bt as resolveAddonClass, c as getOrInitReadinessRegistryForClient, cn as formatSocketPlane, ct as capActionName, d as clusterEventTopic, dn as recordSocketFrame, dt as capServiceName, en as heapSpaceField, et as createBrokerDeviceManagerApi, f as getBrokerEventBus, fn as sampleSocketDirection, ft as parseCapAction, g as subscribePassthrough, gn as createEventPlaneMeter, gt as CapabilityHandle, h as setNodeEventInterest, hn as EVENT_PLANE_TOP_N, ht as DeviceRegistry, i as createAddonContext, in as SOCKET_PLANE_TOP_N, j as LocalChildClient, jt as HUB_RSS_BUDGET_ENV, k as createUdsLogger, kt as HUB_MAIN_HEAP_WATCH_LABEL, l as setHubConnected, ln as EMPTY_SOCKET_DIRECTION, lt as capActionSuffix, m as registerEventBusService, mn as socketDirectionMessages, mt as serializeTypedArrays, n as installManifestPythonDeps, nn as selectReportedSpaces, o as getWorkerDeviceRegistry, on as createSocketPlaneReader, ot as validateProviderRegistrations, p as getMoleculerEventStats, pn as socketDirectionBytes, pt as deserializeTypedArrays, q as UdsLocalTransportServer, qt as startHeapWatch, r as adaptBrokerToCluster, rn as EMPTY_SOCKET_PLANE_BASELINE, rt as mountNativeCapService, s as getOrInitReadinessRegistry, sn as diffSocketPlane, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestSystemDeps, tn as readHeapSpaces, u as EVENT_TOPIC_PREFIX, un as createSocketDirectionCounters, ut as capBareAction, v as createKernelHwAccel, vn as diffEventPlane, vt as copyBundledNativeModules, w as localProviderLink, wt as HEAP_RECLAIM_MIN_INTERVAL_MS, x as brokerTransportLink, xt as resolveNpmInvocation, y as resolveHwAccel, yn as formatEventPlane, yt as installManifestNativeDeps, z as callWithServiceDiscovery, zt as createLoopDelayMeter } from "./manifest-system-deps-4NeY_8iQ.mjs";
29
+ import { $ as buildUdsNativeCapProxy, $t as formatHeapSpaces, A as createUdsLoggerWithControl, At as HUB_MAIN_RSS_BUDGET_MB, B as readMoleculerFanoutMode, Bt as createV8Reclaimer, C as ipcParentLink, Ct as createAddonDataPlaneFacility, D as createUdsEventBus, Dt as HEAP_WATCH_INTERVAL_MS, E as createUdsEventBridge, Et as HEAP_RECLAIM_TRIGGER_MB, F as AGENT_CAP_FWD_SERVICE, Ft as RUNNER_RSS_BUDGET_ENV, G as createLocalTransport, Gt as reclaimIntervalMs, H as PARENT_ROUTED_PROVIDER_ADDON_ID, Ht as hubMainRssBudget, I as CapRouteResolver, It as ZERO_LOOP_DELAY, J as SocketChannel, Jt as startRunnerHeapWatch, K as UdsLocalTransportClient, Kt as shouldReclaim, L as CapRouteError, Lt as buildHeapSample, M as LocalChildRegistry, Mt as RSS_BUDGET_REANNOUNCE_MIN_MS, N as UDS_NO_ROUTE_PREFIX, Nt as RSS_BUDGET_RELEASE_RATIO, O as udsChildLogToWorkerEntry, Ot as HEAP_WATCH_WARN_RATIO, P as AGENT_CAP_FWD_ACTION, Pt as RUNNER_HEAP_WATCH_INTERVAL_MS, Q as buildNativeCapProxy, Qt as emitHeapDiagnosticReport, R as classifyCapRoute, Rt as createDeferredHeapWatchSink, S as buildLinkChain, St as runNpm, T as createParentUnownedCallHandler, Tt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, U as __resetCapUsageRegistryForTests, Ut as nextRssBudgetState, V as CapUsageRegistry, Vt as describeRss, W as getCapUsageRegistry, Wt as parseRssBudgetMb, X as FrameDecoder, Xt as DECISIVE_HEAP_SPACES, Y as localEndpointPath, Yt as strandedMb, Z as encodeFrame, Zt as HEAP_SPACE_REPORT_MIN_MB, _ as AddonDepsManager, _n as createEventPlaneReader, _t as CapabilityUnavailableError, a as createUdsAddonContext, an as createSocketPlaneMeter, at as createAddonService, b as brokerCallForCap, bt as resolveAddonClass, c as getOrInitReadinessRegistryForClient, cn as formatSocketPlane, ct as capActionName, d as clusterEventTopic, dn as recordSocketFrame, dt as capServiceName, en as heapSpaceField, et as createBrokerDeviceManagerApi, f as getBrokerEventBus, fn as sampleSocketDirection, ft as parseCapAction, g as subscribePassthrough, gn as createEventPlaneMeter, gt as CapabilityHandle, h as setNodeEventInterest, hn as EVENT_PLANE_TOP_N, ht as DeviceRegistry, i as createAddonContext, in as SOCKET_PLANE_TOP_N, j as LocalChildClient, jt as HUB_RSS_BUDGET_ENV, k as createUdsLogger, kt as HUB_MAIN_HEAP_WATCH_LABEL, l as setHubConnected, ln as EMPTY_SOCKET_DIRECTION, lt as capActionSuffix, m as registerEventBusService, mn as socketDirectionMessages, mt as serializeTypedArrays, n as installManifestPythonDeps, nn as selectReportedSpaces, o as getWorkerDeviceRegistry, on as createSocketPlaneReader, ot as validateProviderRegistrations, p as getMoleculerEventStats, pn as socketDirectionBytes, pt as deserializeTypedArrays, q as UdsLocalTransportServer, qt as startHeapWatch, r as adaptBrokerToCluster, rn as EMPTY_SOCKET_PLANE_BASELINE, rt as mountNativeCapService, s as getOrInitReadinessRegistry, sn as diffSocketPlane, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestSystemDeps, tn as readHeapSpaces, u as EVENT_TOPIC_PREFIX, un as createSocketDirectionCounters, ut as capBareAction, v as createKernelHwAccel, vn as diffEventPlane, vt as copyBundledNativeModules, w as localProviderLink, wt as HEAP_RECLAIM_MIN_INTERVAL_MS, x as brokerTransportLink, xt as resolveNpmInvocation, y as resolveHwAccel, yn as formatEventPlane, yt as installManifestNativeDeps, z as callWithServiceDiscovery, zt as createLoopDelayMeter } from "./manifest-system-deps-BMD6YE4f.mjs";
30
30
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-BWmQ5i-o.mjs";
31
31
  import { t as CustomActionRegistry } from "./custom-action-registry-F__gp_VX.mjs";
32
32
  import { z } from "zod";
@@ -1,4 +1,4 @@
1
- import "./dist-C-8k9Z9W.mjs";
1
+ import "./dist-DMJ-DM7n.mjs";
2
2
  import "./hub-cap-forward-BdT320dq.mjs";
3
3
  import * as crypto$1 from "node:crypto";
4
4
  import { randomBytes, randomUUID } from "node:crypto";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- require("./dist-DkVaJ5vG.js");
2
+ require("./dist-C0IXtI_E.js");
3
3
  require("./hub-cap-forward-DmHNjbB0.js");
4
4
  let node_crypto = require("node:crypto");
5
5
  node_crypto = require_chunk.__toESM(node_crypto);
@@ -1,4 +1,4 @@
1
- import { Wt as asJsonObject } from "./dist-C-8k9Z9W.mjs";
1
+ import { Gt as asJsonObject } from "./dist-DMJ-DM7n.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-DkVaJ5vG.js");
1
+ const require_dist = require("./dist-C0IXtI_E.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.177",
3
+ "version": "1.2.178",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",