@camstack/system 1.2.310 → 1.2.312

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 (68) hide show
  1. package/dist/addon-runner.js +6 -8
  2. package/dist/addon-runner.mjs +6 -8
  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 +1 -1
  16. package/dist/builtins/composer/composer.addon.mjs +1 -1
  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 +1 -1
  20. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  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/doorbell/virtual-doorbell.addon.js +1 -1
  24. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  25. package/dist/builtins/hub-forwarder/index.js +1 -1
  26. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  27. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  28. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  29. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  30. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  31. package/dist/builtins/local-network/local-network.addon.js +1 -1
  32. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  33. package/dist/builtins/loki-logging/index.js +1 -1
  34. package/dist/builtins/loki-logging/index.mjs +1 -1
  35. package/dist/builtins/native-metrics/native-metrics.addon.js +10 -102
  36. package/dist/builtins/native-metrics/native-metrics.addon.mjs +4 -92
  37. package/dist/builtins/platform-probe/index.js +1 -1
  38. package/dist/builtins/platform-probe/index.mjs +1 -1
  39. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  40. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  41. package/dist/builtins/snapshot/index.js +1 -1
  42. package/dist/builtins/snapshot/index.mjs +1 -1
  43. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  44. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  45. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  46. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  47. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  48. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  49. package/dist/builtins/system-config/system-config.addon.js +1 -1
  50. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  51. package/dist/builtins/winston-logging/index.js +1 -1
  52. package/dist/builtins/winston-logging/index.mjs +1 -1
  53. package/dist/{child-cap-dispatch-BCJjUtXV.mjs → child-cap-dispatch-CHTiHbsv.mjs} +294 -10
  54. package/dist/{child-cap-dispatch-Be8e2cBP.js → child-cap-dispatch-Dyn_7ezH.js} +347 -9
  55. package/dist/{dist-B78pkrps.mjs → dist-Cj7pJmXq.mjs} +35 -4
  56. package/dist/{dist-Cy6DFFjs.js → dist-CkRwnhbo.js} +35 -4
  57. package/dist/index.js +88 -18
  58. package/dist/index.mjs +89 -20
  59. package/dist/kernel/index.d.ts +1 -0
  60. package/dist/kernel/moleculer/process-service.d.ts +9 -0
  61. package/dist/kernel/moleculer/runner-process-group.d.ts +92 -0
  62. package/dist/proc-stat-CbC55Kqi.mjs +92 -0
  63. package/dist/proc-stat-DL-WUOhl.js +127 -0
  64. package/dist/{resource-monitor-Vp0bPV3U.mjs → resource-monitor-B1v6E07R.mjs} +1 -1
  65. package/dist/{resource-monitor-LVE1BoLs.js → resource-monitor-DzNn_IZK.js} +5 -5
  66. package/dist/{retired-settings-keys-B4_hiWsm.mjs → retired-settings-keys-C1duPikd.mjs} +1 -1
  67. package/dist/{retired-settings-keys-D9sgD6Yg.js → retired-settings-keys-CGSuXhP8.js} +1 -1
  68. 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-Be8e2cBP.js");
2
+ const require_child_cap_dispatch = require("./child-cap-dispatch-Dyn_7ezH.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);
@@ -346,6 +346,10 @@ for (const sig of [
346
346
  ]) process.on(sig, () => {
347
347
  console.error(`[addon-runner SIGNAL] received ${sig} nodeId=${process.env["CAMSTACK_RUNNER_ID"] ?? "?"}`);
348
348
  });
349
+ require_child_cap_dispatch.startRunnerParentDeathWatchdog(() => {
350
+ console.error(`[addon-runner] "${process.env["CAMSTACK_RUNNER_ID"] ?? "?"}" parent died — killing its process group`);
351
+ if (!require_child_cap_dispatch.killOwnRunnerGroupAfterParentLoss()) process.exit(0);
352
+ });
349
353
  function isRecord(value) {
350
354
  return typeof value === "object" && value !== null && !Array.isArray(value);
351
355
  }
@@ -679,6 +683,7 @@ async function main() {
679
683
  });
680
684
  });
681
685
  const shutdown = async () => {
686
+ if (shuttingDown) return;
682
687
  shuttingDown = true;
683
688
  stopHeapWatch?.();
684
689
  require_child_cap_dispatch.setWorkerNativeCapsChangeListener(null);
@@ -705,13 +710,6 @@ async function main() {
705
710
  process.on("SIGINT", () => {
706
711
  shutdown();
707
712
  });
708
- const initialPpid = process.ppid;
709
- setInterval(() => {
710
- if (process.ppid === 1 && initialPpid !== 1) {
711
- console.error(`[addon-runner] "${nodeId}" parent died (reparented to init) — exiting`);
712
- shutdown();
713
- }
714
- }, 5e3);
715
713
  }
716
714
  main().catch((err) => {
717
715
  console.error(`[addon-runner] Fatal error: ${(0, _camstack_types_addon.errMsg)(err)}`);
@@ -1,4 +1,4 @@
1
- import { B as LocalChildClient, Ct as installManifestNativeDeps, Ht as RUNNER_RSS_BUDGET_ENV, N as createUdsLoggerWithControl, at as getWorkerNativeCapProvider, ct as setWorkerNativeCapsChangeListener, i as installManifestPythonDeps, n as createChildCapDispatch, ot as getWorkerNativeCapSnapshot, pn as emitHeapDiagnosticReport, r as installManifestSystemDeps, s as createUdsAddonContext, tn as startRunnerHeapWatch, ut as validateProviderRegistrations, wt as resolveAddonClass } from "./child-cap-dispatch-BCJjUtXV.mjs";
1
+ import { H as createUdsLoggerWithControl, Mt as installManifestNativeDeps, Nt as resolveAddonClass, Sn as emitHeapDiagnosticReport, Y as LocalChildClient, Zt as RUNNER_RSS_BUDGET_ENV, _t as setWorkerNativeCapsChangeListener, f as installManifestSystemDeps, g as createUdsAddonContext, ht as getWorkerNativeCapSnapshot, i as killOwnRunnerGroupAfterParentLoss, mt as getWorkerNativeCapProvider, n as createChildCapDispatch, p as installManifestPythonDeps, u as startRunnerParentDeathWatchdog, un as startRunnerHeapWatch, yt as validateProviderRegistrations } from "./child-cap-dispatch-CHTiHbsv.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";
@@ -343,6 +343,10 @@ for (const sig of [
343
343
  ]) process.on(sig, () => {
344
344
  console.error(`[addon-runner SIGNAL] received ${sig} nodeId=${process.env["CAMSTACK_RUNNER_ID"] ?? "?"}`);
345
345
  });
346
+ startRunnerParentDeathWatchdog(() => {
347
+ console.error(`[addon-runner] "${process.env["CAMSTACK_RUNNER_ID"] ?? "?"}" parent died — killing its process group`);
348
+ if (!killOwnRunnerGroupAfterParentLoss()) process.exit(0);
349
+ });
346
350
  function isRecord(value) {
347
351
  return typeof value === "object" && value !== null && !Array.isArray(value);
348
352
  }
@@ -676,6 +680,7 @@ async function main() {
676
680
  });
677
681
  });
678
682
  const shutdown = async () => {
683
+ if (shuttingDown) return;
679
684
  shuttingDown = true;
680
685
  stopHeapWatch?.();
681
686
  setWorkerNativeCapsChangeListener(null);
@@ -702,13 +707,6 @@ async function main() {
702
707
  process.on("SIGINT", () => {
703
708
  shutdown();
704
709
  });
705
- const initialPpid = process.ppid;
706
- setInterval(() => {
707
- if (process.ppid === 1 && initialPpid !== 1) {
708
- console.error(`[addon-runner] "${nodeId}" parent died (reparented to init) — exiting`);
709
- shutdown();
710
- }
711
- }, 5e3);
712
710
  }
713
711
  main().catch((err) => {
714
712
  console.error(`[addon-runner] Fatal error: ${errMsg(err)}`);
@@ -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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { R as addonPagesCapability, ir as EventCategory, jn as BaseAddon, kn as errMsg } from "../../dist-B78pkrps.mjs";
1
+ import { R as addonPagesCapability, ir as EventCategory, jn as BaseAddon, kn as errMsg } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { B as addonWidgetsCapability, ir as EventCategory, jn as BaseAddon, kn as errMsg } from "../../dist-B78pkrps.mjs";
1
+ import { B as addonWidgetsCapability, ir as EventCategory, jn as BaseAddon, kn as errMsg } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { V as alertsCapability, Wn as createEvent, ir as EventCategory, jn as BaseAddon, kn as errMsg, n as AlertSchema } from "../../dist-B78pkrps.mjs";
1
+ import { V as alertsCapability, Wn as createEvent, ir as EventCategory, jn as BaseAddon, kn as errMsg, n as AlertSchema } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { W as bareAddonId, Xn as isEvent, in as ptzAutotrackCapability, ir as EventCategory, jn as BaseAddon, kn as errMsg, v as FIRST_LEVEL_MACRO_CLASSES } from "../../dist-B78pkrps.mjs";
1
+ import { W as bareAddonId, Xn as isEvent, in as ptzAutotrackCapability, ir as EventCategory, jn as BaseAddon, kn as errMsg, v as FIRST_LEVEL_MACRO_CLASSES } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { U as backupCapability, ir as EventCategory, jn as BaseAddon, qt as mayWriteToLocation, vn as storageOccupancyCapability } from "../../dist-B78pkrps.mjs";
1
+ import { U as backupCapability, ir as EventCategory, jn as BaseAddon, qt as mayWriteToLocation, vn as storageOccupancyCapability } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.js");
7
7
  let zod = require("zod");
8
8
  let _camstack_types_node = require("@camstack/types/node");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { An as buildFfmpegArgs, Fn as DeviceFeature, J as cameraGridLayoutCapability, Jn as hydrateSchema, Ln as DeviceType, Wn as createEvent, Xt as motionCapability, bn as streamCatalogCapability, g as DeclaredDevices, h as DERIVED_CAMERA_SILENCED_CAP_NAMES, hn as snapshotCapability, i as BaseDevice, ir as EventCategory, jn as BaseAddon, kn as errMsg, lt as declarationOwnerNodeId, w as MOTION_CLOSE_AFTER_MS } from "../../dist-B78pkrps.mjs";
1
+ import { An as buildFfmpegArgs, Fn as DeviceFeature, J as cameraGridLayoutCapability, Jn as hydrateSchema, Ln as DeviceType, Wn as createEvent, Xt as motionCapability, bn as streamCatalogCapability, g as DeclaredDevices, h as DERIVED_CAMERA_SILENCED_CAP_NAMES, hn as snapshotCapability, i as BaseDevice, ir as EventCategory, jn as BaseAddon, kn as errMsg, lt as declarationOwnerNodeId, w as MOTION_CLOSE_AFTER_MS } from "../../dist-Cj7pJmXq.mjs";
2
2
  import { z } from "zod";
3
3
  import { FfmpegProcess } from "@camstack/types/node";
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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.js");
7
7
  const require_device_state_changed = require("../../device-state-changed-Bk7cvTnz.js");
8
8
  //#region src/builtins/composer/composed-device.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { $ as compositionSliceKey, K as buildCapabilityLookup, Ln as DeviceType, Q as composerCapability, Sn as toExpressionValue, Z as composedDeviceStableId, c as COMPOSER_ADDON_ID, et as compositionSourceKey, g as DeclaredDevices, i as BaseDevice, ir as EventCategory, jn as BaseAddon, kn as errMsg, t as ALL_CAPABILITY_DEFINITIONS, tn as planComposition, xt as evaluateCompositionField } from "../../dist-B78pkrps.mjs";
1
+ import { $ as compositionSliceKey, K as buildCapabilityLookup, Ln as DeviceType, Q as composerCapability, Sn as toExpressionValue, Z as composedDeviceStableId, c as COMPOSER_ADDON_ID, et as compositionSourceKey, g as DeclaredDevices, i as BaseDevice, ir as EventCategory, jn as BaseAddon, kn as errMsg, t as ALL_CAPABILITY_DEFINITIONS, tn as planComposition, xt as evaluateCompositionField } from "../../dist-Cj7pJmXq.mjs";
2
2
  import { n as parseDeviceStateChanged, t as isRecord } from "../../device-state-changed-DoBbkyEI.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/composer/composed-device.ts
@@ -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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { Ut as logDestinationCapability, jn as BaseAddon } from "../../dist-B78pkrps.mjs";
1
+ import { Ut as logDestinationCapability, jn as BaseAddon } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
3
+ const require_dist = require("../../dist-CkRwnhbo.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 { K as buildCapabilityLookup, X as composedDeviceRef, at as coreBlockSourceKind, d as CORE_BLOCK_ADDON_PREFIX, et as compositionSourceKey, f as CoreBlockSchema, g as DeclaredDevices, it as coreBlockIdFromAddonId, jn as BaseAddon, kn as errMsg, nt as coreBlockAddonId, ot as coreBlocksCapability, rt as coreBlockComposition, t as ALL_CAPABILITY_DEFINITIONS, tt as compositionSourceRefs, u as CORE_BLOCKS_ADDON_ID, wn as validateComposition } from "../../dist-B78pkrps.mjs";
1
+ import { K as buildCapabilityLookup, X as composedDeviceRef, at as coreBlockSourceKind, d as CORE_BLOCK_ADDON_PREFIX, et as compositionSourceKey, f as CoreBlockSchema, g as DeclaredDevices, it as coreBlockIdFromAddonId, jn as BaseAddon, kn as errMsg, nt as coreBlockAddonId, ot as coreBlocksCapability, rt as coreBlockComposition, t as ALL_CAPABILITY_DEFINITIONS, tt as compositionSourceRefs, u as CORE_BLOCKS_ADDON_ID, wn as validateComposition } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-D9sgD6Yg.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-CGSuXhP8.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
@@ -1,5 +1,5 @@
1
- import { Bn as WELL_KNOWN_TAB_MAP, C as MINUTES_PER_DAY, Fn as DeviceFeature, Ht as locationIconKey, In as DeviceRole, Ln as DeviceType, Ot as formatMinutes, Rt as legacyAutoLinkIds, Yn as isDeviceConfigCap, Zt as normalizeUnit, _ as DeviceStatusSchema, bt as enumerateSchemaFields, dt as defineExtensionSlotProvider, en as parseStreamParamsFormPatch, gt as deviceStatusCapability, ht as deviceStateCapability, ir as EventCategory, j as STREAM_PROFILE_META, jn as BaseAddon, kn as errMsg, ln as runtimeStatePolicyFor, mn as siteZoneKey, mt as deviceManagerCapability, o as CAMERA_SWITCH_ORDER, p as DAY_NAMES, pt as deviceExtensionCapability, q as buildStreamParamsConfigSchema, rr as sleep$1, s as CAP_NAMES_WITH_STATUS, st as createDeviceExtensionProvider, t as ALL_CAPABILITY_DEFINITIONS, wt as expandContainer, x as LocationIconIdSchema, yt as enumerateItemArrayFields } from "../../dist-B78pkrps.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-B4_hiWsm.mjs";
1
+ import { Bn as WELL_KNOWN_TAB_MAP, C as MINUTES_PER_DAY, Fn as DeviceFeature, Ht as locationIconKey, In as DeviceRole, Ln as DeviceType, Ot as formatMinutes, Rt as legacyAutoLinkIds, Yn as isDeviceConfigCap, Zt as normalizeUnit, _ as DeviceStatusSchema, bt as enumerateSchemaFields, dt as defineExtensionSlotProvider, en as parseStreamParamsFormPatch, gt as deviceStatusCapability, ht as deviceStateCapability, ir as EventCategory, j as STREAM_PROFILE_META, jn as BaseAddon, kn as errMsg, ln as runtimeStatePolicyFor, mn as siteZoneKey, mt as deviceManagerCapability, o as CAMERA_SWITCH_ORDER, p as DAY_NAMES, pt as deviceExtensionCapability, q as buildStreamParamsConfigSchema, rr as sleep$1, s as CAP_NAMES_WITH_STATUS, st as createDeviceExtensionProvider, t as ALL_CAPABILITY_DEFINITIONS, wt as expandContainer, x as LocationIconIdSchema, yt as enumerateItemArrayFields } from "../../dist-Cj7pJmXq.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-C1duPikd.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
@@ -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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.js");
7
7
  const require_device_state_changed = require("../../device-state-changed-Bk7cvTnz.js");
8
8
  //#region src/builtins/doorbell/trigger-engine.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { Ft as isSourceCap, Ln as DeviceType, Pt as isSameAddonId, St as evaluateSensorEdge, W as bareAddonId, Wn as createEvent, _t as doorbellCapability, dt as defineExtensionSlotProvider, ir as EventCategory, jn as BaseAddon, k as SOURCE_CAPS, kn as errMsg, pt as deviceExtensionCapability, st as createDeviceExtensionProvider } from "../../dist-B78pkrps.mjs";
1
+ import { Ft as isSourceCap, Ln as DeviceType, Pt as isSameAddonId, St as evaluateSensorEdge, W as bareAddonId, Wn as createEvent, _t as doorbellCapability, dt as defineExtensionSlotProvider, ir as EventCategory, jn as BaseAddon, k as SOURCE_CAPS, kn as errMsg, pt as deviceExtensionCapability, st as createDeviceExtensionProvider } from "../../dist-Cj7pJmXq.mjs";
2
2
  import { n as parseDeviceStateChanged } from "../../device-state-changed-DoBbkyEI.mjs";
3
3
  //#region src/builtins/doorbell/trigger-engine.ts
4
4
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { Ut as logDestinationCapability, jn as BaseAddon } from "../../dist-B78pkrps.mjs";
1
+ import { Ut as logDestinationCapability, jn as BaseAddon } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
3
+ const require_dist = require("../../dist-CkRwnhbo.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 { O as RecordingStatusSchema, T as RECORDING_SOURCE_CAMSTACK_ADDON, Wn as createEvent, ir as EventCategory, jn as BaseAddon, kn as errMsg } from "../../dist-B78pkrps.mjs";
1
+ import { O as RecordingStatusSchema, T as RECORDING_SOURCE_CAMSTACK_ADDON, Wn as createEvent, ir as EventCategory, jn as BaseAddon, kn as errMsg } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { Cn as userManagementCapability, H as authProviderCapability, L as UserRecordSchema, M as ScopedTokenSchema, jn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-B78pkrps.mjs";
2
+ import { Cn as userManagementCapability, H as authProviderCapability, L as UserRecordSchema, M as ScopedTokenSchema, jn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
3
+ const require_dist = require("../../dist-CkRwnhbo.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 { Vt as localNetworkCapability, ir as EventCategory, jn as BaseAddon } from "../../dist-B78pkrps.mjs";
1
+ import { Vt as localNetworkCapability, ir as EventCategory, jn as BaseAddon } from "../../dist-Cj7pJmXq.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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.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 { Ut as logDestinationCapability, jn as BaseAddon } from "../../dist-B78pkrps.mjs";
1
+ import { Ut as logDestinationCapability, jn as BaseAddon } from "../../dist-Cj7pJmXq.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,8 @@ 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-Cy6DFFjs.js");
6
+ const require_dist = require("../../dist-CkRwnhbo.js");
7
+ const require_proc_stat = require("../../proc-stat-DL-WUOhl.js");
7
8
  let node_fs_promises = require("node:fs/promises");
8
9
  let node_fs = require("node:fs");
9
10
  node_fs = require_chunk.__toESM(node_fs);
@@ -2125,7 +2126,7 @@ var NativeMetricsProvider = class {
2125
2126
  return getCpuTemperatureInternal();
2126
2127
  }
2127
2128
  async getProcessStats(input) {
2128
- const { getPidStats } = await Promise.resolve().then(() => require("../../resource-monitor-LVE1BoLs.js")).then((n) => n.resource_monitor_exports);
2129
+ const { getPidStats } = await Promise.resolve().then(() => require("../../resource-monitor-DzNn_IZK.js")).then((n) => n.resource_monitor_exports);
2129
2130
  const raw = await getPidStats(input.pids);
2130
2131
  const result = [];
2131
2132
  for (const [pid, s] of raw) result.push({
@@ -2461,95 +2462,6 @@ function execAsync(cmd, args, timeoutMs = 5e3) {
2461
2462
  });
2462
2463
  });
2463
2464
  }
2464
- /**
2465
- * Parse one `/proc/<pid>/stat` line. `null` for a line that does not parse —
2466
- * a process that exited between the readdir and the read leaves a truncated
2467
- * or empty file, and that is normal, not an error.
2468
- */
2469
- function parseProcStat(line) {
2470
- const close = line.lastIndexOf(")");
2471
- const open = line.indexOf("(");
2472
- if (close < 0 || open < 0 || close < open) return null;
2473
- const pid = Number(line.slice(0, open).trim());
2474
- const comm = line.slice(open + 1, close);
2475
- const rest = line.slice(close + 1).trim().split(/\s+/);
2476
- const state = rest[0];
2477
- const ppid = Number(rest[1]);
2478
- const pgid = Number(rest[2]);
2479
- const utime = Number(rest[11]);
2480
- const stime = Number(rest[12]);
2481
- const startTicks = Number(rest[19]);
2482
- const rssPages = Number(rest[21]);
2483
- if (state === void 0 || state === "") return null;
2484
- if (![
2485
- pid,
2486
- ppid,
2487
- pgid,
2488
- utime,
2489
- stime,
2490
- startTicks,
2491
- rssPages
2492
- ].every(Number.isFinite)) return null;
2493
- return {
2494
- pid,
2495
- comm,
2496
- state,
2497
- ppid,
2498
- pgid,
2499
- ticks: utime + stime,
2500
- startTicks,
2501
- rssPages
2502
- };
2503
- }
2504
- function statusKb(status, key) {
2505
- const match = status.match(new RegExp(`^${key}:\\s+(\\d+)`, "m"));
2506
- return match ? parseInt(match[1], 10) * 1024 : void 0;
2507
- }
2508
- /** Read `VmRSS` / `RssAnon` / `RssFile` (kB in the file) out of `/proc/<pid>/status`. */
2509
- function parseProcStatusRss(status) {
2510
- return {
2511
- rssBytes: statusKb(status, "VmRSS"),
2512
- privateBytes: statusKb(status, "RssAnon"),
2513
- sharedBytes: statusKb(status, "RssFile")
2514
- };
2515
- }
2516
- /** Seconds the process has been alive — `ps etime`, whole seconds. */
2517
- function elapsedSecSince(input) {
2518
- return Math.max(0, Math.floor(input.uptimeSec - input.startTicks / 100));
2519
- }
2520
- /**
2521
- * `ps pcpu`: CPU time over elapsed time, as a percentage with one decimal.
2522
- *
2523
- * This is deliberately the LIFETIME average `ps` prints, not an instantaneous
2524
- * rate: the columns fed from it have always shown that quantity, and the
2525
- * instantaneous split is a different number with a different owner
2526
- * (`cpuMainPercent` / `cpuGcPercent` from `thread-cpu-sampler.ts`). A process
2527
- * with no elapsed window yet reports 0, never a division by zero.
2528
- */
2529
- function lifetimeCpuPercent(input) {
2530
- const elapsedSec = input.uptimeSec - input.startTicks / 100;
2531
- if (!(elapsedSec > 0)) return 0;
2532
- const cpuSec = input.ticks / 100;
2533
- return Math.round(cpuSec / elapsedSec * 1e3) / 10;
2534
- }
2535
- var PID_RE = /^\d+$/;
2536
- var nodeProcReader = {
2537
- listPids: async () => (await (0, node_fs_promises.readdir)("/proc")).filter((entry) => PID_RE.test(entry)).map((entry) => Number(entry)),
2538
- readStat: (pid) => (0, node_fs_promises.readFile)(`/proc/${pid}/stat`, "latin1"),
2539
- readStatus: (pid) => (0, node_fs_promises.readFile)(`/proc/${pid}/status`, "latin1"),
2540
- readCmdline: (pid) => (0, node_fs_promises.readFile)(`/proc/${pid}/cmdline`, "latin1"),
2541
- readUptimeSec: async () => {
2542
- const [first] = (await (0, node_fs_promises.readFile)("/proc/uptime", "latin1")).trim().split(/\s+/);
2543
- const seconds = Number(first);
2544
- if (!Number.isFinite(seconds)) throw new Error(`/proc/uptime unreadable: ${String(first)}`);
2545
- return seconds;
2546
- }
2547
- };
2548
- /** `ps command=`: argv joined by spaces, or `[comm]` when there is no argv. */
2549
- function commandFromCmdline(cmdline, comm) {
2550
- const joined = cmdline.split("\0").filter((part) => part.length > 0).join(" ");
2551
- return joined.length > 0 ? joined : `[${comm}]`;
2552
- }
2553
2465
  //#endregion
2554
2466
  //#region src/builtins/native-metrics/proc-process-table.ts
2555
2467
  /**
@@ -2581,28 +2493,28 @@ async function readProcRow(pid, uptimeSec, reader) {
2581
2493
  } catch {
2582
2494
  return null;
2583
2495
  }
2584
- const parsed = parseProcStat(stat);
2496
+ const parsed = require_proc_stat.parseProcStat(stat);
2585
2497
  if (parsed === null) return null;
2586
- const rss = parseProcStatusRss(status);
2498
+ const rss = require_proc_stat.parseProcStatusRss(status);
2587
2499
  return {
2588
2500
  pid: parsed.pid,
2589
2501
  ppid: parsed.ppid,
2590
2502
  pgid: parsed.pgid,
2591
- cpuPercent: lifetimeCpuPercent({
2503
+ cpuPercent: require_proc_stat.lifetimeCpuPercent({
2592
2504
  ticks: parsed.ticks,
2593
2505
  startTicks: parsed.startTicks,
2594
2506
  uptimeSec
2595
2507
  }),
2596
2508
  memoryRssBytes: rss.rssBytes ?? 0,
2597
- uptimeSec: elapsedSecSince({
2509
+ uptimeSec: require_proc_stat.elapsedSecSince({
2598
2510
  startTicks: parsed.startTicks,
2599
2511
  uptimeSec
2600
2512
  }),
2601
- command: commandFromCmdline(cmdline, parsed.comm)
2513
+ command: require_proc_stat.commandFromCmdline(cmdline, parsed.comm)
2602
2514
  };
2603
2515
  }
2604
2516
  /** Every process in `/proc`, as the rows `ps -eo …` would have printed. */
2605
- async function readProcProcessTable(reader = nodeProcReader) {
2517
+ async function readProcProcessTable(reader = require_proc_stat.nodeProcReader) {
2606
2518
  const [pids, uptimeSec] = await Promise.all([reader.listPids(), reader.readUptimeSec()]);
2607
2519
  return (await Promise.all(pids.map((pid) => readProcRow(pid, uptimeSec, reader)))).filter((row) => row !== null);
2608
2520
  }
@@ -2657,7 +2569,7 @@ async function spawnPsTable() {
2657
2569
  }
2658
2570
  var defaultDeps = {
2659
2571
  platform: (0, node_os.platform)(),
2660
- reader: nodeProcReader,
2572
+ reader: require_proc_stat.nodeProcReader,
2661
2573
  spawnPs: spawnPsTable
2662
2574
  };
2663
2575
  /**
@@ -3531,7 +3443,3 @@ var NativeMetricsAddon = class NativeMetricsAddon extends require_dist.BaseAddon
3531
3443
  //#endregion
3532
3444
  exports.NativeMetricsProvider = NativeMetricsProvider;
3533
3445
  exports.default = NativeMetricsAddon;
3534
- exports.lifetimeCpuPercent = lifetimeCpuPercent;
3535
- exports.nodeProcReader = nodeProcReader;
3536
- exports.parseProcStat = parseProcStat;
3537
- exports.parseProcStatusRss = parseProcStatusRss;