@camstack/system 1.2.194 → 1.2.196

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 (51) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  8. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  9. package/dist/builtins/console-logging/index.js +1 -1
  10. package/dist/builtins/console-logging/index.mjs +1 -1
  11. package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
  12. package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
  13. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  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/liveness-monitor/liveness-monitor.addon.js +1 -1
  20. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  21. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  22. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  23. package/dist/builtins/local-network/local-network.addon.js +1 -1
  24. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  25. package/dist/builtins/loki-logging/index.js +1 -1
  26. package/dist/builtins/loki-logging/index.mjs +1 -1
  27. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  28. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  29. package/dist/builtins/platform-probe/index.js +1 -1
  30. package/dist/builtins/platform-probe/index.mjs +1 -1
  31. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  32. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  33. package/dist/builtins/snapshot/index.js +1 -1
  34. package/dist/builtins/snapshot/index.mjs +1 -1
  35. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  36. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  37. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
  38. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
  39. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  40. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  41. package/dist/builtins/system-config/system-config.addon.js +1 -1
  42. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  43. package/dist/builtins/winston-logging/index.js +1 -1
  44. package/dist/builtins/winston-logging/index.mjs +1 -1
  45. package/dist/{dist-C7g13BfN.js → dist-BNaW68aZ.js} +130 -2
  46. package/dist/{dist-DwFNOn8R.mjs → dist-DWnHJI2T.mjs} +130 -2
  47. package/dist/index.js +1 -1
  48. package/dist/index.mjs +1 -1
  49. package/dist/{retired-settings-keys-BT_YDV75.js → retired-settings-keys-FwgzdSHJ.js} +1 -1
  50. package/dist/{retired-settings-keys-JFxrynI0.mjs → retired-settings-keys-cjLVvYV0.mjs} +1 -1
  51. package/package.json +1 -1
@@ -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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { D as addonPagesCapability, Ft as errMsg, It as BaseAddon, cn as EventCategory } from "../../dist-DwFNOn8R.mjs";
1
+ import { D as addonPagesCapability, Ft as errMsg, It as BaseAddon, cn as EventCategory } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { Ft as errMsg, It as BaseAddon, cn as EventCategory, k as addonWidgetsCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { Ft as errMsg, It as BaseAddon, cn as EventCategory, k as addonWidgetsCapability } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { A as alertsCapability, Ft as errMsg, It as BaseAddon, Yt as createEvent, cn as EventCategory, n as AlertSchema } from "../../dist-DwFNOn8R.mjs";
1
+ import { A as alertsCapability, Ft as errMsg, It as BaseAddon, Yt as createEvent, cn as EventCategory, n as AlertSchema } from "../../dist-DWnHJI2T.mjs";
2
2
  //#region src/builtins/alerts/prune-policy.ts
3
3
  /**
4
4
  * Ids older than `cutoffMs`, oldest first.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { It as BaseAddon, M as backupCapability, cn as EventCategory } from "../../dist-DwFNOn8R.mjs";
1
+ import { It as BaseAddon, M as backupCapability, cn as EventCategory } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
3
+ const require_dist = require("../../dist-BNaW68aZ.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 { Ft as errMsg, It as BaseAddon, L as coreBlockAddonId, R as coreBlockIdFromAddonId, c as CORE_BLOCK_ADDON_PREFIX, d as DeclaredDevices, l as CoreBlockSchema, s as CORE_BLOCKS_ADDON_ID, z as coreBlocksCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { Ft as errMsg, It as BaseAddon, L as coreBlockAddonId, R as coreBlockIdFromAddonId, c as CORE_BLOCK_ADDON_PREFIX, d as DeclaredDevices, l as CoreBlockSchema, s as CORE_BLOCKS_ADDON_ID, z as coreBlocksCapability } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-BT_YDV75.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-FwgzdSHJ.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 { Bt as DeviceFeature, F as buildStreamParamsConfigSchema, Ft as errMsg, G as deviceStatusCapability, Gt as WELL_KNOWN_TAB_MAP, Ht as DeviceType, It as BaseAddon, J as enumerateItemArrayFields, St as runtimeStatePolicyFor, U as deviceManagerCapability, Vt as DeviceRole, W as deviceStateCapability, Y as enumerateSchemaFields, a as CAMERA_SWITCH_ORDER, bt as resolveContainerPrimaryChild, cn as EventCategory, en as isDeviceConfigCap, f as DeviceStatusSchema, ht as parseStreamParamsFormPatch, o as CAP_NAMES_WITH_STATUS, pt as normalizeUnit, sn as sleep, t as ALL_CAPABILITY_DEFINITIONS, x as STREAM_PROFILE_META } from "../../dist-DwFNOn8R.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-JFxrynI0.mjs";
1
+ import { Bt as DeviceFeature, F as buildStreamParamsConfigSchema, Ft as errMsg, G as deviceStatusCapability, Gt as WELL_KNOWN_TAB_MAP, Ht as DeviceType, It as BaseAddon, J as enumerateItemArrayFields, St as runtimeStatePolicyFor, U as deviceManagerCapability, Vt as DeviceRole, W as deviceStateCapability, Y as enumerateSchemaFields, a as CAMERA_SWITCH_ORDER, bt as resolveContainerPrimaryChild, cn as EventCategory, en as isDeviceConfigCap, f as DeviceStatusSchema, ht as parseStreamParamsFormPatch, o as CAP_NAMES_WITH_STATUS, pt as normalizeUnit, sn as sleep, t as ALL_CAPABILITY_DEFINITIONS, x as STREAM_PROFILE_META } from "../../dist-DWnHJI2T.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-cjLVvYV0.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { Ft as errMsg, Ht as DeviceType, It as BaseAddon, K as doorbellCapability, N as bareAddonId, X as evaluateSensorEdge, Yt as createEvent, cn as EventCategory, it as isSourceCap, rt as isSameAddonId, v as SOURCE_CAPS, y as SOURCE_DEVICE_TYPES } from "../../dist-DwFNOn8R.mjs";
1
+ import { Ft as errMsg, Ht as DeviceType, It as BaseAddon, K as doorbellCapability, N as bareAddonId, X as evaluateSensorEdge, Yt as createEvent, cn as EventCategory, it as isSourceCap, rt as isSameAddonId, v as SOURCE_CAPS, y as SOURCE_DEVICE_TYPES } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
3
+ const require_dist = require("../../dist-BNaW68aZ.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 { Ft as errMsg, It as BaseAddon, Yt as createEvent, _ as RecordingStatusSchema, cn as EventCategory } from "../../dist-DwFNOn8R.mjs";
1
+ import { Ft as errMsg, It as BaseAddon, Yt as createEvent, _ as RecordingStatusSchema, cn as EventCategory } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { E as UserRecordSchema, It as BaseAddon, Mt as userManagementCapability, S as ScopedTokenSchema, j as authProviderCapability, r as ApiKeyRecordSchema } from "../../dist-DwFNOn8R.mjs";
2
+ import { E as UserRecordSchema, It as BaseAddon, Mt as userManagementCapability, S as ScopedTokenSchema, j as authProviderCapability, r as ApiKeyRecordSchema } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
3
+ const require_dist = require("../../dist-BNaW68aZ.js");
4
4
  const require_tls = require("../../tls-BxQlomxd.js");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { It as BaseAddon, cn as EventCategory, ct as localNetworkCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { It as BaseAddon, cn as EventCategory, ct as localNetworkCapability } from "../../dist-DWnHJI2T.mjs";
2
2
  import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-DOTmtLCW.mjs";
3
3
  import { mkdir, writeFile } from "node:fs/promises";
4
4
  import { join } from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.js");
7
7
  let node_fs_promises = require("node:fs/promises");
8
8
  let node_child_process = require("node:child_process");
9
9
  let node_util = require("node:util");
@@ -1,4 +1,4 @@
1
- import { $ as foldSnapshotByFunction, Ft as errMsg, It as BaseAddon, Yt as createEvent, cn as EventCategory, ft as metricsProviderCapability, vt as reducePoints, yt as resolveBucketMs } from "../../dist-DwFNOn8R.mjs";
1
+ import { $ as foldSnapshotByFunction, Ft as errMsg, It as BaseAddon, Yt as createEvent, cn as EventCategory, ft as metricsProviderCapability, vt as reducePoints, yt as resolveBucketMs } from "../../dist-DWnHJI2T.mjs";
2
2
  import { readFile, readdir } from "node:fs/promises";
3
3
  import { execFile, execFileSync } from "node:child_process";
4
4
  import { promisify } from "node:util";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Ft as errMsg, It as BaseAddon, Tt as scoreRuntimes, Zt as emitReadiness, cn as EventCategory, gt as platformProbeCapability, q as enumerateInferenceDevices } from "../../dist-DwFNOn8R.mjs";
2
+ import { Ft as errMsg, It as BaseAddon, Tt as scoreRuntimes, Zt as emitReadiness, cn as EventCategory, gt as platformProbeCapability, q as enumerateInferenceDevices } from "../../dist-DWnHJI2T.mjs";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
5
5
  import * as fs from "node:fs";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { It as BaseAddon, cn as EventCategory } from "../../dist-DwFNOn8R.mjs";
1
+ import { It as BaseAddon, cn as EventCategory } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,4 +1,4 @@
1
- import { Bt as DeviceFeature, Dt as snapshotCapability, Ft as errMsg, H as deriveBatteryPresence, Ht as DeviceType, It as BaseAddon, N as bareAddonId, P as batteryCapability, cn as EventCategory, i as BatteryStatusSchema, jt as streamQualityLabel, tn as nodePin } from "../../dist-DwFNOn8R.mjs";
1
+ import { Bt as DeviceFeature, Dt as snapshotCapability, Ft as errMsg, H as deriveBatteryPresence, Ht as DeviceType, It as BaseAddon, N as bareAddonId, P as batteryCapability, cn as EventCategory, i as BatteryStatusSchema, jt as streamQualityLabel, tn as nodePin } from "../../dist-DWnHJI2T.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { signExpiringUrl, verifyExpiringUrl } from "@camstack/types/node";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { At as storageProviderCapability, It as BaseAddon, Q as filesystemBrowseCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { At as storageProviderCapability, It as BaseAddon, Q as filesystemBrowseCapability } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.js");
7
7
  const require_hub_cap_forward = require("../../hub-cap-forward-DmHNjbB0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { C as StorageCleanupJobSchema, Et as settingsStoreCapability, I as collectSecretConfigKeys, It as BaseAddon, Ot as storageCapability, T as StorageMigrationJobSchema, h as REDACTED_SECRET, kt as storageMigrationCapability, nn as parseJsonObject, w as StorageLocationTypeSchema } from "../../dist-DwFNOn8R.mjs";
1
+ import { C as StorageCleanupJobSchema, Et as settingsStoreCapability, I as collectSecretConfigKeys, It as BaseAddon, Ot as storageCapability, T as StorageMigrationJobSchema, h as REDACTED_SECRET, kt as storageMigrationCapability, nn as parseJsonObject, w as StorageLocationTypeSchema } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { $t as hydrateSchema, Ft as errMsg, It as BaseAddon } from "../../dist-DwFNOn8R.mjs";
1
+ import { $t as hydrateSchema, Ft as errMsg, It as BaseAddon } from "../../dist-DWnHJI2T.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-C7g13BfN.js");
6
+ const require_dist = require("../../dist-BNaW68aZ.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 { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DwFNOn8R.mjs";
1
+ import { It as BaseAddon, lt as logDestinationCapability } from "../../dist-DWnHJI2T.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";
@@ -737,6 +737,12 @@ var WELL_KNOWN_TAB_MAP = Object.fromEntries([
737
737
  icon: "move",
738
738
  order: 40
739
739
  },
740
+ {
741
+ id: "navigation",
742
+ label: "Navigation",
743
+ icon: "compass",
744
+ order: 41
745
+ },
740
746
  {
741
747
  id: "consumables",
742
748
  label: "Consumables",
@@ -1777,6 +1783,21 @@ var CameraStreamSchema = zod.z.object({
1777
1783
  */
1778
1784
  autoEligible: zod.z.boolean().optional(),
1779
1785
  /**
1786
+ * The profile slot the PUBLISHER says this stream is: `low` for a stream
1787
+ * whose only sensible role is the low-bandwidth one, `high` for a main
1788
+ * stream. Consulted by the broker's automatic ranking
1789
+ * (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
1790
+ * an operator's manual assignment still wins, and an absent hint is the
1791
+ * pixel-ranked default every camera had before this field existed.
1792
+ *
1793
+ * Why it exists: a camera with ONE stream ranked to `mid` — the slot no
1794
+ * storage class is written for on its own (`recordings` is high|mid,
1795
+ * `recordingsLow` is low) and the one profile scrub does not read. The robot
1796
+ * camera's single 720p relay is a `low` in every respect except the slot the
1797
+ * heuristic put it in.
1798
+ */
1799
+ profileHint: CamProfileSchema.optional(),
1800
+ /**
1780
1801
  * Transport-specific opaque metadata. The broker passes it through to
1781
1802
  * the source reader without inspecting it. Currently used by
1782
1803
  * `pull-rfc4571` streams to carry the upstream SDP (so the reader can
@@ -4088,7 +4109,22 @@ var RecordingTriggersSchema = zod.z.object({
4088
4109
  * il livello: un contatto trovato già aperto al riavvio del runner non fa
4089
4110
  * registrare.
4090
4111
  */
4091
- sensorDeviceIds: zod.z.array(zod.z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
4112
+ sensorDeviceIds: zod.z.array(zod.z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
4113
+ /**
4114
+ * La camera registra per tutta la durata del SEGNALE che lei stessa
4115
+ * pubblica — la cap `recording-signal` (`active: true` mentre il device è in
4116
+ * funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
4117
+ * resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
4118
+ * caduta, così una pulizia di quaranta minuti è UNA clip.
4119
+ *
4120
+ * Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
4121
+ * suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
4122
+ * riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
4123
+ * segnale mai abbassato (un evento perso) non può tenere aperta una
4124
+ * registrazione (D11). Vedi `recorder/addon/band-decision.ts`
4125
+ * (`holdTrigger` / `releaseTrigger`).
4126
+ */
4127
+ deviceSignal: zod.z.boolean().optional()
4092
4128
  });
4093
4129
  /**
4094
4130
  * Mode of a single recording band — the recorder per-band vocabulary.
@@ -8193,6 +8229,8 @@ var streamBrokerCapability = {
8193
8229
  label: zod.z.string().optional(),
8194
8230
  deviceFeatures: zod.z.array(zod.z.string()).optional(),
8195
8231
  autoEligible: zod.z.boolean().optional(),
8232
+ /** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
8233
+ profileHint: CamProfileSchema.optional(),
8196
8234
  metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
8197
8235
  /** Required when kind === 'derived' — the source camStreamId the
8198
8236
  * derived broker reads its encoded plane from.
@@ -31514,6 +31552,77 @@ var recordingExportCapability = {
31514
31552
  }
31515
31553
  };
31516
31554
  /**
31555
+ * A camera's own "record me NOW" LEVEL — a signal the device raises while
31556
+ * something it knows about is happening (a robot vacuum cleaning, a machine
31557
+ * running, a gate open) and lowers when it stops.
31558
+ *
31559
+ * It is a level, not an edge. The sensor triggers the recorder already listens
31560
+ * to (`SOURCE_CAP_ACTIVE_FIELD`) fire on a rising edge and record for a fixed
31561
+ * post-buffer; a cleaning lasts forty minutes, and forty minutes of "this is
31562
+ * still happening" cannot be expressed as an edge plus a post-buffer without
31563
+ * either re-triggering on a timer (polling — D224 forbids the consumer keeping
31564
+ * the fact fresh) or picking a post-buffer long enough to cover every job,
31565
+ * which records the dock for that long after every short one. So the recorder
31566
+ * reads the LEVEL: it records for as long as `active` is true, plus the band's
31567
+ * own post-buffer once it falls.
31568
+ *
31569
+ * Who owns the fact: the PROVIDER of the device, which already reads the state
31570
+ * the signal is derived from (the vacuum's lifecycle state, for Dreame). It
31571
+ * writes this slice on every change; consumers subscribe to the kernel's
31572
+ * `DeviceStateChanged` for it and read it back through
31573
+ * `deviceState.getCapSlice` to reconcile — never a second copy, never a poll
31574
+ * against the device (D224, D8/D11).
31575
+ *
31576
+ * Deliberately NOT a `binary` sensor on the camera: a binary sensor is exported
31577
+ * to Home Assistant, HomeKit and the sensor picker as a thing an operator can
31578
+ * bind, and "the camera wants to record" is not a room sensor. It is a fact
31579
+ * about the camera, on the camera.
31580
+ */
31581
+ var RecordingSignalStatusSchema = zod.z.object({
31582
+ /** True while the device asks to be recorded. */
31583
+ active: zod.z.boolean(),
31584
+ /**
31585
+ * Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
31586
+ * …). Free text for the log line and the UI badge; the recorder never
31587
+ * branches on it.
31588
+ */
31589
+ reason: zod.z.string(),
31590
+ /** Ms epoch of the last `active` transition. 0 if never observed. */
31591
+ lastChangedAt: zod.z.number()
31592
+ });
31593
+ /** The runtime-state slice: the status plus the clock every slice carries. */
31594
+ var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: zod.z.number() });
31595
+ var recordingSignalCapability = {
31596
+ name: "recording-signal",
31597
+ scope: "device",
31598
+ deviceNative: true,
31599
+ mode: "singleton",
31600
+ deviceTypes: [DeviceType.Camera],
31601
+ methods: {
31602
+ /** The current level, straight from the slice the provider keeps fresh. */
31603
+ getStatus: method(zod.z.object({ deviceId: zod.z.number() }), RecordingSignalStatusSchema) },
31604
+ status: {
31605
+ schema: RecordingSignalStatusSchema,
31606
+ kind: "push",
31607
+ empty: {
31608
+ active: false,
31609
+ reason: "unknown",
31610
+ lastChangedAt: 0
31611
+ }
31612
+ },
31613
+ runtimeState: RecordingSignalRuntimeStateSchema,
31614
+ /**
31615
+ * Runtime-state durability: **session** — a restored `active: true` from
31616
+ * before a restart is exactly the stale level the recorder's reconcile bound
31617
+ * exists to end, and the provider re-derives the true level on activation
31618
+ * anyway. Nothing is lost by forgetting it; a lie is avoided.
31619
+ *
31620
+ * See `RuntimeStateDurability`. Enforced by
31621
+ * `scripts/check-runtime-state-durability.ts`.
31622
+ */
31623
+ durability: "session"
31624
+ };
31625
+ /**
31517
31626
  * scene-monitor — device-scoped reference-region state cap. An operator marks
31518
31627
  * a rect ROI on a camera frame and names one or more states; the engine
31519
31628
  * (pipeline-analytics, designated post-processing node) reports which state is
@@ -32011,6 +32120,8 @@ var CamStreamDescriptorSchema = zod.z.object({
32011
32120
  deviceFeatures: zod.z.array(zod.z.string()).optional(),
32012
32121
  /** Eligible for automatic profile assignment. Absent = `true`. */
32013
32122
  autoEligible: zod.z.boolean().optional(),
32123
+ /** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
32124
+ profileHint: CamProfileSchema.optional(),
32014
32125
  /** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
32015
32126
  metadata: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
32016
32127
  });
@@ -34988,6 +35099,7 @@ var CAP_NAMES_WITH_STATUS = [
34988
35099
  "ptz",
34989
35100
  "ptz-autotrack",
34990
35101
  "recording",
35102
+ "recording-signal",
34991
35103
  "scene-monitor",
34992
35104
  "script-runner",
34993
35105
  "smoke",
@@ -35130,6 +35242,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
35130
35242
  rebootCapability,
35131
35243
  recordingCapability,
35132
35244
  recordingExportCapability,
35245
+ recordingSignalCapability,
35133
35246
  sceneMonitorCapability,
35134
35247
  scriptRunnerCapability,
35135
35248
  serverManagementCapability,
@@ -39807,6 +39920,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
39807
39920
  addonId: null,
39808
39921
  access: "view"
39809
39922
  },
39923
+ "recordingSignal.getStatus": {
39924
+ capName: "recording-signal",
39925
+ capScope: "device",
39926
+ addonId: null,
39927
+ access: "view"
39928
+ },
39810
39929
  "sceneMonitor.captureReference": {
39811
39930
  capName: "scene-monitor",
39812
39931
  capScope: "device",
@@ -42799,6 +42918,11 @@ Object.freeze({
42799
42918
  form: "single",
42800
42919
  optional: true
42801
42920
  }],
42921
+ "recordingSignal.getStatus": [{
42922
+ name: "deviceId",
42923
+ form: "single",
42924
+ optional: false
42925
+ }],
42802
42926
  "sceneMonitor.captureReference": [{
42803
42927
  name: "deviceId",
42804
42928
  form: "single",
@@ -43152,7 +43276,7 @@ Object.freeze({
43152
43276
  });
43153
43277
  /**
43154
43278
  * Per-cap runtime-state policy, projected from every `*.cap.ts` that declares
43155
- * `runtimeState`. 66 caps: 35 `restored`, 31 `session`.
43279
+ * `runtimeState`. 67 caps: 35 `restored`, 32 `session`.
43156
43280
  *
43157
43281
  * A cap absent from this map has no runtime-state slice at all. A cap PRESENT
43158
43282
  * with `durability: 'session'` has one and has decided not to keep it.
@@ -43354,6 +43478,10 @@ var RUNTIME_STATE_POLICY = {
43354
43478
  durability: "session",
43355
43479
  volatileFields: []
43356
43480
  },
43481
+ "recording-signal": {
43482
+ durability: "session",
43483
+ volatileFields: []
43484
+ },
43357
43485
  "scene-monitor": {
43358
43486
  durability: "session",
43359
43487
  volatileFields: []
@@ -737,6 +737,12 @@ var WELL_KNOWN_TAB_MAP = Object.fromEntries([
737
737
  icon: "move",
738
738
  order: 40
739
739
  },
740
+ {
741
+ id: "navigation",
742
+ label: "Navigation",
743
+ icon: "compass",
744
+ order: 41
745
+ },
740
746
  {
741
747
  id: "consumables",
742
748
  label: "Consumables",
@@ -1777,6 +1783,21 @@ var CameraStreamSchema = z.object({
1777
1783
  */
1778
1784
  autoEligible: z.boolean().optional(),
1779
1785
  /**
1786
+ * The profile slot the PUBLISHER says this stream is: `low` for a stream
1787
+ * whose only sensible role is the low-bandwidth one, `high` for a main
1788
+ * stream. Consulted by the broker's automatic ranking
1789
+ * (`rankInitialAssignment`) BEFORE the pixel-count heuristic, and only there:
1790
+ * an operator's manual assignment still wins, and an absent hint is the
1791
+ * pixel-ranked default every camera had before this field existed.
1792
+ *
1793
+ * Why it exists: a camera with ONE stream ranked to `mid` — the slot no
1794
+ * storage class is written for on its own (`recordings` is high|mid,
1795
+ * `recordingsLow` is low) and the one profile scrub does not read. The robot
1796
+ * camera's single 720p relay is a `low` in every respect except the slot the
1797
+ * heuristic put it in.
1798
+ */
1799
+ profileHint: CamProfileSchema.optional(),
1800
+ /**
1780
1801
  * Transport-specific opaque metadata. The broker passes it through to
1781
1802
  * the source reader without inspecting it. Currently used by
1782
1803
  * `pull-rfc4571` streams to carry the upstream SDP (so the reader can
@@ -4088,7 +4109,22 @@ var RecordingTriggersSchema = z.object({
4088
4109
  * il livello: un contatto trovato già aperto al riavvio del runner non fa
4089
4110
  * registrare.
4090
4111
  */
4091
- sensorDeviceIds: z.array(z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
4112
+ sensorDeviceIds: z.array(z.number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional(),
4113
+ /**
4114
+ * La camera registra per tutta la durata del SEGNALE che lei stessa
4115
+ * pubblica — la cap `recording-signal` (`active: true` mentre il device è in
4116
+ * funzione: un robot che pulisce). È un LIVELLO, non un fronte: la finestra
4117
+ * resta aperta finché il segnale è alto e si chiude `postBufferSec` dopo la
4118
+ * caduta, così una pulizia di quaranta minuti è UNA clip.
4119
+ *
4120
+ * Non nomina un device: il segnale è della camera stessa, tenuto fresco dal
4121
+ * suo provider (D224); il recorder lo ascolta su `DeviceStateChanged` e lo
4122
+ * riconcilia leggendo la slice via RPC, con un tetto oltre il quale un
4123
+ * segnale mai abbassato (un evento perso) non può tenere aperta una
4124
+ * registrazione (D11). Vedi `recorder/addon/band-decision.ts`
4125
+ * (`holdTrigger` / `releaseTrigger`).
4126
+ */
4127
+ deviceSignal: z.boolean().optional()
4092
4128
  });
4093
4129
  /**
4094
4130
  * Mode of a single recording band — the recorder per-band vocabulary.
@@ -8193,6 +8229,8 @@ var streamBrokerCapability = {
8193
8229
  label: z.string().optional(),
8194
8230
  deviceFeatures: z.array(z.string()).optional(),
8195
8231
  autoEligible: z.boolean().optional(),
8232
+ /** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
8233
+ profileHint: CamProfileSchema.optional(),
8196
8234
  metadata: z.record(z.string(), z.unknown()).optional(),
8197
8235
  /** Required when kind === 'derived' — the source camStreamId the
8198
8236
  * derived broker reads its encoded plane from.
@@ -31514,6 +31552,77 @@ var recordingExportCapability = {
31514
31552
  }
31515
31553
  };
31516
31554
  /**
31555
+ * A camera's own "record me NOW" LEVEL — a signal the device raises while
31556
+ * something it knows about is happening (a robot vacuum cleaning, a machine
31557
+ * running, a gate open) and lowers when it stops.
31558
+ *
31559
+ * It is a level, not an edge. The sensor triggers the recorder already listens
31560
+ * to (`SOURCE_CAP_ACTIVE_FIELD`) fire on a rising edge and record for a fixed
31561
+ * post-buffer; a cleaning lasts forty minutes, and forty minutes of "this is
31562
+ * still happening" cannot be expressed as an edge plus a post-buffer without
31563
+ * either re-triggering on a timer (polling — D224 forbids the consumer keeping
31564
+ * the fact fresh) or picking a post-buffer long enough to cover every job,
31565
+ * which records the dock for that long after every short one. So the recorder
31566
+ * reads the LEVEL: it records for as long as `active` is true, plus the band's
31567
+ * own post-buffer once it falls.
31568
+ *
31569
+ * Who owns the fact: the PROVIDER of the device, which already reads the state
31570
+ * the signal is derived from (the vacuum's lifecycle state, for Dreame). It
31571
+ * writes this slice on every change; consumers subscribe to the kernel's
31572
+ * `DeviceStateChanged` for it and read it back through
31573
+ * `deviceState.getCapSlice` to reconcile — never a second copy, never a poll
31574
+ * against the device (D224, D8/D11).
31575
+ *
31576
+ * Deliberately NOT a `binary` sensor on the camera: a binary sensor is exported
31577
+ * to Home Assistant, HomeKit and the sensor picker as a thing an operator can
31578
+ * bind, and "the camera wants to record" is not a room sensor. It is a fact
31579
+ * about the camera, on the camera.
31580
+ */
31581
+ var RecordingSignalStatusSchema = z.object({
31582
+ /** True while the device asks to be recorded. */
31583
+ active: z.boolean(),
31584
+ /**
31585
+ * Why, in the provider's own vocabulary (a vacuum's `cleaning` / `docked`,
31586
+ * …). Free text for the log line and the UI badge; the recorder never
31587
+ * branches on it.
31588
+ */
31589
+ reason: z.string(),
31590
+ /** Ms epoch of the last `active` transition. 0 if never observed. */
31591
+ lastChangedAt: z.number()
31592
+ });
31593
+ /** The runtime-state slice: the status plus the clock every slice carries. */
31594
+ var RecordingSignalRuntimeStateSchema = RecordingSignalStatusSchema.extend({ lastFetchedAt: z.number() });
31595
+ var recordingSignalCapability = {
31596
+ name: "recording-signal",
31597
+ scope: "device",
31598
+ deviceNative: true,
31599
+ mode: "singleton",
31600
+ deviceTypes: [DeviceType.Camera],
31601
+ methods: {
31602
+ /** The current level, straight from the slice the provider keeps fresh. */
31603
+ getStatus: method(z.object({ deviceId: z.number() }), RecordingSignalStatusSchema) },
31604
+ status: {
31605
+ schema: RecordingSignalStatusSchema,
31606
+ kind: "push",
31607
+ empty: {
31608
+ active: false,
31609
+ reason: "unknown",
31610
+ lastChangedAt: 0
31611
+ }
31612
+ },
31613
+ runtimeState: RecordingSignalRuntimeStateSchema,
31614
+ /**
31615
+ * Runtime-state durability: **session** — a restored `active: true` from
31616
+ * before a restart is exactly the stale level the recorder's reconcile bound
31617
+ * exists to end, and the provider re-derives the true level on activation
31618
+ * anyway. Nothing is lost by forgetting it; a lie is avoided.
31619
+ *
31620
+ * See `RuntimeStateDurability`. Enforced by
31621
+ * `scripts/check-runtime-state-durability.ts`.
31622
+ */
31623
+ durability: "session"
31624
+ };
31625
+ /**
31517
31626
  * scene-monitor — device-scoped reference-region state cap. An operator marks
31518
31627
  * a rect ROI on a camera frame and names one or more states; the engine
31519
31628
  * (pipeline-analytics, designated post-processing node) reports which state is
@@ -32011,6 +32120,8 @@ var CamStreamDescriptorSchema = z.object({
32011
32120
  deviceFeatures: z.array(z.string()).optional(),
32012
32121
  /** Eligible for automatic profile assignment. Absent = `true`. */
32013
32122
  autoEligible: z.boolean().optional(),
32123
+ /** The slot the publisher says this stream IS — see `CameraStreamSchema.profileHint`. */
32124
+ profileHint: CamProfileSchema.optional(),
32014
32125
  /** Transport-specific opaque metadata (e.g. rfc4571 SDP). */
32015
32126
  metadata: z.record(z.string(), z.unknown()).optional()
32016
32127
  });
@@ -34988,6 +35099,7 @@ var CAP_NAMES_WITH_STATUS = [
34988
35099
  "ptz",
34989
35100
  "ptz-autotrack",
34990
35101
  "recording",
35102
+ "recording-signal",
34991
35103
  "scene-monitor",
34992
35104
  "script-runner",
34993
35105
  "smoke",
@@ -35130,6 +35242,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
35130
35242
  rebootCapability,
35131
35243
  recordingCapability,
35132
35244
  recordingExportCapability,
35245
+ recordingSignalCapability,
35133
35246
  sceneMonitorCapability,
35134
35247
  scriptRunnerCapability,
35135
35248
  serverManagementCapability,
@@ -39807,6 +39920,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
39807
39920
  addonId: null,
39808
39921
  access: "view"
39809
39922
  },
39923
+ "recordingSignal.getStatus": {
39924
+ capName: "recording-signal",
39925
+ capScope: "device",
39926
+ addonId: null,
39927
+ access: "view"
39928
+ },
39810
39929
  "sceneMonitor.captureReference": {
39811
39930
  capName: "scene-monitor",
39812
39931
  capScope: "device",
@@ -42799,6 +42918,11 @@ Object.freeze({
42799
42918
  form: "single",
42800
42919
  optional: true
42801
42920
  }],
42921
+ "recordingSignal.getStatus": [{
42922
+ name: "deviceId",
42923
+ form: "single",
42924
+ optional: false
42925
+ }],
42802
42926
  "sceneMonitor.captureReference": [{
42803
42927
  name: "deviceId",
42804
42928
  form: "single",
@@ -43152,7 +43276,7 @@ Object.freeze({
43152
43276
  });
43153
43277
  /**
43154
43278
  * Per-cap runtime-state policy, projected from every `*.cap.ts` that declares
43155
- * `runtimeState`. 66 caps: 35 `restored`, 31 `session`.
43279
+ * `runtimeState`. 67 caps: 35 `restored`, 32 `session`.
43156
43280
  *
43157
43281
  * A cap absent from this map has no runtime-state slice at all. A cap PRESENT
43158
43282
  * with `durability: 'session'` has one and has decided not to keep it.
@@ -43354,6 +43478,10 @@ var RUNTIME_STATE_POLICY = {
43354
43478
  durability: "session",
43355
43479
  volatileFields: []
43356
43480
  },
43481
+ "recording-signal": {
43482
+ durability: "session",
43483
+ volatileFields: []
43484
+ },
43357
43485
  "scene-monitor": {
43358
43486
  durability: "session",
43359
43487
  volatileFields: []
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-C7g13BfN.js");
3
+ const require_dist = require("./dist-BNaW68aZ.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");
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 { Ct as scopesAllowAddon, Ft as errMsg$1, Jt as asString$1, Kt as asJsonObject$1, Lt as DATAPLANE_SECRET_HEADER$1, O as addonSettingsCapability, Qt as expandCapMethods, Rt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Ut as ReadinessRegistry, Wt as ReadinessTimeoutError, Xt as emitDownForOwnedCaps, Yt as createEvent, Z as extractNestedAddonId, _t as procedureAuthKey, an as resolveCapMount, at as isVoidInput, cn as EventCategory$1, dt as looseSchema, et as isArrayOutputSchema, g as RUNTIME_DEFAULTS, in as readinessKey, m as METHOD_ACCESS_MAP, mt as objectInputDeclaresAddonId, nn as parseJsonObject, nt as isObjectInput, on as scopeKey, ot as kebabToCamel, p as LOG_LEVEL_RANK, qt as asNumber, rn as parseJsonUnknown, st as lifecycleJobSchema, t as ALL_CAPABILITY_DEFINITIONS, tt as isCollectionArrayMethod, ut as logLevelAtMost, wt as scopesAllowDeviceCap, xt as resolveMethodAuth, zt as DEVICE_STATUS_METHOD } from "./dist-DwFNOn8R.mjs";
2
+ import { Ct as scopesAllowAddon, Ft as errMsg$1, Jt as asString$1, Kt as asJsonObject$1, Lt as DATAPLANE_SECRET_HEADER$1, O as addonSettingsCapability, Qt as expandCapMethods, Rt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Ut as ReadinessRegistry, Wt as ReadinessTimeoutError, Xt as emitDownForOwnedCaps, Yt as createEvent, Z as extractNestedAddonId, _t as procedureAuthKey, an as resolveCapMount, at as isVoidInput, cn as EventCategory$1, dt as looseSchema, et as isArrayOutputSchema, g as RUNTIME_DEFAULTS, in as readinessKey, m as METHOD_ACCESS_MAP, mt as objectInputDeclaresAddonId, nn as parseJsonObject, nt as isObjectInput, on as scopeKey, ot as kebabToCamel, p as LOG_LEVEL_RANK, qt as asNumber, rn as parseJsonUnknown, st as lifecycleJobSchema, t as ALL_CAPABILITY_DEFINITIONS, tt as isCollectionArrayMethod, ut as logLevelAtMost, wt as scopesAllowDeviceCap, xt as resolveMethodAuth, zt as DEVICE_STATUS_METHOD } from "./dist-DWnHJI2T.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";
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-C7g13BfN.js");
1
+ const require_dist = require("./dist-BNaW68aZ.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?
@@ -1,4 +1,4 @@
1
- import { Kt as asJsonObject } from "./dist-DwFNOn8R.mjs";
1
+ import { Kt as asJsonObject } from "./dist-DWnHJI2T.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?
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.194",
3
+ "version": "1.2.196",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",