@camstack/system 1.2.83 → 1.2.84

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 (55) 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 +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  15. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  17. package/dist/builtins/hub-forwarder/index.js +1 -1
  18. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  19. package/dist/builtins/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 +30 -10
  36. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +31 -11
  37. package/dist/builtins/sqlite-storage/path-guard.d.ts +8 -1
  38. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  39. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  40. package/dist/builtins/storage-orchestrator/index.d.ts +5 -6
  41. package/dist/builtins/storage-orchestrator/index.mjs +1 -1
  42. package/dist/builtins/storage-orchestrator/provider-discovery.d.ts +1 -1
  43. package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +1 -1
  44. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +1 -1
  45. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1252 -1191
  46. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1253 -1192
  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-EAvNJD24.mjs → dist-BAwlOEUy.mjs} +19 -3
  52. package/dist/{dist-CqiMPPs0.js → dist-CQy9KjsL.js} +19 -3
  53. package/dist/index.js +1 -1
  54. package/dist/index.mjs +2 -2
  55. 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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { Ht as EventCategory, gt as BaseAddon, ht as errMsg, v as addonPagesCapability } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, gt as BaseAddon, ht as errMsg, v as addonPagesCapability } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { Ht as EventCategory, b as addonWidgetsCapability, gt as BaseAddon, ht as errMsg } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, b as addonWidgetsCapability, gt as BaseAddon, ht as errMsg } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { Ht as EventCategory, gt as BaseAddon, ht as errMsg, kt as createEvent, n as AlertSchema, x as alertsCapability } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, gt as BaseAddon, ht as errMsg, kt as createEvent, n as AlertSchema, x as alertsCapability } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { C as backupCapability, Ht as EventCategory, gt as BaseAddon } from "../../dist-EAvNJD24.mjs";
1
+ import { C as backupCapability, Ht as EventCategory, gt as BaseAddon } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { J as logDestinationCapability, gt as BaseAddon } from "../../dist-EAvNJD24.mjs";
1
+ import { J as logDestinationCapability, gt as BaseAddon } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
3
+ const require_dist = require("../../dist-CQy9KjsL.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 { D as coreBlockIdFromAddonId, E as coreBlockAddonId, O as coreBlocksCapability, c as CoreBlockSchema, gt as BaseAddon, l as DeclaredDevices, o as CORE_BLOCKS_ADDON_ID, s as CORE_BLOCK_ADDON_PREFIX } from "../../dist-EAvNJD24.mjs";
1
+ import { D as coreBlockIdFromAddonId, E as coreBlockAddonId, O as coreBlocksCapability, c as CoreBlockSchema, gt as BaseAddon, l as DeclaredDevices, o as CORE_BLOCKS_ADDON_ID, s as CORE_BLOCK_ADDON_PREFIX } from "../../dist-BAwlOEUy.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,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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let _camstack_types_node = require("@camstack/types/node");
9
9
  //#region src/builtins/device-manager/adoption-job-engine.ts
@@ -1,4 +1,4 @@
1
- import { Ht as EventCategory, I as enumerateItemArrayFields, L as enumerateSchemaFields, M as deviceStateCapability, N as deviceStatusCapability, Pt as isDeviceConfigCap, Q as normalizeUnit, St as DeviceType, T as buildStreamParamsConfigSchema, Tt as WELL_KNOWN_TAB_MAP, Vt as sleep, a as CAP_NAMES_WITH_STATUS, bt as DeviceFeature, et as parseStreamParamsFormPatch, gt as BaseAddon, ht as errMsg, j as deviceManagerCapability, p as STREAM_PROFILE_META, t as ALL_CAPABILITY_DEFINITIONS, u as DeviceStatusSchema, xt as DeviceRole } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, I as enumerateItemArrayFields, L as enumerateSchemaFields, M as deviceStateCapability, N as deviceStatusCapability, Pt as isDeviceConfigCap, Q as normalizeUnit, St as DeviceType, T as buildStreamParamsConfigSchema, Tt as WELL_KNOWN_TAB_MAP, Vt as sleep, a as CAP_NAMES_WITH_STATUS, bt as DeviceFeature, et as parseStreamParamsFormPatch, gt as BaseAddon, ht as errMsg, j as deviceManagerCapability, p as STREAM_PROFILE_META, t as ALL_CAPABILITY_DEFINITIONS, u as DeviceStatusSchema, xt as DeviceRole } from "../../dist-BAwlOEUy.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
4
4
  //#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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { Ht as EventCategory, P as doorbellCapability, St as DeviceType, U as isSameAddonId, gt as BaseAddon, ht as errMsg, kt as createEvent, w as bareAddonId } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, P as doorbellCapability, St as DeviceType, U as isSameAddonId, gt as BaseAddon, ht as errMsg, kt as createEvent, w as bareAddonId } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { J as logDestinationCapability, gt as BaseAddon } from "../../dist-EAvNJD24.mjs";
1
+ import { J as logDestinationCapability, gt as BaseAddon } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
3
+ const require_dist = require("../../dist-CQy9KjsL.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 { Ht as EventCategory, gt as BaseAddon, ht as errMsg, kt as createEvent } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, gt as BaseAddon, ht as errMsg, kt as createEvent } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { S as authProviderCapability, _ as UserRecordSchema, ft as userManagementCapability, gt as BaseAddon, m as ScopedTokenSchema, r as ApiKeyRecordSchema } from "../../dist-EAvNJD24.mjs";
2
+ import { S as authProviderCapability, _ as UserRecordSchema, ft as userManagementCapability, gt as BaseAddon, m as ScopedTokenSchema, r as ApiKeyRecordSchema } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
3
+ const require_dist = require("../../dist-CQy9KjsL.js");
4
4
  let node_os = require("node:os");
5
5
  node_os = require_chunk.__toESM(node_os);
6
6
  //#region src/builtins/local-network/local-network.addon.ts
@@ -1,4 +1,4 @@
1
- import { Ht as EventCategory, gt as BaseAddon, q as localNetworkCapability } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, gt as BaseAddon, q as localNetworkCapability } from "../../dist-BAwlOEUy.mjs";
2
2
  import * as os from "node:os";
3
3
  //#region src/builtins/local-network/local-network.addon.ts
4
4
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { J as logDestinationCapability, gt as BaseAddon } from "../../dist-EAvNJD24.mjs";
1
+ import { J as logDestinationCapability, gt as BaseAddon } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_os = require("node:os");
@@ -1,4 +1,4 @@
1
- import { Ht as EventCategory, Z as metricsProviderCapability, gt as BaseAddon, kt as createEvent } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, Z as metricsProviderCapability, gt as BaseAddon, kt as createEvent } from "../../dist-BAwlOEUy.mjs";
2
2
  import { execFile, execFileSync } from "node:child_process";
3
3
  import { promisify } from "node:util";
4
4
  import * as os from "node:os";
@@ -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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  let node_util = require("node:util");
9
9
  let node_os = require("node:os");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { F as enumerateInferenceDevices, Ht as EventCategory, at as scoreRuntimes, gt as BaseAddon, ht as errMsg, jt as emitReadiness, tt as platformProbeCapability } from "../../dist-EAvNJD24.mjs";
2
+ import { F as enumerateInferenceDevices, Ht as EventCategory, at as scoreRuntimes, gt as BaseAddon, ht as errMsg, jt as emitReadiness, tt as platformProbeCapability } from "../../dist-BAwlOEUy.mjs";
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { Ht as EventCategory, gt as BaseAddon } from "../../dist-EAvNJD24.mjs";
1
+ import { Ht as EventCategory, gt as BaseAddon } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { Ft as nodePin, Ht as EventCategory, St as DeviceType, bt as DeviceFeature, dt as streamQualityLabel, gt as BaseAddon, ht as errMsg, i as BatteryStatusSchema, st as snapshotCapability, w as bareAddonId } from "../../dist-EAvNJD24.mjs";
1
+ import { Ft as nodePin, Ht as EventCategory, St as DeviceType, bt as DeviceFeature, dt as streamQualityLabel, gt as BaseAddon, ht as errMsg, i as BatteryStatusSchema, st as snapshotCapability, w as bareAddonId } from "../../dist-BAwlOEUy.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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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");
@@ -13,9 +13,16 @@ let node_fs = require("node:fs");
13
13
  node_fs = require_chunk.__toESM(node_fs);
14
14
  //#region src/builtins/sqlite-storage/path-guard.ts
15
15
  /**
16
- * Allowed-root containment guard for the filesystem-browse cap. Pure +
17
- * synchronous so it is trivially unit-testable; the provider applies it AFTER
18
- * resolving the real path (so symlink escapes are also caught upstream).
16
+ * Guards for the filesystem-browse cap. Pure + synchronous so they are
17
+ * trivially unit-testable; the provider applies containment AFTER resolving the
18
+ * real path (so symlink escapes are also caught upstream).
19
+ *
20
+ * The guard is SPLIT (D115): `assertWithinAllowedRoots` contains WRITES
21
+ * (`createDir`) to the operator's allowed roots, while `assertBrowsablePath`
22
+ * lets read-only discovery (`browse`) see the whole filesystem. Confining
23
+ * discovery to the same roots meant the admin UI could not list `/`, so the
24
+ * path picker could not offer — or even reach — the mounts this node's own
25
+ * storage locations live on.
19
26
  */
20
27
  /** True iff `candidate` is one of, or nested under, an allowed root. */
21
28
  function isWithinAllowedRoots(candidate, allowedRoots) {
@@ -25,17 +32,30 @@ function isWithinAllowedRoots(candidate, allowedRoots) {
25
32
  return norm === r || norm.startsWith(r.endsWith(node_path.sep) ? r : r + node_path.sep);
26
33
  });
27
34
  }
28
- /** Throws unless `candidate` is within an allowed root. */
35
+ /** Throws unless `candidate` is within an allowed root. WRITES only. */
29
36
  function assertWithinAllowedRoots(candidate, allowedRoots) {
30
37
  if (!isWithinAllowedRoots(candidate, allowedRoots)) throw new Error(`path "${candidate}" is not within an allowed root`);
31
38
  }
39
+ /**
40
+ * Throws unless `candidate` is a browsable path. Read-only discovery is
41
+ * deliberately unconfined — the only requirement is an absolute path, so a
42
+ * relative one can never be resolved against whatever the runner's cwd
43
+ * happens to be.
44
+ */
45
+ function assertBrowsablePath(candidate) {
46
+ if (!(0, node_path.isAbsolute)(candidate)) throw new Error(`browse path "${candidate}" must be absolute`);
47
+ }
32
48
  //#endregion
33
49
  //#region src/builtins/sqlite-storage/filesystem-browse-provider.ts
34
50
  /**
35
- * Per-node filesystem-browse provider. Lists/creates directories under
36
- * operator-configured allowed roots only (sandboxed by `path-guard`). Backs the
37
- * `filesystem-browse` cap so the admin UI can pick a node + path for a
38
- * node-local storage location.
51
+ * Per-node filesystem-browse provider. Backs the `filesystem-browse` cap so the
52
+ * admin UI can pick a node + path for a node-local storage location.
53
+ *
54
+ * The two halves are guarded differently (D115): `browse` is read-only
55
+ * discovery and sees the whole filesystem from `/` down, while `createDir`
56
+ * stays contained to the operator's allowed roots. Containing discovery too
57
+ * meant the picker could not list `/`, and therefore could not show the mounts
58
+ * this node's own storage locations already live on.
39
59
  */
40
60
  var FilesystemBrowseProvider = class {
41
61
  allowedRoots;
@@ -47,8 +67,8 @@ var FilesystemBrowseProvider = class {
47
67
  return [...this.allowedRoots()];
48
68
  }
49
69
  async browse({ path }) {
70
+ assertBrowsablePath(path);
50
71
  const real = await (0, node_fs_promises.realpath)(path).catch(() => path);
51
- assertWithinAllowedRoots(real, await this.resolvedRoots());
52
72
  const entries = (await (0, node_fs_promises.readdir)(real, { withFileTypes: true })).filter((d) => d.isDirectory()).map((d) => ({
53
73
  name: d.name,
54
74
  path: (0, node_path.join)(real, d.name)
@@ -1,15 +1,22 @@
1
- import { gt as BaseAddon, ut as storageProviderCapability, z as filesystemBrowseCapability } from "../../dist-EAvNJD24.mjs";
1
+ import { gt as BaseAddon, ut as storageProviderCapability, z as filesystemBrowseCapability } from "../../dist-BAwlOEUy.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";
5
- import { basename, dirname, join, resolve, sep } from "node:path";
5
+ import { basename, dirname, isAbsolute, join, resolve, sep } from "node:path";
6
6
  import { homedir } from "node:os";
7
7
  import * as fs from "node:fs";
8
8
  //#region src/builtins/sqlite-storage/path-guard.ts
9
9
  /**
10
- * Allowed-root containment guard for the filesystem-browse cap. Pure +
11
- * synchronous so it is trivially unit-testable; the provider applies it AFTER
12
- * resolving the real path (so symlink escapes are also caught upstream).
10
+ * Guards for the filesystem-browse cap. Pure + synchronous so they are
11
+ * trivially unit-testable; the provider applies containment AFTER resolving the
12
+ * real path (so symlink escapes are also caught upstream).
13
+ *
14
+ * The guard is SPLIT (D115): `assertWithinAllowedRoots` contains WRITES
15
+ * (`createDir`) to the operator's allowed roots, while `assertBrowsablePath`
16
+ * lets read-only discovery (`browse`) see the whole filesystem. Confining
17
+ * discovery to the same roots meant the admin UI could not list `/`, so the
18
+ * path picker could not offer — or even reach — the mounts this node's own
19
+ * storage locations live on.
13
20
  */
14
21
  /** True iff `candidate` is one of, or nested under, an allowed root. */
15
22
  function isWithinAllowedRoots(candidate, allowedRoots) {
@@ -19,17 +26,30 @@ function isWithinAllowedRoots(candidate, allowedRoots) {
19
26
  return norm === r || norm.startsWith(r.endsWith(sep) ? r : r + sep);
20
27
  });
21
28
  }
22
- /** Throws unless `candidate` is within an allowed root. */
29
+ /** Throws unless `candidate` is within an allowed root. WRITES only. */
23
30
  function assertWithinAllowedRoots(candidate, allowedRoots) {
24
31
  if (!isWithinAllowedRoots(candidate, allowedRoots)) throw new Error(`path "${candidate}" is not within an allowed root`);
25
32
  }
33
+ /**
34
+ * Throws unless `candidate` is a browsable path. Read-only discovery is
35
+ * deliberately unconfined — the only requirement is an absolute path, so a
36
+ * relative one can never be resolved against whatever the runner's cwd
37
+ * happens to be.
38
+ */
39
+ function assertBrowsablePath(candidate) {
40
+ if (!isAbsolute(candidate)) throw new Error(`browse path "${candidate}" must be absolute`);
41
+ }
26
42
  //#endregion
27
43
  //#region src/builtins/sqlite-storage/filesystem-browse-provider.ts
28
44
  /**
29
- * Per-node filesystem-browse provider. Lists/creates directories under
30
- * operator-configured allowed roots only (sandboxed by `path-guard`). Backs the
31
- * `filesystem-browse` cap so the admin UI can pick a node + path for a
32
- * node-local storage location.
45
+ * Per-node filesystem-browse provider. Backs the `filesystem-browse` cap so the
46
+ * admin UI can pick a node + path for a node-local storage location.
47
+ *
48
+ * The two halves are guarded differently (D115): `browse` is read-only
49
+ * discovery and sees the whole filesystem from `/` down, while `createDir`
50
+ * stays contained to the operator's allowed roots. Containing discovery too
51
+ * meant the picker could not list `/`, and therefore could not show the mounts
52
+ * this node's own storage locations already live on.
33
53
  */
34
54
  var FilesystemBrowseProvider = class {
35
55
  allowedRoots;
@@ -41,8 +61,8 @@ var FilesystemBrowseProvider = class {
41
61
  return [...this.allowedRoots()];
42
62
  }
43
63
  async browse({ path }) {
64
+ assertBrowsablePath(path);
44
65
  const real = await realpath(path).catch(() => path);
45
- assertWithinAllowedRoots(real, await this.resolvedRoots());
46
66
  const entries = (await readdir(real, { withFileTypes: true })).filter((d) => d.isDirectory()).map((d) => ({
47
67
  name: d.name,
48
68
  path: join(real, d.name)
@@ -1,4 +1,11 @@
1
1
  /** True iff `candidate` is one of, or nested under, an allowed root. */
2
2
  export declare function isWithinAllowedRoots(candidate: string, allowedRoots: readonly string[]): boolean;
3
- /** Throws unless `candidate` is within an allowed root. */
3
+ /** Throws unless `candidate` is within an allowed root. WRITES only. */
4
4
  export declare function assertWithinAllowedRoots(candidate: string, allowedRoots: readonly string[]): void;
5
+ /**
6
+ * Throws unless `candidate` is a browsable path. Read-only discovery is
7
+ * deliberately unconfined — the only requirement is an absolute path, so a
8
+ * relative one can never be resolved against whatever the runner's cwd
9
+ * happens to be.
10
+ */
11
+ export declare function assertBrowsablePath(candidate: string): void;
@@ -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-CqiMPPs0.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs = require("node:fs");
9
9
  let node_module = require("node:module");
@@ -1,4 +1,4 @@
1
- import { A as decodeVectorBase64, Et as asJsonObject, Lt as parseJsonUnknown, f as RUNTIME_DEFAULTS, gt as BaseAddon, ht as errMsg, k as dataStoreProviderCapability, mt as vectorStoreCapability, pt as vectorDimFromBase64, w as bareAddonId } from "../../dist-EAvNJD24.mjs";
1
+ import { A as decodeVectorBase64, Et as asJsonObject, Lt as parseJsonUnknown, f as RUNTIME_DEFAULTS, gt as BaseAddon, ht as errMsg, k as dataStoreProviderCapability, mt as vectorStoreCapability, pt as vectorDimFromBase64, w as bareAddonId } from "../../dist-BAwlOEUy.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { statSync } from "node:fs";
@@ -1,8 +1,7 @@
1
- export { StorageOrchestratorAddon } from './storage-orchestrator.addon.js';
2
- export { StorageOrchestratorAddon as default } from './storage-orchestrator.addon.js';
3
- export { StorageOrchestratorService } from './storage-orchestrator.service.js';
4
- export { StorageMigrationCoordinator } from './storage-migration-coordinator.js';
1
+ export type { ILocationStore } from './location-store.js';
2
+ export { SqliteLocationStore } from './location-store.js';
5
3
  export type { FootageMigrationParticipant, LeaseParticipant, MediaMigrationParticipant, MigrationState, StorageMigrationCoordinatorDeps, StorageMigrationParticipants, } from './storage-migration-coordinator.js';
4
+ export { StorageMigrationCoordinator } from './storage-migration-coordinator.js';
5
+ export { StorageOrchestratorAddon, StorageOrchestratorAddon as default, } from './storage-orchestrator.addon.js';
6
6
  export type { ListLocationsFilter, StorageProviderLookup } from './storage-orchestrator.service.js';
7
- export { SqliteLocationStore } from './location-store.js';
8
- export type { ILocationStore } from './location-store.js';
7
+ export { StorageOrchestratorService } from './storage-orchestrator.service.js';
@@ -1,2 +1,2 @@
1
- import { StorageOrchestratorAddon, n as SqliteLocationStore, r as StorageOrchestratorService, t as StorageMigrationCoordinator } from "./storage-orchestrator.addon.mjs";
1
+ import { StorageOrchestratorAddon, n as StorageMigrationCoordinator, r as SqliteLocationStore, t as StorageOrchestratorService } from "./storage-orchestrator.addon.mjs";
2
2
  export { SqliteLocationStore, StorageMigrationCoordinator, StorageOrchestratorAddon, StorageOrchestratorAddon as default, StorageOrchestratorService };
@@ -1,4 +1,4 @@
1
- import { IStorageProviderImpl, IStorageCapProvider } from '@camstack/types';
1
+ import { IStorageCapProvider, IStorageProviderImpl } from '@camstack/types';
2
2
  /** One entry of the `storage.listProviders` output array. */
3
3
  export type StorageProviderListEntry = Awaited<ReturnType<IStorageCapProvider['listProviders']>>[number];
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { RelocateJob, StorageMigrationFootageMoveInput, StorageMigrationMediaMoveInput, StorageMigrationInput, StorageMigrationJob, StorageMigrationPlan } from '@camstack/types';
1
+ import { RelocateJob, StorageMigrationFootageMoveInput, StorageMigrationInput, StorageMigrationJob, StorageMigrationMediaMoveInput, StorageMigrationPlan } from '@camstack/types';
2
2
  import { StorageOrchestratorService } from './storage-orchestrator.service.js';
3
3
  export interface MigrationState {
4
4
  get(): Promise<StorageMigrationJob | null>;
@@ -1,4 +1,4 @@
1
- import { BaseAddon, ProviderRegistration } from '@camstack/types';
1
+ import { ProviderRegistration, BaseAddon } from '@camstack/types';
2
2
  interface StorageOrchestratorConfig extends Record<string, unknown> {
3
3
  }
4
4
  export declare class StorageOrchestratorAddon extends BaseAddon<StorageOrchestratorConfig> {