@camstack/system 1.2.26 → 1.2.27

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 (50) 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/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/loki-logging/index.js +1 -1
  24. package/dist/builtins/loki-logging/index.mjs +1 -1
  25. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  26. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  27. package/dist/builtins/platform-probe/index.js +1 -1
  28. package/dist/builtins/platform-probe/index.mjs +1 -1
  29. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  30. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  31. package/dist/builtins/snapshot/index.js +1 -1
  32. package/dist/builtins/snapshot/index.mjs +1 -1
  33. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  34. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  35. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  36. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  37. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  38. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  39. package/dist/builtins/system-config/system-config.addon.js +1 -1
  40. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  41. package/dist/builtins/winston-logging/index.js +1 -1
  42. package/dist/builtins/winston-logging/index.mjs +1 -1
  43. package/dist/{dist-DimX9eZy.mjs → dist-BXmFvn3h.mjs} +42 -3
  44. package/dist/{dist-Cu72wsz5.js → dist-BxtIzexq.js} +42 -3
  45. package/dist/index.js +2 -2
  46. package/dist/index.mjs +2 -2
  47. package/dist/kernel/moleculer/readiness-context.d.ts +2 -2
  48. package/dist/{manifest-python-deps-julrfvyf.mjs → manifest-python-deps-BNOApgK0.mjs} +4 -4
  49. package/dist/{manifest-python-deps-COgal7Jy.js → manifest-python-deps-KZ00cbfP.js} +4 -4
  50. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_manifest_python_deps = require("./manifest-python-deps-COgal7Jy.js");
2
+ const require_manifest_python_deps = require("./manifest-python-deps-KZ00cbfP.js");
3
3
  const require_custom_action_registry = require("./custom-action-registry-jY0NOZK8.js");
4
4
  let node_fs = require("node:fs");
5
5
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- 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-julrfvyf.mjs";
1
+ 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-BNOApgK0.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 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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 BaseAddon, it as errMsg, jt as EventCategory, p as addonPagesCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, it as errMsg, jt as EventCategory, p as addonPagesCapability } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 BaseAddon, h as addonWidgetsCapability, it as errMsg, jt as EventCategory } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, h as addonWidgetsCapability, it as errMsg, jt as EventCategory } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 BaseAddon, g as alertsCapability, it as errMsg, jt as EventCategory, n as AlertSchema, vt as createEvent } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, g as alertsCapability, it as errMsg, jt as EventCategory, n as AlertSchema, vt as createEvent } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 BaseAddon, jt as EventCategory, y as backupCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, jt as EventCategory, y as backupCapability } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { at as BaseAddon, z as logDestinationCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, z as logDestinationCapability } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { At as sleep, C as deviceStatusCapability, Ct as isDeviceConfigCap, D as enumerateSchemaFields, E as enumerateItemArrayFields, G as parseStreamParamsFormPatch, O as evaluateLinkExpression, S as deviceStateCapability, U as normalizeUnit, Y as setByPath, _ as applyTransform, a as CAP_NAMES_WITH_STATUS, at as BaseAddon, b as buildStreamParamsConfigSchema, dt as DeviceType, it as errMsg, j as getByPath, jt as EventCategory, l as STREAM_PROFILE_META, lt as DeviceFeature, mt as WELL_KNOWN_TAB_MAP, o as DeviceStatusSchema, rt as validateExpressionSource, t as ALL_CAPABILITY_DEFINITIONS, tt as toExpressionValue, ut as DeviceRole, x as deviceManagerCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { At as sleep, C as deviceStatusCapability, Ct as isDeviceConfigCap, D as enumerateSchemaFields, E as enumerateItemArrayFields, G as parseStreamParamsFormPatch, O as evaluateLinkExpression, S as deviceStateCapability, U as normalizeUnit, Y as setByPath, _ as applyTransform, a as CAP_NAMES_WITH_STATUS, at as BaseAddon, b as buildStreamParamsConfigSchema, dt as DeviceType, it as errMsg, j as getByPath, jt as EventCategory, l as STREAM_PROFILE_META, lt as DeviceFeature, mt as WELL_KNOWN_TAB_MAP, o as DeviceStatusSchema, rt as validateExpressionSource, t as ALL_CAPABILITY_DEFINITIONS, tt as toExpressionValue, ut as DeviceRole, x as deviceManagerCapability } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 BaseAddon, dt as DeviceType, it as errMsg, jt as EventCategory, vt as createEvent, w as doorbellCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, dt as DeviceType, it as errMsg, jt as EventCategory, vt as createEvent, w as doorbellCapability } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { at as BaseAddon, z as logDestinationCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, z as logDestinationCapability } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { at as BaseAddon, f as UserRecordSchema, nt as userManagementCapability, r as ApiKeyRecordSchema, u as ScopedTokenSchema, v as authProviderCapability } from "../../dist-DimX9eZy.mjs";
2
+ import { at as BaseAddon, f as UserRecordSchema, nt as userManagementCapability, r as ApiKeyRecordSchema, u as ScopedTokenSchema, v as authProviderCapability } from "../../dist-BXmFvn3h.mjs";
3
3
  import * as crypto$1 from "node:crypto";
4
4
  import { randomUUID } 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-Cu72wsz5.js");
3
+ const require_dist = require("../../dist-BxtIzexq.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 { R as localNetworkCapability, at as BaseAddon, jt as EventCategory } from "../../dist-DimX9eZy.mjs";
1
+ import { R as localNetworkCapability, at as BaseAddon, jt as EventCategory } from "../../dist-BXmFvn3h.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
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { at as BaseAddon, z as logDestinationCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, z as logDestinationCapability } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { H as metricsProviderCapability, at as BaseAddon, jt as EventCategory, vt as createEvent } from "../../dist-DimX9eZy.mjs";
1
+ import { H as metricsProviderCapability, at as BaseAddon, jt as EventCategory, vt as createEvent } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { J as scoreRuntimes, K as platformProbeCapability, T as enumerateInferenceDevices, at as BaseAddon, bt as emitReadiness, it as errMsg, jt as EventCategory } from "../../dist-DimX9eZy.mjs";
2
+ import { J as scoreRuntimes, K as platformProbeCapability, T as enumerateInferenceDevices, at as BaseAddon, bt as emitReadiness, it as errMsg, jt as EventCategory } from "../../dist-BXmFvn3h.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { execFile } from "node:child_process";
5
5
  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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 BaseAddon, jt as EventCategory } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, jt as EventCategory } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  //#region src/builtins/snapshot/snapshot-coalescing.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { Z as snapshotCapability, at as BaseAddon, dt as DeviceType, et as streamQualityLabel, i as BatteryStatusSchema, it as errMsg, lt as DeviceFeature, wt as nodePin } from "../../dist-DimX9eZy.mjs";
1
+ import { Z as snapshotCapability, at as BaseAddon, dt as DeviceType, et as streamQualityLabel, i as BatteryStatusSchema, it as errMsg, lt as DeviceFeature, wt as nodePin } from "../../dist-BXmFvn3h.mjs";
2
2
  import { execFile } from "node:child_process";
3
3
  //#region src/builtins/snapshot/snapshot-coalescing.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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, A as filesystemBrowseCapability, at as BaseAddon } from "../../dist-DimX9eZy.mjs";
1
+ import { $ as storageProviderCapability, A as filesystemBrowseCapability, at as BaseAddon } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { Et as parseJsonUnknown, X as settingsStoreCapability, at as BaseAddon, c as RUNTIME_DEFAULTS, ht as asJsonObject, it as errMsg } from "../../dist-DimX9eZy.mjs";
1
+ import { Et as parseJsonUnknown, X as settingsStoreCapability, at as BaseAddon, c as RUNTIME_DEFAULTS, ht as asJsonObject, it as errMsg } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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, Tt as parseJsonObject, at as BaseAddon, d as StorageLocationTypeSchema } from "../../dist-DimX9eZy.mjs";
1
+ import { Q as storageCapability, Tt as parseJsonObject, at as BaseAddon, d as StorageLocationTypeSchema } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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-DimX9eZy.mjs";
1
+ import { St as hydrateSchema, at as BaseAddon, it as errMsg } from "../../dist-BXmFvn3h.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-Cu72wsz5.js");
6
+ const require_dist = require("../../dist-BxtIzexq.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 { at as BaseAddon, z as logDestinationCapability } from "../../dist-DimX9eZy.mjs";
1
+ import { at as BaseAddon, z as logDestinationCapability } from "../../dist-BXmFvn3h.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";
@@ -1862,6 +1862,7 @@ var ReadinessRegistry = class {
1862
1862
  logger;
1863
1863
  now;
1864
1864
  generation;
1865
+ verboseDeviceScopeLogs;
1865
1866
  snapshot = /* @__PURE__ */ new Map();
1866
1867
  subscriptions = /* @__PURE__ */ new Set();
1867
1868
  unsubscribeBus;
@@ -1872,6 +1873,7 @@ var ReadinessRegistry = class {
1872
1873
  this.logger = options.logger;
1873
1874
  this.now = options.now ?? (() => Date.now());
1874
1875
  this.generation = options.generation ?? randomGeneration();
1876
+ this.verboseDeviceScopeLogs = options.verboseDeviceScopeLogs ?? false;
1875
1877
  this.unsubscribeBus = this.bus.subscribe({ category: "system.ready-state" }, (event) => this.ingest(event.data));
1876
1878
  this.unsubscribeAgentOffline = this.bus.subscribe({ category: "agent.offline" }, (event) => this.synthesizeDownForNode(event.data.agentId));
1877
1879
  if (typeof this.bus.getRecent === "function") try {
@@ -1925,9 +1927,16 @@ var ReadinessRegistry = class {
1925
1927
  * Every applied entry dispatches a one-shot transition to matching
1926
1928
  * subscriptions so pending `awaitReady` callers unblock without having
1927
1929
  * to wait for a fresh event.
1930
+ *
1931
+ * Returns the number of records APPLIED (added or advanced). Callers
1932
+ * doing periodic reconciles use this to stay silent when the snapshot
1933
+ * changed nothing — the every-60s "hydrated 1446 record(s)" heartbeat
1934
+ * from every child process was pure noise (≈2 800 lines/hour observed
1935
+ * live on 2026-08-01).
1928
1936
  */
1929
1937
  hydrate(records) {
1930
1938
  const now = this.now();
1939
+ let applied = 0;
1931
1940
  for (const record of records) {
1932
1941
  const key = readinessKey(record.capName, record.scope);
1933
1942
  const prev = this.snapshot.get(key) ?? null;
@@ -1953,7 +1962,8 @@ var ReadinessRegistry = class {
1953
1962
  sourceNodeId: record.sourceNodeId
1954
1963
  };
1955
1964
  this.snapshot.set(key, hydrated);
1956
- if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated${prev !== null ? " update" : ""}, gen=${record.generation.slice(0, 6)})`);
1965
+ applied++;
1966
+ this.logPerRecord(record.scope, `readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated${prev !== null ? " update" : ""}, gen=${record.generation.slice(0, 6)})`);
1957
1967
  const transition = {
1958
1968
  capName: record.capName,
1959
1969
  scope: record.scope,
@@ -1974,6 +1984,23 @@ var ReadinessRegistry = class {
1974
1984
  }
1975
1985
  }
1976
1986
  }
1987
+ return applied;
1988
+ }
1989
+ /**
1990
+ * Per-record debug line, volume-gated: device-scoped records are logged
1991
+ * only when `verboseDeviceScopeLogs` is set (see the option's doc for
1992
+ * the 21 577-lines-per-boot-minute incident that forced the gate);
1993
+ * node/global records always log. Device lines carry `tags.deviceId`
1994
+ * so they group per-camera (CLAUDE.md logging rule).
1995
+ */
1996
+ logPerRecord(scope, message) {
1997
+ if (!this.logger) return;
1998
+ if (scope.type === "device") {
1999
+ if (!this.verboseDeviceScopeLogs) return;
2000
+ this.logger.debug(message, { tags: { deviceId: scope.deviceId } });
2001
+ return;
2002
+ }
2003
+ this.logger.debug(message);
1977
2004
  }
1978
2005
  /**
1979
2006
  * True when THIS process is the origin authority for `record` — a
@@ -2148,7 +2175,7 @@ var ReadinessRegistry = class {
2148
2175
  ts: payload.ts,
2149
2176
  durationInPrevState
2150
2177
  };
2151
- if (this.logger) this.logger.debug(`readiness: ${payload.capName} (${scopeKey(payload.scope)}) → ${payload.state} epoch=${epoch} gen=${payload.generation.slice(0, 6)} (prev ${durationInPrevState}ms)`);
2178
+ this.logPerRecord(payload.scope, `readiness: ${payload.capName} (${scopeKey(payload.scope)}) → ${payload.state} epoch=${epoch} gen=${payload.generation.slice(0, 6)} (prev ${durationInPrevState}ms)`);
2152
2179
  for (const sub of this.subscriptions) {
2153
2180
  if (sub.capName !== payload.capName) continue;
2154
2181
  if (!scopesEqual(sub.scope, payload.scope)) continue;
@@ -2193,7 +2220,7 @@ var ReadinessRegistry = class {
2193
2220
  ts: now,
2194
2221
  durationInPrevState
2195
2222
  };
2196
- if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → down (synthesized from agent.offline ${offlineNodeId})`);
2223
+ this.logPerRecord(record.scope, `readiness: ${record.capName} (${scopeKey(record.scope)}) → down (synthesized from agent.offline ${offlineNodeId})`);
2197
2224
  for (const sub of this.subscriptions) {
2198
2225
  if (sub.capName !== record.capName) continue;
2199
2226
  if (!scopesEqual(sub.scope, record.scope)) continue;
@@ -10486,6 +10513,18 @@ var motionCapability = {
10486
10513
  name: "motion",
10487
10514
  scope: "device",
10488
10515
  mode: "singleton",
10516
+ /**
10517
+ * Providers register per-device natives via `ctx.registerNativeCap`
10518
+ * (Hikvision/Reolink/Amcrest/Wyze/HA/Homematic/Alexa/Matter) — there is
10519
+ * NO system singleton provider. Without this flag `resolveCapMount`
10520
+ * derived `{ kind: 'singleton' }`, so `motion.getStatus`/`isDetected`
10521
+ * resolved via `registry.getSingleton('motion')` (always null) and every
10522
+ * call 412'd "provider not available" while bindings listed a live
10523
+ * `motion` native (2026-08-02). The flag routes the router through
10524
+ * `requireDeviceScoped` → `getProviderForDevice`, like `motion-trigger`,
10525
+ * `snapshot` and every other per-device native cap.
10526
+ */
10527
+ deviceNative: true,
10489
10528
  deviceTypes: [DeviceType.Camera, DeviceType.Sensor],
10490
10529
  methods: {
10491
10530
  /**
@@ -1862,6 +1862,7 @@ var ReadinessRegistry = class {
1862
1862
  logger;
1863
1863
  now;
1864
1864
  generation;
1865
+ verboseDeviceScopeLogs;
1865
1866
  snapshot = /* @__PURE__ */ new Map();
1866
1867
  subscriptions = /* @__PURE__ */ new Set();
1867
1868
  unsubscribeBus;
@@ -1872,6 +1873,7 @@ var ReadinessRegistry = class {
1872
1873
  this.logger = options.logger;
1873
1874
  this.now = options.now ?? (() => Date.now());
1874
1875
  this.generation = options.generation ?? randomGeneration();
1876
+ this.verboseDeviceScopeLogs = options.verboseDeviceScopeLogs ?? false;
1875
1877
  this.unsubscribeBus = this.bus.subscribe({ category: "system.ready-state" }, (event) => this.ingest(event.data));
1876
1878
  this.unsubscribeAgentOffline = this.bus.subscribe({ category: "agent.offline" }, (event) => this.synthesizeDownForNode(event.data.agentId));
1877
1879
  if (typeof this.bus.getRecent === "function") try {
@@ -1925,9 +1927,16 @@ var ReadinessRegistry = class {
1925
1927
  * Every applied entry dispatches a one-shot transition to matching
1926
1928
  * subscriptions so pending `awaitReady` callers unblock without having
1927
1929
  * to wait for a fresh event.
1930
+ *
1931
+ * Returns the number of records APPLIED (added or advanced). Callers
1932
+ * doing periodic reconciles use this to stay silent when the snapshot
1933
+ * changed nothing — the every-60s "hydrated 1446 record(s)" heartbeat
1934
+ * from every child process was pure noise (≈2 800 lines/hour observed
1935
+ * live on 2026-08-01).
1928
1936
  */
1929
1937
  hydrate(records) {
1930
1938
  const now = this.now();
1939
+ let applied = 0;
1931
1940
  for (const record of records) {
1932
1941
  const key = readinessKey(record.capName, record.scope);
1933
1942
  const prev = this.snapshot.get(key) ?? null;
@@ -1953,7 +1962,8 @@ var ReadinessRegistry = class {
1953
1962
  sourceNodeId: record.sourceNodeId
1954
1963
  };
1955
1964
  this.snapshot.set(key, hydrated);
1956
- if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated${prev !== null ? " update" : ""}, gen=${record.generation.slice(0, 6)})`);
1965
+ applied++;
1966
+ this.logPerRecord(record.scope, `readiness: ${record.capName} (${scopeKey(record.scope)}) → ${record.state} (hydrated${prev !== null ? " update" : ""}, gen=${record.generation.slice(0, 6)})`);
1957
1967
  const transition = {
1958
1968
  capName: record.capName,
1959
1969
  scope: record.scope,
@@ -1974,6 +1984,23 @@ var ReadinessRegistry = class {
1974
1984
  }
1975
1985
  }
1976
1986
  }
1987
+ return applied;
1988
+ }
1989
+ /**
1990
+ * Per-record debug line, volume-gated: device-scoped records are logged
1991
+ * only when `verboseDeviceScopeLogs` is set (see the option's doc for
1992
+ * the 21 577-lines-per-boot-minute incident that forced the gate);
1993
+ * node/global records always log. Device lines carry `tags.deviceId`
1994
+ * so they group per-camera (CLAUDE.md logging rule).
1995
+ */
1996
+ logPerRecord(scope, message) {
1997
+ if (!this.logger) return;
1998
+ if (scope.type === "device") {
1999
+ if (!this.verboseDeviceScopeLogs) return;
2000
+ this.logger.debug(message, { tags: { deviceId: scope.deviceId } });
2001
+ return;
2002
+ }
2003
+ this.logger.debug(message);
1977
2004
  }
1978
2005
  /**
1979
2006
  * True when THIS process is the origin authority for `record` — a
@@ -2148,7 +2175,7 @@ var ReadinessRegistry = class {
2148
2175
  ts: payload.ts,
2149
2176
  durationInPrevState
2150
2177
  };
2151
- if (this.logger) this.logger.debug(`readiness: ${payload.capName} (${scopeKey(payload.scope)}) → ${payload.state} epoch=${epoch} gen=${payload.generation.slice(0, 6)} (prev ${durationInPrevState}ms)`);
2178
+ this.logPerRecord(payload.scope, `readiness: ${payload.capName} (${scopeKey(payload.scope)}) → ${payload.state} epoch=${epoch} gen=${payload.generation.slice(0, 6)} (prev ${durationInPrevState}ms)`);
2152
2179
  for (const sub of this.subscriptions) {
2153
2180
  if (sub.capName !== payload.capName) continue;
2154
2181
  if (!scopesEqual(sub.scope, payload.scope)) continue;
@@ -2193,7 +2220,7 @@ var ReadinessRegistry = class {
2193
2220
  ts: now,
2194
2221
  durationInPrevState
2195
2222
  };
2196
- if (this.logger) this.logger.debug(`readiness: ${record.capName} (${scopeKey(record.scope)}) → down (synthesized from agent.offline ${offlineNodeId})`);
2223
+ this.logPerRecord(record.scope, `readiness: ${record.capName} (${scopeKey(record.scope)}) → down (synthesized from agent.offline ${offlineNodeId})`);
2197
2224
  for (const sub of this.subscriptions) {
2198
2225
  if (sub.capName !== record.capName) continue;
2199
2226
  if (!scopesEqual(sub.scope, record.scope)) continue;
@@ -10486,6 +10513,18 @@ var motionCapability = {
10486
10513
  name: "motion",
10487
10514
  scope: "device",
10488
10515
  mode: "singleton",
10516
+ /**
10517
+ * Providers register per-device natives via `ctx.registerNativeCap`
10518
+ * (Hikvision/Reolink/Amcrest/Wyze/HA/Homematic/Alexa/Matter) — there is
10519
+ * NO system singleton provider. Without this flag `resolveCapMount`
10520
+ * derived `{ kind: 'singleton' }`, so `motion.getStatus`/`isDetected`
10521
+ * resolved via `registry.getSingleton('motion')` (always null) and every
10522
+ * call 412'd "provider not available" while bindings listed a live
10523
+ * `motion` native (2026-08-02). The flag routes the router through
10524
+ * `requireDeviceScoped` → `getProviderForDevice`, like `motion-trigger`,
10525
+ * `snapshot` and every other per-device native cap.
10526
+ */
10527
+ deviceNative: true,
10489
10528
  deviceTypes: [DeviceType.Camera, DeviceType.Sensor],
10490
10529
  methods: {
10491
10530
  /**
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-Cu72wsz5.js");
3
+ const require_dist = require("./dist-BxtIzexq.js");
4
4
  const require_model_download_service = require("./model-download-service-hf0ookyy.js");
5
- const require_manifest_python_deps = require("./manifest-python-deps-COgal7Jy.js");
5
+ const require_manifest_python_deps = require("./manifest-python-deps-KZ00cbfP.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,7 +1,7 @@
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 { B as logLevelAtMost, 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, Tt as parseJsonObject, V as looseSchema, W as objectInputDeclaresAddonId, _t as asString$1, c as RUNTIME_DEFAULTS, ct as DEVICE_STATUS_METHOD, ft as ReadinessRegistry, gt as asNumber, ht as asJsonObject$1, it as errMsg$1, jt as EventCategory$1, k as extractNestedAddonId, kt as scopeKey, m as addonSettingsCapability, ot as DATAPLANE_SECRET_HEADER$1, pt as ReadinessTimeoutError, q as procedureAuthKey, s as METHOD_ACCESS_MAP, st as DEVICE_SETTINGS_CONTRIBUTION_METHODS, t as ALL_CAPABILITY_DEFINITIONS, vt as createEvent, xt as expandCapMethods, yt as emitDownForOwnedCaps } from "./dist-DimX9eZy.mjs";
2
+ import { B as logLevelAtMost, 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, Tt as parseJsonObject, V as looseSchema, W as objectInputDeclaresAddonId, _t as asString$1, c as RUNTIME_DEFAULTS, ct as DEVICE_STATUS_METHOD, ft as ReadinessRegistry, gt as asNumber, ht as asJsonObject$1, it as errMsg$1, jt as EventCategory$1, k as extractNestedAddonId, kt as scopeKey, m as addonSettingsCapability, ot as DATAPLANE_SECRET_HEADER$1, pt as ReadinessTimeoutError, q as procedureAuthKey, s as METHOD_ACCESS_MAP, st as DEVICE_SETTINGS_CONTRIBUTION_METHODS, t as ALL_CAPABILITY_DEFINITIONS, vt as createEvent, xt as expandCapMethods, yt as emitDownForOwnedCaps } from "./dist-BXmFvn3h.mjs";
3
3
  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";
4
- 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-julrfvyf.mjs";
4
+ 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-BNOApgK0.mjs";
5
5
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-BkP504Vq.mjs";
6
6
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
7
7
  import { SqliteSettingsAddon, t as SqliteSettingsBackend } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
@@ -1,6 +1,6 @@
1
- import { ServiceBroker } from 'moleculer';
2
1
  import { IEventBus, IScopedLogger } from '@camstack/types';
3
2
  import { ReadinessRegistry } from '@camstack/types/addon';
3
+ import { ServiceBroker } from 'moleculer';
4
4
  /**
5
5
  * Minimal interface for the `LocalChildClient` surface used in UDS-mode
6
6
  * readiness hydration. Declared here (rather than importing the concrete
@@ -63,5 +63,5 @@ declare function getOrInitReadinessRegistry(broker: ServiceBroker, eventBus: IEv
63
63
  * Keep `$readiness.getSnapshot` (broker path) intact — Phase F removes it.
64
64
  */
65
65
  declare function getOrInitReadinessRegistryForClient(client: UdsReadinessClient, eventBus: IEventBus, logger: IScopedLogger, nodeId: string): ReadinessRegistry;
66
- export { getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient };
67
66
  export type { UdsReadinessClient };
67
+ export { getOrInitReadinessRegistry, getOrInitReadinessRegistryForClient };
@@ -6813,8 +6813,8 @@ function getOrInitReadinessRegistry(broker, eventBus, logger) {
6813
6813
  try {
6814
6814
  const snapshot = await bkr.call("$readiness.getSnapshot", {});
6815
6815
  if (Array.isArray(snapshot) && snapshot.length > 0) {
6816
- registry.hydrate(snapshot);
6817
- logger.debug?.(`readiness: hydrated ${snapshot.length} record(s) from hub`);
6816
+ const applied = registry.hydrate(snapshot);
6817
+ if (applied > 0) logger.debug?.(`readiness: hydrated ${applied}/${snapshot.length} record(s) from hub`);
6818
6818
  }
6819
6819
  } catch (err) {
6820
6820
  const msg = err instanceof Error ? err.message : String(err);
@@ -6887,8 +6887,8 @@ function getOrInitReadinessRegistryForClient(client, eventBus, logger, nodeId) {
6887
6887
  try {
6888
6888
  const snapshot = await client.requestReadinessSnapshot();
6889
6889
  if (Array.isArray(snapshot) && snapshot.length > 0) {
6890
- registry.hydrate(snapshot);
6891
- logger.debug?.(`readiness: hydrated ${snapshot.length} record(s) from parent over UDS`);
6890
+ const applied = registry.hydrate(snapshot);
6891
+ if (applied > 0) logger.debug?.(`readiness: hydrated ${applied}/${snapshot.length} record(s) from parent over UDS`);
6892
6892
  }
6893
6893
  } catch (err) {
6894
6894
  const msg = err instanceof Error ? err.message : String(err);
@@ -6815,8 +6815,8 @@ function getOrInitReadinessRegistry(broker, eventBus, logger) {
6815
6815
  try {
6816
6816
  const snapshot = await bkr.call("$readiness.getSnapshot", {});
6817
6817
  if (Array.isArray(snapshot) && snapshot.length > 0) {
6818
- registry.hydrate(snapshot);
6819
- logger.debug?.(`readiness: hydrated ${snapshot.length} record(s) from hub`);
6818
+ const applied = registry.hydrate(snapshot);
6819
+ if (applied > 0) logger.debug?.(`readiness: hydrated ${applied}/${snapshot.length} record(s) from hub`);
6820
6820
  }
6821
6821
  } catch (err) {
6822
6822
  const msg = err instanceof Error ? err.message : String(err);
@@ -6889,8 +6889,8 @@ function getOrInitReadinessRegistryForClient(client, eventBus, logger, nodeId) {
6889
6889
  try {
6890
6890
  const snapshot = await client.requestReadinessSnapshot();
6891
6891
  if (Array.isArray(snapshot) && snapshot.length > 0) {
6892
- registry.hydrate(snapshot);
6893
- logger.debug?.(`readiness: hydrated ${snapshot.length} record(s) from parent over UDS`);
6892
+ const applied = registry.hydrate(snapshot);
6893
+ if (applied > 0) logger.debug?.(`readiness: hydrated ${applied}/${snapshot.length} record(s) from parent over UDS`);
6894
6894
  }
6895
6895
  } catch (err) {
6896
6896
  const msg = err instanceof Error ? err.message : String(err);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.26",
3
+ "version": "1.2.27",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "camstack": {
34
34
  "system": true,
35
- "displayName": "CamStack Core",
35
+ "displayName": "Core",
36
36
  "addons": [
37
37
  {
38
38
  "id": "filesystem-storage",