@camstack/system 1.2.284 → 1.2.286

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 (60) hide show
  1. package/dist/addon-runner.js +1 -1
  2. package/dist/addon-runner.mjs +1 -1
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/autotrack/index.js +1 -1
  10. package/dist/builtins/autotrack/index.mjs +1 -1
  11. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  13. package/dist/builtins/camera-grid/index.js +1 -1
  14. package/dist/builtins/camera-grid/index.mjs +1 -1
  15. package/dist/builtins/console-logging/index.js +1 -1
  16. package/dist/builtins/console-logging/index.mjs +1 -1
  17. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  18. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  19. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  20. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  21. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  22. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  23. package/dist/builtins/hub-forwarder/index.js +1 -1
  24. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  25. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  26. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  27. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  28. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  29. package/dist/builtins/local-network/local-network.addon.js +1 -1
  30. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  31. package/dist/builtins/loki-logging/index.js +1 -1
  32. package/dist/builtins/loki-logging/index.mjs +1 -1
  33. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  34. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  35. package/dist/builtins/platform-probe/index.js +1 -1
  36. package/dist/builtins/platform-probe/index.mjs +1 -1
  37. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  38. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  39. package/dist/builtins/snapshot/index.js +1 -1
  40. package/dist/builtins/snapshot/index.mjs +1 -1
  41. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  42. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  43. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  44. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  46. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  47. package/dist/builtins/system-config/system-config.addon.js +1 -1
  48. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  49. package/dist/builtins/winston-logging/index.js +1 -1
  50. package/dist/builtins/winston-logging/index.mjs +1 -1
  51. package/dist/{dist-DfPOZFAK.mjs → dist-B6uD33b6.mjs} +28 -1
  52. package/dist/{dist-CNptqdlE.js → dist-C2rpGptn.js} +28 -1
  53. package/dist/index.js +2 -2
  54. package/dist/index.mjs +2 -2
  55. package/dist/kernel/transport/cap-routing-hints.d.ts +31 -10
  56. package/dist/{manifest-system-deps-D1L_i2Iv.js → manifest-system-deps-B8ZUclN4.js} +5 -1
  57. package/dist/{manifest-system-deps-DMyJsJWO.mjs → manifest-system-deps-C9T7784z.mjs} +5 -1
  58. package/dist/{retired-settings-keys-Dz2SokeO.mjs → retired-settings-keys-BB798vLn.mjs} +1 -1
  59. package/dist/{retired-settings-keys-BgFiyrY0.js → retired-settings-keys-CZvs6OHE.js} +1 -1
  60. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_manifest_system_deps = require("./manifest-system-deps-D1L_i2Iv.js");
2
+ const require_manifest_system_deps = require("./manifest-system-deps-B8ZUclN4.js");
3
3
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
4
4
  let node_path = require("node:path");
5
5
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { Lt as RUNNER_RSS_BUDGET_ENV, R as LocalChildClient, Xt as startRunnerHeapWatch, a as createUdsAddonContext, at as setWorkerNativeCapsChangeListener, bt as installManifestNativeDeps, cn as emitHeapDiagnosticReport, j as createUdsLoggerWithControl, n as installManifestPythonDeps, nt as getWorkerNativeCapProvider, rt as getWorkerNativeCapSnapshot, st as validateProviderRegistrations, t as installManifestSystemDeps, xt as resolveAddonClass } from "./manifest-system-deps-DMyJsJWO.mjs";
1
+ import { Lt as RUNNER_RSS_BUDGET_ENV, R as LocalChildClient, Xt as startRunnerHeapWatch, a as createUdsAddonContext, at as setWorkerNativeCapsChangeListener, bt as installManifestNativeDeps, cn as emitHeapDiagnosticReport, j as createUdsLoggerWithControl, n as installManifestPythonDeps, nt as getWorkerNativeCapProvider, rt as getWorkerNativeCapSnapshot, st as validateProviderRegistrations, t as installManifestSystemDeps, xt as resolveAddonClass } from "./manifest-system-deps-C9T7784z.mjs";
2
2
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
3
3
  import { register } from "node:module";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Fn as EventCategory, P as addonPagesCapability, cn as BaseAddon, on as errMsg } from "../../dist-DfPOZFAK.mjs";
1
+ import { Fn as EventCategory, P as addonPagesCapability, cn as BaseAddon, on as errMsg } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Fn as EventCategory, I as addonWidgetsCapability, cn as BaseAddon, on as errMsg } from "../../dist-DfPOZFAK.mjs";
1
+ import { Fn as EventCategory, I as addonWidgetsCapability, cn as BaseAddon, on as errMsg } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Fn as EventCategory, L as alertsCapability, cn as BaseAddon, n as AlertSchema, on as errMsg, xn as createEvent } from "../../dist-DfPOZFAK.mjs";
1
+ import { Fn as EventCategory, L as alertsCapability, cn as BaseAddon, n as AlertSchema, on as errMsg, xn as createEvent } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { B as bareAddonId, Dn as isEvent, Fn as EventCategory, Lt as ptzAutotrackCapability, cn as BaseAddon, h as FIRST_LEVEL_MACRO_CLASSES, on as errMsg } from "../../dist-DfPOZFAK.mjs";
1
+ import { B as bareAddonId, Dn as isEvent, Fn as EventCategory, Lt as ptzAutotrackCapability, cn as BaseAddon, h as FIRST_LEVEL_MACRO_CLASSES, on as errMsg } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Dt as mayWriteToLocation, Fn as EventCategory, Qt as storageOccupancyCapability, cn as BaseAddon, z as backupCapability } from "../../dist-DfPOZFAK.mjs";
1
+ import { Dt as mayWriteToLocation, Fn as EventCategory, Qt as storageOccupancyCapability, cn as BaseAddon, z as backupCapability } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { At as motionCapability, Fn as EventCategory, Tn as hydrateSchema, U as cameraGridLayoutCapability, Y as declarationOwnerNodeId, Yt as snapshotCapability, b as MOTION_CLOSE_AFTER_MS, cn as BaseAddon, en as streamCatalogCapability, f as DERIVED_CAMERA_SILENCED_CAP_NAMES, fn as DeviceFeature, i as BaseDevice, mn as DeviceType, on as errMsg, p as DeclaredDevices, sn as buildFfmpegArgs, xn as createEvent } from "../../dist-DfPOZFAK.mjs";
1
+ import { At as motionCapability, Fn as EventCategory, Tn as hydrateSchema, U as cameraGridLayoutCapability, Y as declarationOwnerNodeId, Yt as snapshotCapability, b as MOTION_CLOSE_AFTER_MS, cn as BaseAddon, en as streamCatalogCapability, f as DERIVED_CAMERA_SILENCED_CAP_NAMES, fn as DeviceFeature, i as BaseDevice, mn as DeviceType, on as errMsg, p as DeclaredDevices, sn as buildFfmpegArgs, xn as createEvent } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-DfPOZFAK.mjs";
1
+ import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-B6uD33b6.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-CNptqdlE.js");
3
+ const require_dist = require("../../dist-C2rpGptn.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 { G as coreBlockAddonId, K as coreBlockIdFromAddonId, c as CORE_BLOCKS_ADDON_ID, cn as BaseAddon, l as CORE_BLOCK_ADDON_PREFIX, on as errMsg, p as DeclaredDevices, q as coreBlocksCapability, u as CoreBlockSchema } from "../../dist-DfPOZFAK.mjs";
1
+ import { G as coreBlockAddonId, K as coreBlockIdFromAddonId, c as CORE_BLOCKS_ADDON_ID, cn as BaseAddon, l as CORE_BLOCK_ADDON_PREFIX, on as errMsg, p as DeclaredDevices, q as coreBlocksCapability, u as CoreBlockSchema } from "../../dist-B6uD33b6.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-CNptqdlE.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-BgFiyrY0.js");
6
+ const require_dist = require("../../dist-C2rpGptn.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-CZvs6OHE.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 { $ as deviceStateCapability, Bt as resolveContainerPrimaryChild, D as STREAM_PROFILE_META, En as isDeviceConfigCap, Fn as EventCategory, H as buildStreamParamsConfigSchema, Jt as siteZoneKey, Pn as sleep$1, Pt as parseStreamParamsFormPatch, Q as deviceManagerCapability, St as locationIconKey, Ut as runtimeStatePolicyFor, _n as WELL_KNOWN_TAB_MAP, cn as BaseAddon, et as deviceStatusCapability, fn as DeviceFeature, it as enumerateSchemaFields, jt as normalizeUnit, m as DeviceStatusSchema, mn as DeviceType, o as CAMERA_SWITCH_ORDER, on as errMsg, pn as DeviceRole, rt as enumerateItemArrayFields, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, v as LocationIconIdSchema } from "../../dist-DfPOZFAK.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-Dz2SokeO.mjs";
1
+ import { $ as deviceStateCapability, Bt as resolveContainerPrimaryChild, D as STREAM_PROFILE_META, En as isDeviceConfigCap, Fn as EventCategory, H as buildStreamParamsConfigSchema, Jt as siteZoneKey, Pn as sleep$1, Pt as parseStreamParamsFormPatch, Q as deviceManagerCapability, St as locationIconKey, Ut as runtimeStatePolicyFor, _n as WELL_KNOWN_TAB_MAP, cn as BaseAddon, et as deviceStatusCapability, fn as DeviceFeature, it as enumerateSchemaFields, jt as normalizeUnit, m as DeviceStatusSchema, mn as DeviceType, o as CAMERA_SWITCH_ORDER, on as errMsg, pn as DeviceRole, rt as enumerateItemArrayFields, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, v as LocationIconIdSchema } from "../../dist-B6uD33b6.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-BB798vLn.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { B as bareAddonId, Fn as EventCategory, T as SOURCE_DEVICE_TYPES, at as evaluateSensorEdge, cn as BaseAddon, gt as isSourceCap, ht as isSameAddonId, mn as DeviceType, on as errMsg, tt as doorbellCapability, w as SOURCE_CAPS, xn as createEvent } from "../../dist-DfPOZFAK.mjs";
1
+ import { B as bareAddonId, Fn as EventCategory, T as SOURCE_DEVICE_TYPES, at as evaluateSensorEdge, cn as BaseAddon, gt as isSourceCap, ht as isSameAddonId, mn as DeviceType, on as errMsg, tt as doorbellCapability, w as SOURCE_CAPS, xn as createEvent } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-DfPOZFAK.mjs";
1
+ import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-B6uD33b6.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-CNptqdlE.js");
3
+ const require_dist = require("../../dist-C2rpGptn.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 { C as RecordingStatusSchema, Fn as EventCategory, cn as BaseAddon, on as errMsg, xn as createEvent } from "../../dist-DfPOZFAK.mjs";
1
+ import { C as RecordingStatusSchema, Fn as EventCategory, cn as BaseAddon, on as errMsg, xn as createEvent } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { N as UserRecordSchema, O as ScopedTokenSchema, R as authProviderCapability, cn as BaseAddon, nn as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-DfPOZFAK.mjs";
2
+ import { N as UserRecordSchema, O as ScopedTokenSchema, R as authProviderCapability, cn as BaseAddon, nn as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-B6uD33b6.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-CNptqdlE.js");
3
+ const require_dist = require("../../dist-C2rpGptn.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 { Fn as EventCategory, cn as BaseAddon, xt as localNetworkCapability } from "../../dist-DfPOZFAK.mjs";
1
+ import { Fn as EventCategory, cn as BaseAddon, xt as localNetworkCapability } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-DfPOZFAK.mjs";
1
+ import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.js");
7
7
  let node_fs_promises = require("node:fs/promises");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { Fn as EventCategory, Ot as metricsProviderCapability, Rt as reducePoints, cn as BaseAddon, lt as foldSnapshotByFunction, on as errMsg, xn as createEvent, zt as resolveBucketMs } from "../../dist-DfPOZFAK.mjs";
1
+ import { Fn as EventCategory, Ot as metricsProviderCapability, Rt as reducePoints, cn as BaseAddon, lt as foldSnapshotByFunction, on as errMsg, xn as createEvent, zt as resolveBucketMs } from "../../dist-B6uD33b6.mjs";
2
2
  import { access, readFile, readdir } from "node:fs/promises";
3
3
  import * as fs from "node:fs";
4
4
  import { constants, readFileSync } 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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Cn as emitReadiness, Fn as EventCategory, Ft as platformProbeCapability, Kt as scoreRuntimes, cn as BaseAddon, nt as enumerateInferenceDevices, on as errMsg } from "../../dist-DfPOZFAK.mjs";
2
+ import { Cn as emitReadiness, Fn as EventCategory, Ft as platformProbeCapability, Kt as scoreRuntimes, cn as BaseAddon, nt as enumerateInferenceDevices, on as errMsg } from "../../dist-B6uD33b6.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { execFile } from "node:child_process";
5
5
  import * as os from "node:os";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Fn as EventCategory, cn as BaseAddon } from "../../dist-DfPOZFAK.mjs";
1
+ import { Fn as EventCategory, cn as BaseAddon } from "../../dist-B6uD33b6.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-Cqs7GkOV.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { B as bareAddonId, Fn as EventCategory, On as nodePin, V as batteryCapability, Yt as snapshotCapability, Z as deriveBatteryPresence, a as BatteryStatusSchema, cn as BaseAddon, fn as DeviceFeature, mn as DeviceType, on as errMsg, tn as streamQualityLabel } from "../../dist-DfPOZFAK.mjs";
1
+ import { B as bareAddonId, Fn as EventCategory, On as nodePin, V as batteryCapability, Yt as snapshotCapability, Z as deriveBatteryPresence, a as BatteryStatusSchema, cn as BaseAddon, fn as DeviceFeature, mn as DeviceType, on as errMsg, tn as streamQualityLabel } from "../../dist-B6uD33b6.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CZPvteq2.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { $t as storageProviderCapability, cn as BaseAddon, ct as filesystemBrowseCapability } from "../../dist-DfPOZFAK.mjs";
1
+ import { $t as storageProviderCapability, cn as BaseAddon, ct as filesystemBrowseCapability } from "../../dist-B6uD33b6.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.js");
7
7
  const require_hub_cap_forward = require("../../hub-cap-forward-DmHNjbB0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { A as StorageLocationModeSchema, Dt as mayWriteToLocation, Et as mayReadLocation, Fn as EventCategory, M as StorageMigrationJobSchema, Vt as resolveLocationMode, W as collectSecretConfigKeys, Xt as storageCapability, Zt as storageMigrationCapability, _ as LegacyStorageLocationDefaultSchema, an as withLocationMode, cn as BaseAddon, j as StorageLocationTypeSchema, k as StorageCleanupJobSchema, kn as parseJsonObject, kt as modeMayWrite, ot as evictionPolicyOfLocation, pt as isLocationEnabled, qt as settingsStoreCapability, ut as gbToBytes, x as REDACTED_SECRET, yt as legacyModeOf } from "../../dist-DfPOZFAK.mjs";
1
+ import { A as StorageLocationModeSchema, Dt as mayWriteToLocation, Et as mayReadLocation, Fn as EventCategory, M as StorageMigrationJobSchema, Vt as resolveLocationMode, W as collectSecretConfigKeys, Xt as storageCapability, Zt as storageMigrationCapability, _ as LegacyStorageLocationDefaultSchema, an as withLocationMode, cn as BaseAddon, j as StorageLocationTypeSchema, k as StorageCleanupJobSchema, kn as parseJsonObject, kt as modeMayWrite, ot as evictionPolicyOfLocation, pt as isLocationEnabled, qt as settingsStoreCapability, ut as gbToBytes, x as REDACTED_SECRET, yt as legacyModeOf } from "../../dist-B6uD33b6.mjs";
2
2
  import { t as HUB_CAP_FWD_ACTION } from "../../hub-cap-forward-BdT320dq.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Tn as hydrateSchema, cn as BaseAddon, on as errMsg } from "../../dist-DfPOZFAK.mjs";
1
+ import { Tn as hydrateSchema, cn as BaseAddon, on as errMsg } from "../../dist-B6uD33b6.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-CNptqdlE.js");
6
+ const require_dist = require("../../dist-C2rpGptn.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-DfPOZFAK.mjs";
1
+ import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-B6uD33b6.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";
@@ -39976,12 +39976,39 @@ function rank(type) {
39976
39976
  * must decide what an empty container means for it, rather than being handed a
39977
39977
  * child that is not there.
39978
39978
  */
39979
+ /**
39980
+ * Two names for the same thing, compared the way an integration writes them.
39981
+ *
39982
+ * An exact case-insensitive match was not enough, and the failure was total
39983
+ * rather than marginal. An ESPHome shutter arrives as a container named
39984
+ * `Tapparella-Cucina` whose children include the COVER, named `Tapparella
39985
+ * cucina`, and a device-presence entity carrying the slug verbatim,
39986
+ * `tapparella-cucina`. The slug matched the container exactly and the cover
39987
+ * did not, so the namesake tie-break handed the container to a connectivity
39988
+ * indicator — and the viewer's accessory panel, which correctly shows only
39989
+ * children with an actuating control, then rendered NOTHING. The operator saw
39990
+ * no shutters at all on cucina, studio and both veranda cameras (2026-09-22).
39991
+ *
39992
+ * `Markise` was the control case that proved the mechanism: there the cover
39993
+ * really is called exactly like its container, so it won and appeared.
39994
+ *
39995
+ * Separators are therefore normalised — `-`, `_` and whitespace are the same
39996
+ * character for this comparison, and runs of them collapse. The two candidates
39997
+ * then tie on the namesake and the decision falls through to `rank(type)`,
39998
+ * where `cover` is eighth and a `presence` entity is not listed at all. The
39999
+ * criterion keeps doing its job for a container whose child IS the namesake;
40000
+ * it stops being decided by which integration used a hyphen.
40001
+ */
40002
+ function sameName(childName, containerName) {
40003
+ const flatten = (v) => v.toLowerCase().replace(/[-_\s]+/g, " ").trim();
40004
+ return flatten(childName) === flatten(containerName);
40005
+ }
39979
40006
  function resolveContainerPrimaryChild(children, overrideEntityId, containerName) {
39980
40007
  if (overrideEntityId !== void 0 && overrideEntityId !== null) {
39981
40008
  const picked = children.find((c) => c.stableId === overrideEntityId) ?? children.find((c) => c.entityId !== void 0 && c.entityId === overrideEntityId);
39982
40009
  if (picked !== void 0) return picked;
39983
40010
  }
39984
- const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && c.name.toLowerCase() === containerName.toLowerCase() ? 0 : 1;
40011
+ const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && sameName(c.name, containerName) ? 0 : 1;
39985
40012
  return [...children].toSorted((a, b) => roleRank(a.role) - roleRank(b.role) || namesake(a) - namesake(b) || rank(a.type) - rank(b.type))[0] ?? null;
39986
40013
  }
39987
40014
  /** Marker written to a declared integration's `info`. */
@@ -39976,12 +39976,39 @@ function rank(type) {
39976
39976
  * must decide what an empty container means for it, rather than being handed a
39977
39977
  * child that is not there.
39978
39978
  */
39979
+ /**
39980
+ * Two names for the same thing, compared the way an integration writes them.
39981
+ *
39982
+ * An exact case-insensitive match was not enough, and the failure was total
39983
+ * rather than marginal. An ESPHome shutter arrives as a container named
39984
+ * `Tapparella-Cucina` whose children include the COVER, named `Tapparella
39985
+ * cucina`, and a device-presence entity carrying the slug verbatim,
39986
+ * `tapparella-cucina`. The slug matched the container exactly and the cover
39987
+ * did not, so the namesake tie-break handed the container to a connectivity
39988
+ * indicator — and the viewer's accessory panel, which correctly shows only
39989
+ * children with an actuating control, then rendered NOTHING. The operator saw
39990
+ * no shutters at all on cucina, studio and both veranda cameras (2026-09-22).
39991
+ *
39992
+ * `Markise` was the control case that proved the mechanism: there the cover
39993
+ * really is called exactly like its container, so it won and appeared.
39994
+ *
39995
+ * Separators are therefore normalised — `-`, `_` and whitespace are the same
39996
+ * character for this comparison, and runs of them collapse. The two candidates
39997
+ * then tie on the namesake and the decision falls through to `rank(type)`,
39998
+ * where `cover` is eighth and a `presence` entity is not listed at all. The
39999
+ * criterion keeps doing its job for a container whose child IS the namesake;
40000
+ * it stops being decided by which integration used a hyphen.
40001
+ */
40002
+ function sameName(childName, containerName) {
40003
+ const flatten = (v) => v.toLowerCase().replace(/[-_\s]+/g, " ").trim();
40004
+ return flatten(childName) === flatten(containerName);
40005
+ }
39979
40006
  function resolveContainerPrimaryChild(children, overrideEntityId, containerName) {
39980
40007
  if (overrideEntityId !== void 0 && overrideEntityId !== null) {
39981
40008
  const picked = children.find((c) => c.stableId === overrideEntityId) ?? children.find((c) => c.entityId !== void 0 && c.entityId === overrideEntityId);
39982
40009
  if (picked !== void 0) return picked;
39983
40010
  }
39984
- const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && c.name.toLowerCase() === containerName.toLowerCase() ? 0 : 1;
40011
+ const namesake = (c) => containerName !== void 0 && containerName.length > 0 && c.name !== void 0 && sameName(c.name, containerName) ? 0 : 1;
39985
40012
  return [...children].toSorted((a, b) => roleRank(a.role) - roleRank(b.role) || namesake(a) - namesake(b) || rank(a.type) - rank(b.type))[0] ?? null;
39986
40013
  }
39987
40014
  /** Marker written to a declared integration's `info`. */
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-CNptqdlE.js");
3
+ const require_dist = require("./dist-C2rpGptn.js");
4
4
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
5
5
  require("./builtins/alerts/index.js");
6
6
  const require_formatter = require("./formatter-DqAKDlvN.js");
@@ -27,7 +27,7 @@ require("./builtins/system-config/index.js");
27
27
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
28
28
  const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-CAsHdMwP.js");
29
29
  const require_tls$1 = require("./tls-D_wUeOTD.js");
30
- const require_manifest_system_deps = require("./manifest-system-deps-D1L_i2Iv.js");
30
+ const require_manifest_system_deps = require("./manifest-system-deps-B8ZUclN4.js");
31
31
  const require_resource_monitor = require("./resource-monitor-LVE1BoLs.js");
32
32
  const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
33
33
  let zod = require("zod");
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM$1, r as __exportAll, t as __commonJSMin$1 } from "./chunk-CNf5ZN-e.mjs";
2
- import { An as parseJsonUnknown, F as addonSettingsCapability, Fn as EventCategory$1, Gt as scopesAllowDeviceCap, Ht as resolveMethodAuth, It as procedureAuthKey, Mn as resolveCapMount, Mt as objectInputDeclaresAddonId, Nn as scopeKey, Nt as objectInputDeclaresRequiredDeviceId, S as RUNTIME_DEFAULTS, Sn as emitDownForOwnedCaps, Tt as looseSchema, Wt as scopesAllowAddon, _t as isVoidInput, bn as asString$1, bt as lifecycleJobSchema, dn as DEVICE_STATUS_METHOD, dt as isArrayOutputSchema, ft as isCollectionArrayMethod, g as LOG_LEVEL_RANK, gn as ReadinessTimeoutError, hn as ReadinessRegistry, jn as readinessKey, kn as parseJsonObject, ln as DATAPLANE_SECRET_HEADER$1, mt as isObjectInput, on as errMsg$1, st as extractNestedAddonId, t as ALL_CAPABILITY_DEFINITIONS, un as DEVICE_SETTINGS_CONTRIBUTION_METHODS, vn as asJsonObject$1, vt as kebabToCamel, wn as expandCapMethods, wt as logLevelAtMost, xn as createEvent, y as METHOD_ACCESS_MAP, yn as asNumber } from "./dist-DfPOZFAK.mjs";
2
+ import { An as parseJsonUnknown, F as addonSettingsCapability, Fn as EventCategory$1, Gt as scopesAllowDeviceCap, Ht as resolveMethodAuth, It as procedureAuthKey, Mn as resolveCapMount, Mt as objectInputDeclaresAddonId, Nn as scopeKey, Nt as objectInputDeclaresRequiredDeviceId, S as RUNTIME_DEFAULTS, Sn as emitDownForOwnedCaps, Tt as looseSchema, Wt as scopesAllowAddon, _t as isVoidInput, bn as asString$1, bt as lifecycleJobSchema, dn as DEVICE_STATUS_METHOD, dt as isArrayOutputSchema, ft as isCollectionArrayMethod, g as LOG_LEVEL_RANK, gn as ReadinessTimeoutError, hn as ReadinessRegistry, jn as readinessKey, kn as parseJsonObject, ln as DATAPLANE_SECRET_HEADER$1, mt as isObjectInput, on as errMsg$1, st as extractNestedAddonId, t as ALL_CAPABILITY_DEFINITIONS, un as DEVICE_SETTINGS_CONTRIBUTION_METHODS, vn as asJsonObject$1, vt as kebabToCamel, wn as expandCapMethods, wt as logLevelAtMost, xn as createEvent, y as METHOD_ACCESS_MAP, yn as asNumber } from "./dist-B6uD33b6.mjs";
3
3
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
4
4
  import "./builtins/alerts/index.mjs";
5
5
  import { t as formatLogLine } from "./formatter-B7qW8bPJ.mjs";
@@ -26,7 +26,7 @@ import "./builtins/system-config/index.mjs";
26
26
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
27
27
  import { _ as fetchJson, a as createFileDataPlaneHandler, c as parseRangeHeader, d as ModelDownloadService, f as collectModelFiles, g as ensureModel, h as downloadModel, i as startEventLoopStallMonitor, l as parseTokenizedUrl, m as downloadFile, n as STALL_TICK_MS, o as contentTypeFor, p as deleteModelFromDisk, r as attributeStall, s as createAuthenticatedFileServer, t as STALL_REPORT_MS, u as resolveFilePath, v as getModelFilePath, y as isModelDownloaded } from "./event-loop-stall-monitor-GPrVvx14.mjs";
28
28
  import { C as registerLanHttpHandler, S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, b as bindPendingLanHttp, c as loadTlsCert, d as collectCertIdentity, f as CA_VALIDITY_DAYS, g as evaluateExistingCert, h as SERVER_AUTH_OID, i as writeExtraSans, l as reissueTlsLeaf, m as MAX_LEAF_VALIDITY_DAYS, n as readTlsAccessStatus, o as validateUploadedTls, p as LEAF_RENEWAL_WINDOW_DAYS, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, u as CA_COMMON_NAME, v as allFamiliesListenHost, x as closeLanHttp, y as applyLanHttp } from "./tls-IM-v7JV4.mjs";
29
- import { $ as buildNativeCapProxy, $t as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, A as createUdsLogger, An as createSocketDirectionCounters, At as HEAP_WATCH_WARN_RATIO, B as UDS_NO_ROUTE_PREFIX, Bn as createCapActionCensus, Bt as createDeferredHeapWatchSink, C as deviceCapResolverLink, Cn as SOCKET_QUEUE_TOP_N, Ct as resolveNpmInvocation, D as createUdsEventBridge, Dn as formatSocketPlane, Dt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, E as createParentUnownedCallHandler, En as diffSocketPlane, Et as HEAP_RECLAIM_MIN_INTERVAL_MS, F as callWithServiceDiscovery, Fn as CAP_ACTION_OVERFLOW_LABEL, Ft as RSS_BUDGET_RELEASE_RATIO, G as getCapUsageRegistry, Gn as diffEventPlane, Gt as nextRssBudgetState, H as CapUsageRegistry, Hn as EVENT_PLANE_TOP_N, Ht as createV8Reclaimer, I as CapRouteError, In as CAP_ACTION_UNLABELLED, It as RUNNER_HEAP_WATCH_INTERVAL_MS, J as UdsLocalTransportServer, Jt as shouldReclaim, K as createLocalTransport, Kn as formatEventPlane, Kt as parseRssBudgetMb, L as classifyCapRoute, Ln as EMPTY_CAP_ACTION_READING, Lt as RUNNER_RSS_BUDGET_ENV, M as AGENT_CAP_FWD_ACTION, Mn as sampleSocketDirection, Mt as HUB_MAIN_RSS_BUDGET_MB, N as AGENT_CAP_FWD_SERVICE, Nn as socketDirectionBytes, Nt as HUB_RSS_BUDGET_ENV, O as createUdsEventBus, On as readSocketQueues, Ot as HEAP_RECLAIM_TRIGGER_MB, P as CapRouteResolver, Pn as socketDirectionMessages, Pt as RSS_BUDGET_REANNOUNCE_MIN_MS, Q as encodeFrame, Qt as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, R as LocalChildClient, Rn as MAX_CAP_ACTIONS_PER_PEER, Rt as ZERO_LOOP_DELAY, S as buildLinkChain, Sn as SOCKET_PLANE_TOP_N, St as buildNpmChildEnv, T as localProviderLink, Tn as createSocketPlaneReader, Tt as createAddonDataPlaneFacility, U as PARENT_ROUTED_PROVIDER_ADDON_ID, Un as createEventPlaneMeter, Ut as describeRss, V as readMoleculerFanoutMode, Vn as diffCapActionCensus, Vt as createLoopDelayMeter, W as __resetCapUsageRegistryForTests, Wn as createEventPlaneReader, Wt as hubMainRssBudget, X as localEndpointPath, Xt as startRunnerHeapWatch, Y as SocketChannel, Yt as startHeapWatch, Z as FrameDecoder, Zt as strandedMb, _ as AddonDepsManager, _n as formatOutboundQueueVerdict, _t as CapabilityHandle, a as createUdsAddonContext, an as isArrayBufferCensusReport, b as brokerCallForCap, bn as formatMeshQueue, bt as installManifestNativeDeps, c as getOrInitReadinessRegistryForClient, cn as emitHeapDiagnosticReport, ct as NATIVE_PROVIDER_SERVICE_INFIX, d as clusterEventTopic, dn as readHeapSpaces, dt as capBareAction, en as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, et as buildUdsNativeCapProxy, f as getBrokerEventBus, fn as selectReportedSpaces, ft as capServiceName, g as subscribePassthrough, gn as createOutboundQueueGate, gt as DeviceRegistry, h as setNodeEventInterest, hn as OUTBOUND_QUEUE_THRESHOLD_BYTES, ht as serializeTypedArrays, i as createAddonContext, in as formatArrayBufferCensus, it as mountNativeCapService, j as createUdsLoggerWithControl, jn as recordSocketFrame, jt as HUB_MAIN_HEAP_WATCH_LABEL, k as udsChildLogToWorkerEntry, kn as EMPTY_SOCKET_DIRECTION, kt as HEAP_WATCH_INTERVAL_MS, l as setHubConnected, ln as formatHeapSpaces, lt as capActionName, m as registerEventBusService, mn as OUTBOUND_QUEUE_SUSTAIN_MS, mt as deserializeTypedArrays, n as installManifestPythonDeps, nn as createArrayBufferCensusGate, o as getWorkerDeviceRegistry, on as DECISIVE_HEAP_SPACES, ot as createAddonService, p as getMoleculerEventStats, pn as OUTBOUND_QUEUE_COOLDOWN_MS, pt as parseCapAction, q as UdsLocalTransportClient, qt as reclaimIntervalMs, r as adaptBrokerToCluster, rn as createInspectorArrayBufferCensus, s as getOrInitReadinessRegistry, sn as HEAP_SPACE_REPORT_MIN_MB, st as validateProviderRegistrations, t as installManifestSystemDeps, tn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, tt as createBrokerDeviceManagerApi, u as EVENT_TOPIC_PREFIX, un as heapSpaceField, ut as capActionSuffix, v as createKernelHwAccel, vn as MESH_QUEUE_TOP_N, vt as CapabilityUnavailableError, w as ipcParentLink, wn as createSocketPlaneMeter, wt as runNpm, x as brokerTransportLink, xn as EMPTY_SOCKET_PLANE_BASELINE, xt as resolveAddonClass, y as resolveHwAccel, yn as createMeshQueueReader, yt as copyBundledNativeModules, z as LocalChildRegistry, zn as capActionLabel, zt as buildHeapSample } from "./manifest-system-deps-DMyJsJWO.mjs";
29
+ import { $ as buildNativeCapProxy, $t as ARRAY_BUFFER_CENSUS_SUSTAIN_MS, A as createUdsLogger, An as createSocketDirectionCounters, At as HEAP_WATCH_WARN_RATIO, B as UDS_NO_ROUTE_PREFIX, Bn as createCapActionCensus, Bt as createDeferredHeapWatchSink, C as deviceCapResolverLink, Cn as SOCKET_QUEUE_TOP_N, Ct as resolveNpmInvocation, D as createUdsEventBridge, Dn as formatSocketPlane, Dt as HEAP_RECLAIM_STEADY_STATE_INTERVAL_MS, E as createParentUnownedCallHandler, En as diffSocketPlane, Et as HEAP_RECLAIM_MIN_INTERVAL_MS, F as callWithServiceDiscovery, Fn as CAP_ACTION_OVERFLOW_LABEL, Ft as RSS_BUDGET_RELEASE_RATIO, G as getCapUsageRegistry, Gn as diffEventPlane, Gt as nextRssBudgetState, H as CapUsageRegistry, Hn as EVENT_PLANE_TOP_N, Ht as createV8Reclaimer, I as CapRouteError, In as CAP_ACTION_UNLABELLED, It as RUNNER_HEAP_WATCH_INTERVAL_MS, J as UdsLocalTransportServer, Jt as shouldReclaim, K as createLocalTransport, Kn as formatEventPlane, Kt as parseRssBudgetMb, L as classifyCapRoute, Ln as EMPTY_CAP_ACTION_READING, Lt as RUNNER_RSS_BUDGET_ENV, M as AGENT_CAP_FWD_ACTION, Mn as sampleSocketDirection, Mt as HUB_MAIN_RSS_BUDGET_MB, N as AGENT_CAP_FWD_SERVICE, Nn as socketDirectionBytes, Nt as HUB_RSS_BUDGET_ENV, O as createUdsEventBus, On as readSocketQueues, Ot as HEAP_RECLAIM_TRIGGER_MB, P as CapRouteResolver, Pn as socketDirectionMessages, Pt as RSS_BUDGET_REANNOUNCE_MIN_MS, Q as encodeFrame, Qt as ARRAY_BUFFER_CENSUS_COOLDOWN_MS, R as LocalChildClient, Rn as MAX_CAP_ACTIONS_PER_PEER, Rt as ZERO_LOOP_DELAY, S as buildLinkChain, Sn as SOCKET_PLANE_TOP_N, St as buildNpmChildEnv, T as localProviderLink, Tn as createSocketPlaneReader, Tt as createAddonDataPlaneFacility, U as PARENT_ROUTED_PROVIDER_ADDON_ID, Un as createEventPlaneMeter, Ut as describeRss, V as readMoleculerFanoutMode, Vn as diffCapActionCensus, Vt as createLoopDelayMeter, W as __resetCapUsageRegistryForTests, Wn as createEventPlaneReader, Wt as hubMainRssBudget, X as localEndpointPath, Xt as startRunnerHeapWatch, Y as SocketChannel, Yt as startHeapWatch, Z as FrameDecoder, Zt as strandedMb, _ as AddonDepsManager, _n as formatOutboundQueueVerdict, _t as CapabilityHandle, a as createUdsAddonContext, an as isArrayBufferCensusReport, b as brokerCallForCap, bn as formatMeshQueue, bt as installManifestNativeDeps, c as getOrInitReadinessRegistryForClient, cn as emitHeapDiagnosticReport, ct as NATIVE_PROVIDER_SERVICE_INFIX, d as clusterEventTopic, dn as readHeapSpaces, dt as capBareAction, en as ARRAY_BUFFER_CENSUS_THRESHOLD_MB, et as buildUdsNativeCapProxy, f as getBrokerEventBus, fn as selectReportedSpaces, ft as capServiceName, g as subscribePassthrough, gn as createOutboundQueueGate, gt as DeviceRegistry, h as setNodeEventInterest, hn as OUTBOUND_QUEUE_THRESHOLD_BYTES, ht as serializeTypedArrays, i as createAddonContext, in as formatArrayBufferCensus, it as mountNativeCapService, j as createUdsLoggerWithControl, jn as recordSocketFrame, jt as HUB_MAIN_HEAP_WATCH_LABEL, k as udsChildLogToWorkerEntry, kn as EMPTY_SOCKET_DIRECTION, kt as HEAP_WATCH_INTERVAL_MS, l as setHubConnected, ln as formatHeapSpaces, lt as capActionName, m as registerEventBusService, mn as OUTBOUND_QUEUE_SUSTAIN_MS, mt as deserializeTypedArrays, n as installManifestPythonDeps, nn as createArrayBufferCensusGate, o as getWorkerDeviceRegistry, on as DECISIVE_HEAP_SPACES, ot as createAddonService, p as getMoleculerEventStats, pn as OUTBOUND_QUEUE_COOLDOWN_MS, pt as parseCapAction, q as UdsLocalTransportClient, qt as reclaimIntervalMs, r as adaptBrokerToCluster, rn as createInspectorArrayBufferCensus, s as getOrInitReadinessRegistry, sn as HEAP_SPACE_REPORT_MIN_MB, st as validateProviderRegistrations, t as installManifestSystemDeps, tn as ARRAY_BUFFER_RELEASE_MIN_DROP_RATIO, tt as createBrokerDeviceManagerApi, u as EVENT_TOPIC_PREFIX, un as heapSpaceField, ut as capActionSuffix, v as createKernelHwAccel, vn as MESH_QUEUE_TOP_N, vt as CapabilityUnavailableError, w as ipcParentLink, wn as createSocketPlaneMeter, wt as runNpm, x as brokerTransportLink, xn as EMPTY_SOCKET_PLANE_BASELINE, xt as resolveAddonClass, y as resolveHwAccel, yn as createMeshQueueReader, yt as copyBundledNativeModules, z as LocalChildRegistry, zn as capActionLabel, zt as buildHeapSample } from "./manifest-system-deps-C9T7784z.mjs";
30
30
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-Vp0bPV3U.mjs";
31
31
  import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
32
32
  import { z } from "zod";
@@ -1,21 +1,42 @@
1
1
  /**
2
2
  * The routing facts a parent reads OUT OF a cap call's args.
3
3
  *
4
- * `LocalChildRegistry` routes a child's `cap-call-out` on two things it used
5
- * to read straight out of `args`: an inline `nodeId` (the historical per-call
6
- * node pin — `extractNodeId`) and an `addonId` selector on a collection cap
7
- * (`addonPinOf`). Under raw-forward the parent never decodes `args`, so the
8
- * SENDER lifts those two fields into the envelope, and the parent routes on
9
- * the lifted copy in both modes — one code path, whichever way the args
10
- * travelled.
4
+ * `LocalChildRegistry` routes a child's `cap-call-out` on things it used to
5
+ * read straight out of `args`: an inline `nodeId` (the historical per-call
6
+ * node pin — `extractNodeId`), an `addonId` selector on a global collection
7
+ * cap (`addonPinOf`), and — since D595 — the `provider` pin of a DEVICE
8
+ * collection with the `deviceId` it applies to (`devicePinOf`). Under
9
+ * raw-forward the parent never decodes `args`, so the SENDER lifts these
10
+ * fields into the envelope, and the parent routes on the lifted copy in both
11
+ * modes — one code path, whichever way the args travelled.
11
12
  *
12
- * Only top-level string fields are lifted, which is exactly what the two
13
- * readers ever looked at. Nothing else about the args is visible to the
14
- * parent under raw-forward, and that is the point.
13
+ * ## Why `provider` and `deviceId` had to join them
14
+ *
15
+ * A field this envelope does not carry is a field the routing DECISION cannot
16
+ * see, and that decision runs BEFORE `onUnownedCall`. D594 taught
17
+ * `onUnownedCall` to honour a `{ provider }` pin on `videoclips` and wired
18
+ * `isAddonPinnedCall` to recognise it — but `isAddonPinnedCall` is handed
19
+ * THESE hints, not the args, so the predicate saw `{}`, answered false, and
20
+ * the call was short-circuited to a sibling before the handler it was written
21
+ * for could run. Correct and unreachable: the exact failure `addonPinOf`'s
22
+ * own docblock records for the first attempt at the `addonId` fix, reproduced
23
+ * a month later on the same shape (2026-09-22).
24
+ *
25
+ * `deviceId` rides along because a device pin is meaningless without it —
26
+ * `provider` alone cannot say WHICH device's sources to narrow, and a pin that
27
+ * cannot be resolved is not a pin.
28
+ *
29
+ * Only top-level scalar fields are lifted, which is exactly what the readers
30
+ * ever looked at. Nothing else about the args is visible to the parent under
31
+ * raw-forward, and that is the point.
15
32
  */
16
33
  export interface CapRoutingHints {
17
34
  readonly nodeId?: string;
18
35
  readonly addonId?: string;
36
+ /** The `{ provider }` pin of a device-collection cap (D554, D594). */
37
+ readonly provider?: string;
38
+ /** The device that pin applies to. Lifted with it, never without it. */
39
+ readonly deviceId?: number;
19
40
  }
20
41
  /** Lift {@link CapRoutingHints} from a call's args. Never throws. */
21
42
  export declare function liftRoutingHints(args: unknown): CapRoutingHints;
@@ -7380,9 +7380,13 @@ function liftRoutingHints(args) {
7380
7380
  if (args === null || typeof args !== "object" || Array.isArray(args)) return {};
7381
7381
  const nodeId = Reflect.get(args, "nodeId");
7382
7382
  const addonId = Reflect.get(args, "addonId");
7383
+ const provider = Reflect.get(args, "provider");
7384
+ const deviceId = Reflect.get(args, "deviceId");
7383
7385
  return {
7384
7386
  ...typeof nodeId === "string" && nodeId.length > 0 ? { nodeId } : {},
7385
- ...typeof addonId === "string" && addonId.length > 0 ? { addonId } : {}
7387
+ ...typeof addonId === "string" && addonId.length > 0 ? { addonId } : {},
7388
+ ...typeof provider === "string" && provider.length > 0 ? { provider } : {},
7389
+ ...typeof deviceId === "number" && Number.isFinite(deviceId) ? { deviceId } : {}
7386
7390
  };
7387
7391
  }
7388
7392
  function readFanoutMode() {
@@ -7377,9 +7377,13 @@ function liftRoutingHints(args) {
7377
7377
  if (args === null || typeof args !== "object" || Array.isArray(args)) return {};
7378
7378
  const nodeId = Reflect.get(args, "nodeId");
7379
7379
  const addonId = Reflect.get(args, "addonId");
7380
+ const provider = Reflect.get(args, "provider");
7381
+ const deviceId = Reflect.get(args, "deviceId");
7380
7382
  return {
7381
7383
  ...typeof nodeId === "string" && nodeId.length > 0 ? { nodeId } : {},
7382
- ...typeof addonId === "string" && addonId.length > 0 ? { addonId } : {}
7384
+ ...typeof addonId === "string" && addonId.length > 0 ? { addonId } : {},
7385
+ ...typeof provider === "string" && provider.length > 0 ? { provider } : {},
7386
+ ...typeof deviceId === "number" && Number.isFinite(deviceId) ? { deviceId } : {}
7383
7387
  };
7384
7388
  }
7385
7389
  function readFanoutMode() {
@@ -1,4 +1,4 @@
1
- import { vn as asJsonObject } from "./dist-DfPOZFAK.mjs";
1
+ import { vn as asJsonObject } from "./dist-B6uD33b6.mjs";
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-CNptqdlE.js");
1
+ const require_dist = require("./dist-C2rpGptn.js");
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.284",
3
+ "version": "1.2.286",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",