@camstack/system 1.2.9 → 1.2.11

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 (48) hide show
  1. package/dist/addon-runner.js +2 -2
  2. package/dist/addon-runner.mjs +2 -2
  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/device-manager/device-manager.addon.js +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  15. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  17. package/dist/builtins/hub-forwarder/index.js +1 -1
  18. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  19. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  20. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  21. package/dist/builtins/local-network/local-network.addon.js +1 -1
  22. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  23. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  24. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  25. package/dist/builtins/platform-probe/index.js +1 -1
  26. package/dist/builtins/platform-probe/index.mjs +1 -1
  27. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  28. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  29. package/dist/builtins/snapshot/index.js +41 -7
  30. package/dist/builtins/snapshot/index.mjs +41 -7
  31. package/dist/builtins/snapshot/snapshot.addon.d.ts +18 -6
  32. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  33. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  34. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  35. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  36. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  37. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  38. package/dist/builtins/system-config/system-config.addon.js +1 -1
  39. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  40. package/dist/builtins/winston-logging/index.js +1 -1
  41. package/dist/builtins/winston-logging/index.mjs +1 -1
  42. package/dist/{dist-SI-yNpKE.js → dist-BQOCTD5b.js} +6 -0
  43. package/dist/{dist-CVCNYn7D.mjs → dist-DpKeSZel.mjs} +1 -1
  44. package/dist/index.js +2 -2
  45. package/dist/index.mjs +2 -2
  46. package/dist/{manifest-python-deps-CEwMAaKZ.js → manifest-python-deps-1I7WdPDD.js} +1 -1
  47. package/dist/{manifest-python-deps-DyEweBkB.mjs → manifest-python-deps-I2MGvDvo.mjs} +1 -1
  48. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-SI-yNpKE.js");
3
- const require_manifest_python_deps = require("./manifest-python-deps-CEwMAaKZ.js");
2
+ const require_dist = require("./dist-BQOCTD5b.js");
3
+ const require_manifest_python_deps = require("./manifest-python-deps-1I7WdPDD.js");
4
4
  const require_custom_action_registry = require("./custom-action-registry-jY0NOZK8.js");
5
5
  let node_fs = require("node:fs");
6
6
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,5 +1,5 @@
1
- import { M as isCollectionArrayMethod, t as ALL_CAPABILITY_DEFINITIONS } from "./dist-CVCNYn7D.mjs";
2
- import { Ct as resolveAddonClass, I as createUdsLoggerWithControl, L as LocalChildClient, at as setWorkerNativeCapsChangeListener, bt as installManifestNativeDeps, i as createUdsAddonContext, nt as getWorkerNativeCapProvider, rt as getWorkerNativeCapSnapshot, st as validateProviderRegistrations, t as installManifestPythonDeps } from "./manifest-python-deps-DyEweBkB.mjs";
1
+ import { N as isCollectionArrayMethod, t as ALL_CAPABILITY_DEFINITIONS } from "./dist-DpKeSZel.mjs";
2
+ import { Ct as resolveAddonClass, I as createUdsLoggerWithControl, L as LocalChildClient, at as setWorkerNativeCapsChangeListener, bt as installManifestNativeDeps, i as createUdsAddonContext, nt as getWorkerNativeCapProvider, rt as getWorkerNativeCapSnapshot, st as validateProviderRegistrations, t as installManifestPythonDeps } from "./manifest-python-deps-I2MGvDvo.mjs";
3
3
  import { t as CustomActionRegistry } from "./custom-action-registry-F__gp_VX.mjs";
4
4
  import { register } from "node:module";
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
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, f as addonPagesCapability, it as errMsg } from "../../dist-CVCNYn7D.mjs";
1
+ import { at as errMsg, jt as EventCategory, ot as BaseAddon, p as addonPagesCapability } from "../../dist-DpKeSZel.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import * as fs from "node:fs";
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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, it as errMsg, m as addonWidgetsCapability } from "../../dist-CVCNYn7D.mjs";
1
+ import { at as errMsg, h as addonWidgetsCapability, jt as EventCategory, ot as BaseAddon } from "../../dist-DpKeSZel.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import * as fs from "node:fs";
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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  //#region src/builtins/alerts/alerts.addon.ts
8
8
  var CATEGORY_MAPPINGS = {
9
9
  "addon.crashed": {
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, h as alertsCapability, it as errMsg, n as AlertSchema, vt as createEvent } from "../../dist-CVCNYn7D.mjs";
1
+ import { at as errMsg, g as alertsCapability, jt as EventCategory, n as AlertSchema, ot as BaseAddon, yt as createEvent } from "../../dist-DpKeSZel.mjs";
2
2
  //#region src/builtins/alerts/alerts.addon.ts
3
3
  var CATEGORY_MAPPINGS = {
4
4
  "addon.crashed": {
@@ -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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_fs$1 = require_chunk.__toESM(node_fs, 1);
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, at as BaseAddon, v as backupCapability } from "../../dist-CVCNYn7D.mjs";
1
+ import { jt as EventCategory, ot as BaseAddon, y as backupCapability } from "../../dist-DpKeSZel.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import Kt from "node:fs";
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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.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 { R as logDestinationCapability, at as BaseAddon } from "../../dist-CVCNYn7D.mjs";
1
+ import { ot as BaseAddon, z as logDestinationCapability } from "../../dist-DpKeSZel.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 = {
@@ -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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let _camstack_types_node = require("@camstack/types/node");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { A as getByPath, At as EventCategory, Ct as isDeviceConfigCap, D as evaluateLinkExpression, E as enumerateSchemaFields, H as normalizeUnit, S as deviceStatusCapability, T as enumerateItemArrayFields, W as parseStreamParamsFormPatch, Y as setByPath, a as DeviceStatusSchema, at as BaseAddon, b as deviceManagerCapability, c as STREAM_PROFILE_META, dt as DeviceType, g as applyTransform, i as CAP_NAMES_WITH_STATUS, it as errMsg, kt as sleep, lt as DeviceFeature, mt as WELL_KNOWN_TAB_MAP, rt as validateExpressionSource, t as ALL_CAPABILITY_DEFINITIONS, tt as toExpressionValue, ut as DeviceRole, x as deviceStateCapability, y as buildStreamParamsConfigSchema } from "../../dist-CVCNYn7D.mjs";
1
+ import { At as sleep, C as deviceStatusCapability, D as enumerateSchemaFields, E as enumerateItemArrayFields, G as parseStreamParamsFormPatch, O as evaluateLinkExpression, S as deviceStateCapability, U as normalizeUnit, X as setByPath, _ as applyTransform, a as CAP_NAMES_WITH_STATUS, at as errMsg, b as buildStreamParamsConfigSchema, dt as DeviceRole, ft as DeviceType, ht as WELL_KNOWN_TAB_MAP, it as validateExpressionSource, j as getByPath, jt as EventCategory, l as STREAM_PROFILE_META, nt as toExpressionValue, o as DeviceStatusSchema, ot as BaseAddon, t as ALL_CAPABILITY_DEFINITIONS, ut as DeviceFeature, wt as isDeviceConfigCap, x as deviceManagerCapability } from "../../dist-DpKeSZel.mjs";
2
2
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.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 { At as EventCategory, C as doorbellCapability, at as BaseAddon, dt as DeviceType, it as errMsg, vt as createEvent } from "../../dist-CVCNYn7D.mjs";
1
+ import { at as errMsg, ft as DeviceType, jt as EventCategory, ot as BaseAddon, w as doorbellCapability, yt as createEvent } from "../../dist-DpKeSZel.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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.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 { R as logDestinationCapability, at as BaseAddon } from "../../dist-CVCNYn7D.mjs";
1
+ import { ot as BaseAddon, z as logDestinationCapability } from "../../dist-DpKeSZel.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;
@@ -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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.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,4 +1,4 @@
1
- import { _ as authProviderCapability, at as BaseAddon, d as UserRecordSchema, l as ScopedTokenSchema, nt as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-CVCNYn7D.mjs";
1
+ import { f as UserRecordSchema, ot as BaseAddon, r as ApiKeyRecordSchema, rt as userManagementCapability, u as ScopedTokenSchema, v as authProviderCapability } from "../../dist-DpKeSZel.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as crypto$1 from "node:crypto";
4
4
  import { randomUUID } from "node: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-SI-yNpKE.js");
3
+ const require_dist = require("../../dist-BQOCTD5b.js");
4
4
  let node_os = require("node:os");
5
5
  node_os = require_chunk.__toESM(node_os);
6
6
  //#region src/builtins/local-network/local-network.addon.ts
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, L as localNetworkCapability, at as BaseAddon } from "../../dist-CVCNYn7D.mjs";
1
+ import { R as localNetworkCapability, jt as EventCategory, ot as BaseAddon } from "../../dist-DpKeSZel.mjs";
2
2
  import * as os from "node:os";
3
3
  //#region src/builtins/local-network/local-network.addon.ts
4
4
  /**
@@ -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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, B as metricsProviderCapability, at as BaseAddon, vt as createEvent } from "../../dist-CVCNYn7D.mjs";
1
+ import { V as metricsProviderCapability, jt as EventCategory, ot as BaseAddon, yt as createEvent } from "../../dist-DpKeSZel.mjs";
2
2
  import * as fs from "node:fs";
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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { At as EventCategory, G as platformProbeCapability, J as scoreRuntimes, at as BaseAddon, bt as emitReadiness, it as errMsg, w as enumerateInferenceDevices } from "../../dist-CVCNYn7D.mjs";
1
+ import { K as platformProbeCapability, T as enumerateInferenceDevices, Y as scoreRuntimes, at as errMsg, jt as EventCategory, ot as BaseAddon, xt as emitReadiness } from "../../dist-DpKeSZel.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile } 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
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.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 { At as EventCategory, at as BaseAddon } from "../../dist-CVCNYn7D.mjs";
1
+ import { jt as EventCategory, ot as BaseAddon } from "../../dist-DpKeSZel.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
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  //#region src/builtins/snapshot/snapshot-coalescing.ts
9
9
  /**
@@ -485,6 +485,16 @@ var SnapshotAddon = class SnapshotAddon extends require_dist.BaseAddon {
485
485
  });
486
486
  return hit ? hit.data : null;
487
487
  }
488
+ if (!force && isBatteryDevice && await this.isDeviceSleeping(deviceId)) {
489
+ log.debug("snapshot: sleeping battery cam and no force — serving cache, not capturing", {
490
+ tags: { deviceId },
491
+ meta: {
492
+ hasCache: hit !== void 0,
493
+ ageMs: hit ? now - hit.ts : null
494
+ }
495
+ });
496
+ return hit ? hit.data : null;
497
+ }
488
498
  const flightKey = `${deviceId}:${effectiveStreamId ?? "auto"}`;
489
499
  const flight = this.captureFlight.run(flightKey, () => this.captureFresh({
490
500
  deviceId,
@@ -749,13 +759,37 @@ var SnapshotAddon = class SnapshotAddon extends require_dist.BaseAddon {
749
759
  this.captureFlight.invalidatePrefix(`${input.deviceId}:`);
750
760
  }
751
761
  /**
752
- * Non-throwing probe of the device's battery cap. Returns true only
753
- * when a battery native is registered AND its current status says
754
- * `sleeping: true`. Any error (no provider, native absent, getStatus
755
- * missing, RPC timeout) is swallowed and treated as "awake" we'd
756
- * rather pay a wake-up than strand the caller on a cache that's
757
- * semantically stale. Debug-logged for observability.
762
+ * Sleep state from the device-state MIRROR, not from a cap round-trip.
763
+ *
764
+ * `fetchDevice(id).state.battery` is a `SliceHandle` over the hub's
765
+ * runtime-state mirror: a local read, no RPC, no failure branch to get
766
+ * wrong. It is the same mirror that feeds the battery badge elsewhere
767
+ * in the UI, so if the operator can see "sleeping" on screen, this
768
+ * sees it too. (Both spec harnesses already model exactly this wiring
769
+ * — like the orphaned doc comment above, it outlived the gate it was
770
+ * built for.)
771
+ *
772
+ * `undefined` slice → the device has no battery state we know of →
773
+ * treated as awake. The caller has already established the device is
774
+ * battery-operated from its feature flags, so this only decides
775
+ * WHETHER IT IS ASLEEP, never whether it has a battery.
776
+ *
777
+ * Only consulted on the path that would otherwise CAPTURE — a fresh
778
+ * cache hit returns before we get here.
758
779
  */
780
+ async isDeviceSleeping(deviceId) {
781
+ try {
782
+ const raw = (await this.ctx.fetchDevice(deviceId)).state.battery.value;
783
+ const parsed = require_dist.BatteryStatusSchema.safeParse(raw);
784
+ return parsed.success && parsed.data.sleeping;
785
+ } catch (err) {
786
+ this.ctx.logger.warn("snapshot: battery mirror read failed — assuming awake", {
787
+ tags: { deviceId },
788
+ meta: { error: require_dist.errMsg(err) }
789
+ });
790
+ return false;
791
+ }
792
+ }
759
793
  /**
760
794
  * True when at least one of the device's brokers is actively
761
795
  * streaming (status === 'streaming'). Used by the battery-cam guard
@@ -1,4 +1,4 @@
1
- import { V as nodePin, Z as snapshotCapability, at as BaseAddon, dt as DeviceType, et as streamQualityLabel, it as errMsg, lt as DeviceFeature } from "../../dist-CVCNYn7D.mjs";
1
+ import { H as nodePin, Q as snapshotCapability, at as errMsg, ft as DeviceType, i as BatteryStatusSchema, ot as BaseAddon, tt as streamQualityLabel, ut as DeviceFeature } from "../../dist-DpKeSZel.mjs";
2
2
  import { execFile } from "node:child_process";
3
3
  //#region src/builtins/snapshot/snapshot-coalescing.ts
4
4
  /**
@@ -480,6 +480,16 @@ var SnapshotAddon = class SnapshotAddon extends BaseAddon {
480
480
  });
481
481
  return hit ? hit.data : null;
482
482
  }
483
+ if (!force && isBatteryDevice && await this.isDeviceSleeping(deviceId)) {
484
+ log.debug("snapshot: sleeping battery cam and no force — serving cache, not capturing", {
485
+ tags: { deviceId },
486
+ meta: {
487
+ hasCache: hit !== void 0,
488
+ ageMs: hit ? now - hit.ts : null
489
+ }
490
+ });
491
+ return hit ? hit.data : null;
492
+ }
483
493
  const flightKey = `${deviceId}:${effectiveStreamId ?? "auto"}`;
484
494
  const flight = this.captureFlight.run(flightKey, () => this.captureFresh({
485
495
  deviceId,
@@ -744,13 +754,37 @@ var SnapshotAddon = class SnapshotAddon extends BaseAddon {
744
754
  this.captureFlight.invalidatePrefix(`${input.deviceId}:`);
745
755
  }
746
756
  /**
747
- * Non-throwing probe of the device's battery cap. Returns true only
748
- * when a battery native is registered AND its current status says
749
- * `sleeping: true`. Any error (no provider, native absent, getStatus
750
- * missing, RPC timeout) is swallowed and treated as "awake" we'd
751
- * rather pay a wake-up than strand the caller on a cache that's
752
- * semantically stale. Debug-logged for observability.
757
+ * Sleep state from the device-state MIRROR, not from a cap round-trip.
758
+ *
759
+ * `fetchDevice(id).state.battery` is a `SliceHandle` over the hub's
760
+ * runtime-state mirror: a local read, no RPC, no failure branch to get
761
+ * wrong. It is the same mirror that feeds the battery badge elsewhere
762
+ * in the UI, so if the operator can see "sleeping" on screen, this
763
+ * sees it too. (Both spec harnesses already model exactly this wiring
764
+ * — like the orphaned doc comment above, it outlived the gate it was
765
+ * built for.)
766
+ *
767
+ * `undefined` slice → the device has no battery state we know of →
768
+ * treated as awake. The caller has already established the device is
769
+ * battery-operated from its feature flags, so this only decides
770
+ * WHETHER IT IS ASLEEP, never whether it has a battery.
771
+ *
772
+ * Only consulted on the path that would otherwise CAPTURE — a fresh
773
+ * cache hit returns before we get here.
753
774
  */
775
+ async isDeviceSleeping(deviceId) {
776
+ try {
777
+ const raw = (await this.ctx.fetchDevice(deviceId)).state.battery.value;
778
+ const parsed = BatteryStatusSchema.safeParse(raw);
779
+ return parsed.success && parsed.data.sleeping;
780
+ } catch (err) {
781
+ this.ctx.logger.warn("snapshot: battery mirror read failed — assuming awake", {
782
+ tags: { deviceId },
783
+ meta: { error: errMsg(err) }
784
+ });
785
+ return false;
786
+ }
787
+ }
754
788
  /**
755
789
  * True when at least one of the device's brokers is actively
756
790
  * streaming (status === 'streaming'). Used by the battery-cam guard
@@ -170,13 +170,25 @@ export declare class SnapshotAddon extends BaseAddon<SnapshotAddonConfig> {
170
170
  private runGrabWithResumeRetry;
171
171
  private invalidateCache;
172
172
  /**
173
- * Non-throwing probe of the device's battery cap. Returns true only
174
- * when a battery native is registered AND its current status says
175
- * `sleeping: true`. Any error (no provider, native absent, getStatus
176
- * missing, RPC timeout) is swallowed and treated as "awake" we'd
177
- * rather pay a wake-up than strand the caller on a cache that's
178
- * semantically stale. Debug-logged for observability.
173
+ * Sleep state from the device-state MIRROR, not from a cap round-trip.
174
+ *
175
+ * `fetchDevice(id).state.battery` is a `SliceHandle` over the hub's
176
+ * runtime-state mirror: a local read, no RPC, no failure branch to get
177
+ * wrong. It is the same mirror that feeds the battery badge elsewhere
178
+ * in the UI, so if the operator can see "sleeping" on screen, this
179
+ * sees it too. (Both spec harnesses already model exactly this wiring
180
+ * — like the orphaned doc comment above, it outlived the gate it was
181
+ * built for.)
182
+ *
183
+ * `undefined` slice → the device has no battery state we know of →
184
+ * treated as awake. The caller has already established the device is
185
+ * battery-operated from its feature flags, so this only decides
186
+ * WHETHER IT IS ASLEEP, never whether it has a battery.
187
+ *
188
+ * Only consulted on the path that would otherwise CAPTURE — a fresh
189
+ * cache hit returns before we get here.
179
190
  */
191
+ private isDeviceSleeping;
180
192
  /**
181
193
  * True when at least one of the device's brokers is actively
182
194
  * streaming (status === 'streaming'). Used by the battery-cam guard
@@ -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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $ as storageProviderCapability, at as BaseAddon, k as filesystemBrowseCapability } from "../../dist-CVCNYn7D.mjs";
1
+ import { A as filesystemBrowseCapability, et as storageProviderCapability, ot as BaseAddon } from "../../dist-DpKeSZel.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import * as path$1 from "node:path";
4
4
  import { basename, dirname, join, resolve, sep } 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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let better_sqlite3 = require("better-sqlite3");
9
9
  better_sqlite3 = require_chunk.__toESM(better_sqlite3);
@@ -1,4 +1,4 @@
1
- import { Tt as parseJsonUnknown, X as settingsStoreCapability, at as BaseAddon, ht as asJsonObject, it as errMsg, s as RUNTIME_DEFAULTS } from "../../dist-CVCNYn7D.mjs";
1
+ import { Et as parseJsonUnknown, Z as settingsStoreCapability, at as errMsg, c as RUNTIME_DEFAULTS, gt as asJsonObject, ot as BaseAddon } from "../../dist-DpKeSZel.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import Database from "better-sqlite3";
4
4
  //#region src/builtins/sqlite-storage/sqlite-settings-backend.ts
@@ -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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.js");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_chunk.__toESM(node_path);
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- import { Q as storageCapability, at as BaseAddon, u as StorageLocationTypeSchema, wt as parseJsonObject } from "../../dist-CVCNYn7D.mjs";
1
+ import { $ as storageCapability, Tt as parseJsonObject, d as StorageLocationTypeSchema, ot as BaseAddon } from "../../dist-DpKeSZel.mjs";
2
2
  import * as path$1 from "node:path";
3
3
  import * as fs from "node:fs/promises";
4
4
  import { buildStorageLocationRegistry } from "@camstack/system";
@@ -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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.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 { St as hydrateSchema, at as BaseAddon, it as errMsg } from "../../dist-CVCNYn7D.mjs";
1
+ import { Ct as hydrateSchema, at as errMsg, ot as BaseAddon } from "../../dist-DpKeSZel.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-SI-yNpKE.js");
6
+ const require_dist = require("../../dist-BQOCTD5b.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 { R as logDestinationCapability, at as BaseAddon } from "../../dist-CVCNYn7D.mjs";
1
+ import { ot as BaseAddon, z as logDestinationCapability } from "../../dist-DpKeSZel.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";
@@ -28213,6 +28213,12 @@ Object.defineProperty(exports, "BaseAddon", {
28213
28213
  return BaseAddon;
28214
28214
  }
28215
28215
  });
28216
+ Object.defineProperty(exports, "BatteryStatusSchema", {
28217
+ enumerable: true,
28218
+ get: function() {
28219
+ return BatteryStatusSchema;
28220
+ }
28221
+ });
28216
28222
  Object.defineProperty(exports, "CAP_NAMES_WITH_STATUS", {
28217
28223
  enumerable: true,
28218
28224
  get: function() {
@@ -28189,4 +28189,4 @@ function enumerateInferenceDevices(hw) {
28189
28189
  return out;
28190
28190
  }
28191
28191
  //#endregion
28192
- export { storageProviderCapability as $, getByPath as A, EventCategory as At, metricsProviderCapability as B, doorbellCapability as C, isDeviceConfigCap as Ct, evaluateLinkExpression as D, resolveCapMount as Dt, enumerateSchemaFields as E, readinessKey as Et, kebabToCamel as F, platformProbeCapability as G, normalizeUnit as H, lifecycleJobSchema as I, scoreRuntimes as J, procedureAuthKey as K, localNetworkCapability as L, isCollectionArrayMethod as M, isObjectInput as N, extractNestedAddonId as O, scopeKey as Ot, isVoidInput as P, storageCapability as Q, logDestinationCapability as R, deviceStatusCapability as S, hydrateSchema as St, enumerateItemArrayFields as T, parseJsonUnknown as Tt, objectInputDeclaresAddonId as U, nodePin as V, parseStreamParamsFormPatch as W, settingsStoreCapability as X, setByPath as Y, snapshotCapability as Z, authProviderCapability as _, asString as _t, DeviceStatusSchema as a, BaseAddon as at, deviceManagerCapability as b, emitReadiness as bt, STREAM_PROFILE_META as c, DEVICE_STATUS_METHOD as ct, UserRecordSchema as d, DeviceType as dt, streamQualityLabel as et, addonPagesCapability as f, ReadinessRegistry as ft, applyTransform as g, asNumber as gt, alertsCapability as h, asJsonObject as ht, CAP_NAMES_WITH_STATUS as i, errMsg as it, isArrayOutputSchema as j, filesystemBrowseCapability as k, sleep as kt, ScopedTokenSchema as l, DeviceFeature as lt, addonWidgetsCapability as m, WELL_KNOWN_TAB_MAP as mt, AlertSchema as n, userManagementCapability as nt, METHOD_ACCESS_MAP as o, DATAPLANE_SECRET_HEADER as ot, addonSettingsCapability as p, ReadinessTimeoutError as pt, readNodePin as q, ApiKeyRecordSchema as r, validateExpressionSource as rt, RUNTIME_DEFAULTS as s, DEVICE_SETTINGS_CONTRIBUTION_METHODS as st, ALL_CAPABILITY_DEFINITIONS as t, toExpressionValue as tt, StorageLocationTypeSchema as u, DeviceRole as ut, backupCapability as v, createEvent as vt, enumerateInferenceDevices as w, parseJsonObject as wt, deviceStateCapability as x, expandCapMethods as xt, buildStreamParamsConfigSchema as y, emitDownForOwnedCaps as yt, looseSchema as z };
28192
+ export { storageCapability as $, filesystemBrowseCapability as A, sleep as At, looseSchema as B, deviceStatusCapability as C, hydrateSchema as Ct, enumerateSchemaFields as D, readinessKey as Dt, enumerateItemArrayFields as E, parseJsonUnknown as Et, isVoidInput as F, parseStreamParamsFormPatch as G, nodePin as H, kebabToCamel as I, readNodePin as J, platformProbeCapability as K, lifecycleJobSchema as L, isArrayOutputSchema as M, isCollectionArrayMethod as N, evaluateLinkExpression as O, resolveCapMount as Ot, isObjectInput as P, snapshotCapability as Q, localNetworkCapability as R, deviceStateCapability as S, expandCapMethods as St, enumerateInferenceDevices as T, parseJsonObject as Tt, normalizeUnit as U, metricsProviderCapability as V, objectInputDeclaresAddonId as W, setByPath as X, scoreRuntimes as Y, settingsStoreCapability as Z, applyTransform as _, asNumber as _t, CAP_NAMES_WITH_STATUS as a, errMsg as at, buildStreamParamsConfigSchema as b, emitDownForOwnedCaps as bt, RUNTIME_DEFAULTS as c, DEVICE_SETTINGS_CONTRIBUTION_METHODS as ct, StorageLocationTypeSchema as d, DeviceRole as dt, storageProviderCapability as et, UserRecordSchema as f, DeviceType as ft, alertsCapability as g, asJsonObject as gt, addonWidgetsCapability as h, WELL_KNOWN_TAB_MAP as ht, BatteryStatusSchema as i, validateExpressionSource as it, getByPath as j, EventCategory as jt, extractNestedAddonId as k, scopeKey as kt, STREAM_PROFILE_META as l, DEVICE_STATUS_METHOD as lt, addonSettingsCapability as m, ReadinessTimeoutError as mt, AlertSchema as n, toExpressionValue as nt, DeviceStatusSchema as o, BaseAddon as ot, addonPagesCapability as p, ReadinessRegistry as pt, procedureAuthKey as q, ApiKeyRecordSchema as r, userManagementCapability as rt, METHOD_ACCESS_MAP as s, DATAPLANE_SECRET_HEADER as st, ALL_CAPABILITY_DEFINITIONS as t, streamQualityLabel as tt, ScopedTokenSchema as u, DeviceFeature as ut, authProviderCapability as v, asString as vt, doorbellCapability as w, isDeviceConfigCap as wt, deviceManagerCapability as x, emitReadiness as xt, backupCapability as y, createEvent as yt, logDestinationCapability as z };
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-SI-yNpKE.js");
3
+ const require_dist = require("./dist-BQOCTD5b.js");
4
4
  const require_model_download_service = require("./model-download-service-hf0ookyy.js");
5
- const require_manifest_python_deps = require("./manifest-python-deps-CEwMAaKZ.js");
5
+ const require_manifest_python_deps = require("./manifest-python-deps-1I7WdPDD.js");
6
6
  const require_resource_monitor = require("./resource-monitor-DNNomR-i.js");
7
7
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./builtins/sqlite-storage/filesystem-storage.addon.js");
8
8
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./builtins/sqlite-storage/sqlite-settings.addon.js");
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { At as EventCategory$1, Dt as resolveCapMount, Et as readinessKey, F as kebabToCamel, I as lifecycleJobSchema, K as procedureAuthKey, M as isCollectionArrayMethod, N as isObjectInput, O as extractNestedAddonId, Ot as scopeKey, P as isVoidInput, Tt as parseJsonUnknown$1, U as objectInputDeclaresAddonId, _t as asString$1, ct as DEVICE_STATUS_METHOD, ft as ReadinessRegistry, gt as asNumber, ht as asJsonObject$1, it as errMsg$1, j as isArrayOutputSchema, o as METHOD_ACCESS_MAP, ot as DATAPLANE_SECRET_HEADER$1, p as addonSettingsCapability, pt as ReadinessTimeoutError, s as RUNTIME_DEFAULTS, st as DEVICE_SETTINGS_CONTRIBUTION_METHODS, t as ALL_CAPABILITY_DEFINITIONS, vt as createEvent, wt as parseJsonObject, xt as expandCapMethods, yt as emitDownForOwnedCaps, z as looseSchema } from "./dist-CVCNYn7D.mjs";
1
+ import { B as looseSchema, Dt as readinessKey, Et as parseJsonUnknown$1, F as isVoidInput, I as kebabToCamel, L as lifecycleJobSchema, M as isArrayOutputSchema, N as isCollectionArrayMethod, Ot as resolveCapMount, P as isObjectInput, St as expandCapMethods, Tt as parseJsonObject, W as objectInputDeclaresAddonId, _t as asNumber, at as errMsg$1, bt as emitDownForOwnedCaps, c as RUNTIME_DEFAULTS, ct as DEVICE_SETTINGS_CONTRIBUTION_METHODS, gt as asJsonObject$1, jt as EventCategory$1, k as extractNestedAddonId, kt as scopeKey, lt as DEVICE_STATUS_METHOD, m as addonSettingsCapability, mt as ReadinessTimeoutError, pt as ReadinessRegistry, q as procedureAuthKey, s as METHOD_ACCESS_MAP, st as DATAPLANE_SECRET_HEADER$1, t as ALL_CAPABILITY_DEFINITIONS, vt as asString$1, yt as createEvent } from "./dist-DpKeSZel.mjs";
2
2
  import { a as downloadModel, c as getModelFilePath, d as contentTypeFor, f as createAuthenticatedFileServer, h as resolveFilePath, i as downloadFile, l as isModelDownloaded, m as parseTokenizedUrl, n as collectModelFiles, o as ensureModel, p as parseRangeHeader, r as deleteModelFromDisk, s as fetchJson, t as ModelDownloadService, u as createFileDataPlaneHandler } from "./model-download-service-Cp9f4dk6.mjs";
3
- import { $ as buildNativeCapProxy, A as createHubCapForwardService, B as AGENT_CAP_FWD_ACTION, C as brokerTransportLink, Ct as resolveAddonClass, D as localProviderLink, E as ipcParentLink, F as createUdsLogger, G as callWithServiceDiscovery, H as CapRouteResolver, I as createUdsLoggerWithControl, J as UdsLocalTransportServer, K as createLocalTransport, L as LocalChildClient, M as createUdsEventBridge, N as createUdsEventBus, O as HUB_CAP_FWD_ACTION, P as udsChildLogToWorkerEntry, Q as encodeFrame, R as LocalChildRegistry, S as brokerCallForCap, St as runNpm, T as ipcChildLink, U as CapRouteError, V as AGENT_CAP_FWD_SERVICE, W as classifyCapRoute, X as localEndpointPath, Y as SocketChannel, Z as FrameDecoder, _ as createKernelHwAccel, _t as CapabilityHandle, a as getWorkerDeviceRegistry, b as __resetCapUsageRegistryForTests, bt as installManifestNativeDeps, c as setHubConnected, ct as NATIVE_PROVIDER_SERVICE_INFIX, d as getBrokerEventBus, dt as capBareAction, et as buildUdsNativeCapProxy, f as getMoleculerEventStats, ft as capServiceName, g as AddonDepsManager, gt as DeviceRegistry, h as subscribePassthrough, ht as serializeTypedArrays, i as createUdsAddonContext, it as mountNativeCapService, j as createParentUnownedCallHandler, k as HUB_CAP_FWD_SERVICE, l as EVENT_TOPIC_PREFIX, lt as capActionName, m as setNodeEventInterest, mt as deserializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as createAddonService, p as registerEventBusService, pt as parseCapAction, q as UdsLocalTransportClient, r as createAddonContext, s as getOrInitReadinessRegistryForClient, st as validateProviderRegistrations, t as installManifestPythonDeps, tt as createBrokerDeviceManagerApi, u as clusterEventTopic, ut as capActionSuffix, v as resolveHwAccel, vt as CapabilityUnavailableError, w as buildLinkChain, wt as createAddonDataPlaneFacility, x as getCapUsageRegistry, xt as resolveNpmInvocation, y as CapUsageRegistry, yt as copyBundledNativeModules, z as UDS_NO_ROUTE_PREFIX } from "./manifest-python-deps-DyEweBkB.mjs";
3
+ import { $ as buildNativeCapProxy, A as createHubCapForwardService, B as AGENT_CAP_FWD_ACTION, C as brokerTransportLink, Ct as resolveAddonClass, D as localProviderLink, E as ipcParentLink, F as createUdsLogger, G as callWithServiceDiscovery, H as CapRouteResolver, I as createUdsLoggerWithControl, J as UdsLocalTransportServer, K as createLocalTransport, L as LocalChildClient, M as createUdsEventBridge, N as createUdsEventBus, O as HUB_CAP_FWD_ACTION, P as udsChildLogToWorkerEntry, Q as encodeFrame, R as LocalChildRegistry, S as brokerCallForCap, St as runNpm, T as ipcChildLink, U as CapRouteError, V as AGENT_CAP_FWD_SERVICE, W as classifyCapRoute, X as localEndpointPath, Y as SocketChannel, Z as FrameDecoder, _ as createKernelHwAccel, _t as CapabilityHandle, a as getWorkerDeviceRegistry, b as __resetCapUsageRegistryForTests, bt as installManifestNativeDeps, c as setHubConnected, ct as NATIVE_PROVIDER_SERVICE_INFIX, d as getBrokerEventBus, dt as capBareAction, et as buildUdsNativeCapProxy, f as getMoleculerEventStats, ft as capServiceName, g as AddonDepsManager, gt as DeviceRegistry, h as subscribePassthrough, ht as serializeTypedArrays, i as createUdsAddonContext, it as mountNativeCapService, j as createParentUnownedCallHandler, k as HUB_CAP_FWD_SERVICE, l as EVENT_TOPIC_PREFIX, lt as capActionName, m as setNodeEventInterest, mt as deserializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as createAddonService, p as registerEventBusService, pt as parseCapAction, q as UdsLocalTransportClient, r as createAddonContext, s as getOrInitReadinessRegistryForClient, st as validateProviderRegistrations, t as installManifestPythonDeps, tt as createBrokerDeviceManagerApi, u as clusterEventTopic, ut as capActionSuffix, v as resolveHwAccel, vt as CapabilityUnavailableError, w as buildLinkChain, wt as createAddonDataPlaneFacility, x as getCapUsageRegistry, xt as resolveNpmInvocation, y as CapUsageRegistry, yt as copyBundledNativeModules, z as UDS_NO_ROUTE_PREFIX } from "./manifest-python-deps-I2MGvDvo.mjs";
4
4
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-Le3l0qS2.mjs";
5
5
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
6
6
  import { SqliteSettingsAddon, t as SqliteSettingsBackend } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-SI-yNpKE.js");
2
+ const require_dist = require("./dist-BQOCTD5b.js");
3
3
  let _camstack_types_node = require("@camstack/types/node");
4
4
  let node_http = require("node:http");
5
5
  let node_fs = require("node:fs");
@@ -1,4 +1,4 @@
1
- import { q as readNodePin } from "./dist-CVCNYn7D.mjs";
1
+ import { J as readNodePin } from "./dist-DpKeSZel.mjs";
2
2
  import { ensureBinary, ensureFfmpeg, ensurePython, installPythonPackages, installPythonRequirements } from "@camstack/types/node";
3
3
  import { createServer } from "node:http";
4
4
  import * as fs from "node:fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.9",
3
+ "version": "1.2.11",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",