@camstack/system 1.2.82 → 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-DpL4mUA4.mjs → dist-BAwlOEUy.mjs} +28 -12
  52. package/dist/{dist-DUDXaubL.js → dist-CQy9KjsL.js} +28 -12
  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
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DUDXaubL.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { Nt as hydrateSchema, gt as BaseAddon, ht as errMsg } from "../../dist-DpL4mUA4.mjs";
1
+ import { Nt as hydrateSchema, gt as BaseAddon, ht as errMsg } from "../../dist-BAwlOEUy.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-DUDXaubL.js");
6
+ const require_dist = require("../../dist-CQy9KjsL.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 { J as logDestinationCapability, gt as BaseAddon } from "../../dist-DpL4mUA4.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
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -3880,6 +3880,21 @@ var StorageLocationSchema = z.object({
3880
3880
  nodeId: z.string().optional(),
3881
3881
  isDefault: z.boolean().default(false),
3882
3882
  isSystem: z.boolean().default(false),
3883
+ /**
3884
+ * Operator opt-in: whether consumers that BALANCE across several locations
3885
+ * of a type may write here. Recordings reads it today; event media and
3886
+ * backups are the next consumers, which is why the flag lives on the
3887
+ * location rather than in any one addon's store — nothing has to be
3888
+ * extended to add the next consumer.
3889
+ *
3890
+ * OPTIONAL, and ABSENT MEANS ACTIVE. Every location persisted before the
3891
+ * flag existed reads back with no flag and keeps working exactly as before;
3892
+ * that is the whole compat story, and it is why no migration ships with it.
3893
+ * A newly CREATED sibling is stamped `false` by the orchestrator (creating a
3894
+ * disk must not silently start writing to it); the default of a type is
3895
+ * always stamped `true`.
3896
+ */
3897
+ enabled: z.boolean().optional(),
3883
3898
  /** COMPUTED at read time by the orchestrator (statfs of the backing volume
3884
3899
  * for node-local locations it can reach) — never persisted, absent when the
3885
3900
  * volume is remote/unreachable. The single capacity truth every UI reads. */
@@ -9958,7 +9973,8 @@ var embeddingEncoderCapability = {
9958
9973
  };
9959
9974
  /**
9960
9975
  * filesystem-browse — per-node capability for browsing the node's local
9961
- * filesystem, sandboxed to operator-configured allowed roots. Used by the
9976
+ * filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
9977
+ * are sandboxed to operator-configured allowed roots (D115). Used by the
9962
9978
  * admin "Add filesystem location" flow to pick a node + path. `mode:'per-node'`
9963
9979
  * (one provider per node); the hub calls it with `{nodeId}` so the codegen
9964
9980
  * routes to that exact node (default `nodeIdMode:'routing'`).
@@ -9979,9 +9995,9 @@ var filesystemBrowseCapability = {
9979
9995
  mode: "singleton",
9980
9996
  internal: true,
9981
9997
  methods: {
9982
- /** The allowed roots browsing is sandboxed to on this node. */
9998
+ /** The roots `createDir` is sandboxed to on this node. Browsing is not confined to them. */
9983
9999
  listAllowedRoots: method(z.void(), z.array(z.string()).readonly(), { auth: "admin" }),
9984
- /** Immediate subdirectories of `path` (must be within an allowed root) + free/total bytes. */
10000
+ /** Immediate subdirectories of any absolute `path` + free/total bytes. Read-only. */
9985
10001
  browse: method(z.object({ path: z.string() }), BrowseResultSchema, { auth: "admin" }),
9986
10002
  /** Create a subdirectory (within an allowed root). Returns its absolute path. */
9987
10003
  createDir: method(z.object({ path: z.string() }), z.object({ path: z.string() }), {
@@ -25273,7 +25289,7 @@ var recordingCapability = {
25273
25289
  }
25274
25290
  };
25275
25291
  /**
25276
- * `recordingExport` cap — render a footage time range into a single downloadable
25292
+ * `recording-export` cap — render a footage time range into a single downloadable
25277
25293
  * MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
25278
25294
  * bounded lifetime with a durable history, auto-expiry, and optional
25279
25295
  * delete-after-download.
@@ -25395,7 +25411,7 @@ var ExportBytesSchema = z.object({
25395
25411
  bytes: z.number().int().nonnegative()
25396
25412
  });
25397
25413
  var recordingExportCapability = {
25398
- name: "recordingExport",
25414
+ name: "recording-export",
25399
25415
  scope: "system",
25400
25416
  mode: "singleton",
25401
25417
  methods: {
@@ -32142,43 +32158,43 @@ var METHOD_ACCESS_MAP = Object.freeze({
32142
32158
  access: "create"
32143
32159
  },
32144
32160
  "recordingExport.cancelExport": {
32145
- capName: "recordingExport",
32161
+ capName: "recording-export",
32146
32162
  capScope: "system",
32147
32163
  addonId: null,
32148
32164
  access: "create"
32149
32165
  },
32150
32166
  "recordingExport.createExport": {
32151
- capName: "recordingExport",
32167
+ capName: "recording-export",
32152
32168
  capScope: "system",
32153
32169
  addonId: null,
32154
32170
  access: "create"
32155
32171
  },
32156
32172
  "recordingExport.deleteExport": {
32157
- capName: "recordingExport",
32173
+ capName: "recording-export",
32158
32174
  capScope: "system",
32159
32175
  addonId: null,
32160
32176
  access: "delete"
32161
32177
  },
32162
32178
  "recordingExport.getDownloadUrl": {
32163
- capName: "recordingExport",
32179
+ capName: "recording-export",
32164
32180
  capScope: "system",
32165
32181
  addonId: null,
32166
32182
  access: "view"
32167
32183
  },
32168
32184
  "recordingExport.getExport": {
32169
- capName: "recordingExport",
32185
+ capName: "recording-export",
32170
32186
  capScope: "system",
32171
32187
  addonId: null,
32172
32188
  access: "view"
32173
32189
  },
32174
32190
  "recordingExport.listExports": {
32175
- capName: "recordingExport",
32191
+ capName: "recording-export",
32176
32192
  capScope: "system",
32177
32193
  addonId: null,
32178
32194
  access: "view"
32179
32195
  },
32180
32196
  "recordingExport.readExportBytes": {
32181
- capName: "recordingExport",
32197
+ capName: "recording-export",
32182
32198
  capScope: "system",
32183
32199
  addonId: null,
32184
32200
  access: "view"
@@ -3880,6 +3880,21 @@ var StorageLocationSchema = zod.z.object({
3880
3880
  nodeId: zod.z.string().optional(),
3881
3881
  isDefault: zod.z.boolean().default(false),
3882
3882
  isSystem: zod.z.boolean().default(false),
3883
+ /**
3884
+ * Operator opt-in: whether consumers that BALANCE across several locations
3885
+ * of a type may write here. Recordings reads it today; event media and
3886
+ * backups are the next consumers, which is why the flag lives on the
3887
+ * location rather than in any one addon's store — nothing has to be
3888
+ * extended to add the next consumer.
3889
+ *
3890
+ * OPTIONAL, and ABSENT MEANS ACTIVE. Every location persisted before the
3891
+ * flag existed reads back with no flag and keeps working exactly as before;
3892
+ * that is the whole compat story, and it is why no migration ships with it.
3893
+ * A newly CREATED sibling is stamped `false` by the orchestrator (creating a
3894
+ * disk must not silently start writing to it); the default of a type is
3895
+ * always stamped `true`.
3896
+ */
3897
+ enabled: zod.z.boolean().optional(),
3883
3898
  /** COMPUTED at read time by the orchestrator (statfs of the backing volume
3884
3899
  * for node-local locations it can reach) — never persisted, absent when the
3885
3900
  * volume is remote/unreachable. The single capacity truth every UI reads. */
@@ -9958,7 +9973,8 @@ var embeddingEncoderCapability = {
9958
9973
  };
9959
9974
  /**
9960
9975
  * filesystem-browse — per-node capability for browsing the node's local
9961
- * filesystem, sandboxed to operator-configured allowed roots. Used by the
9976
+ * filesystem. Reads are unconfined (whole filesystem, from `/` down); WRITES
9977
+ * are sandboxed to operator-configured allowed roots (D115). Used by the
9962
9978
  * admin "Add filesystem location" flow to pick a node + path. `mode:'per-node'`
9963
9979
  * (one provider per node); the hub calls it with `{nodeId}` so the codegen
9964
9980
  * routes to that exact node (default `nodeIdMode:'routing'`).
@@ -9979,9 +9995,9 @@ var filesystemBrowseCapability = {
9979
9995
  mode: "singleton",
9980
9996
  internal: true,
9981
9997
  methods: {
9982
- /** The allowed roots browsing is sandboxed to on this node. */
9998
+ /** The roots `createDir` is sandboxed to on this node. Browsing is not confined to them. */
9983
9999
  listAllowedRoots: method(zod.z.void(), zod.z.array(zod.z.string()).readonly(), { auth: "admin" }),
9984
- /** Immediate subdirectories of `path` (must be within an allowed root) + free/total bytes. */
10000
+ /** Immediate subdirectories of any absolute `path` + free/total bytes. Read-only. */
9985
10001
  browse: method(zod.z.object({ path: zod.z.string() }), BrowseResultSchema, { auth: "admin" }),
9986
10002
  /** Create a subdirectory (within an allowed root). Returns its absolute path. */
9987
10003
  createDir: method(zod.z.object({ path: zod.z.string() }), zod.z.object({ path: zod.z.string() }), {
@@ -25273,7 +25289,7 @@ var recordingCapability = {
25273
25289
  }
25274
25290
  };
25275
25291
  /**
25276
- * `recordingExport` cap — render a footage time range into a single downloadable
25292
+ * `recording-export` cap — render a footage time range into a single downloadable
25277
25293
  * MP4 (regular / accelerated / decelerated / timelapse, ± audio), kept for a
25278
25294
  * bounded lifetime with a durable history, auto-expiry, and optional
25279
25295
  * delete-after-download.
@@ -25395,7 +25411,7 @@ var ExportBytesSchema = zod.z.object({
25395
25411
  bytes: zod.z.number().int().nonnegative()
25396
25412
  });
25397
25413
  var recordingExportCapability = {
25398
- name: "recordingExport",
25414
+ name: "recording-export",
25399
25415
  scope: "system",
25400
25416
  mode: "singleton",
25401
25417
  methods: {
@@ -32142,43 +32158,43 @@ var METHOD_ACCESS_MAP = Object.freeze({
32142
32158
  access: "create"
32143
32159
  },
32144
32160
  "recordingExport.cancelExport": {
32145
- capName: "recordingExport",
32161
+ capName: "recording-export",
32146
32162
  capScope: "system",
32147
32163
  addonId: null,
32148
32164
  access: "create"
32149
32165
  },
32150
32166
  "recordingExport.createExport": {
32151
- capName: "recordingExport",
32167
+ capName: "recording-export",
32152
32168
  capScope: "system",
32153
32169
  addonId: null,
32154
32170
  access: "create"
32155
32171
  },
32156
32172
  "recordingExport.deleteExport": {
32157
- capName: "recordingExport",
32173
+ capName: "recording-export",
32158
32174
  capScope: "system",
32159
32175
  addonId: null,
32160
32176
  access: "delete"
32161
32177
  },
32162
32178
  "recordingExport.getDownloadUrl": {
32163
- capName: "recordingExport",
32179
+ capName: "recording-export",
32164
32180
  capScope: "system",
32165
32181
  addonId: null,
32166
32182
  access: "view"
32167
32183
  },
32168
32184
  "recordingExport.getExport": {
32169
- capName: "recordingExport",
32185
+ capName: "recording-export",
32170
32186
  capScope: "system",
32171
32187
  addonId: null,
32172
32188
  access: "view"
32173
32189
  },
32174
32190
  "recordingExport.listExports": {
32175
- capName: "recordingExport",
32191
+ capName: "recording-export",
32176
32192
  capScope: "system",
32177
32193
  addonId: null,
32178
32194
  access: "view"
32179
32195
  },
32180
32196
  "recordingExport.readExportBytes": {
32181
- capName: "recordingExport",
32197
+ capName: "recording-export",
32182
32198
  capScope: "system",
32183
32199
  addonId: null,
32184
32200
  access: "view"
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-DUDXaubL.js");
3
+ const require_dist = require("./dist-CQy9KjsL.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 { $ as objectInputDeclaresAddonId, At as emitDownForOwnedCaps, B as isArrayOutputSchema, Bt as scopeKey, Ct as ReadinessRegistry, Dt as asNumber, Et as asJsonObject$1, G as kebabToCamel, H as isObjectInput, Ht as EventCategory$1, It as parseJsonObject, K as lifecycleJobSchema, Lt as parseJsonUnknown$1, Mt as expandCapMethods, Ot as asString$1, R as extractNestedAddonId, Rt as readinessKey, V as isCollectionArrayMethod, W as isVoidInput, X as looseSchema, Y as logLevelAtMost, _t as DATAPLANE_SECRET_HEADER$1, d as METHOD_ACCESS_MAP, f as RUNTIME_DEFAULTS, ht as errMsg$1, it as scopesAllowDeviceCap, kt as createEvent, nt as procedureAuthKey, rt as scopesAllowAddon, t as ALL_CAPABILITY_DEFINITIONS, vt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, wt as ReadinessTimeoutError, y as addonSettingsCapability, yt as DEVICE_STATUS_METHOD, zt as resolveCapMount } from "./dist-DpL4mUA4.mjs";
2
+ import { $ as objectInputDeclaresAddonId, At as emitDownForOwnedCaps, B as isArrayOutputSchema, Bt as scopeKey, Ct as ReadinessRegistry, Dt as asNumber, Et as asJsonObject$1, G as kebabToCamel, H as isObjectInput, Ht as EventCategory$1, It as parseJsonObject, K as lifecycleJobSchema, Lt as parseJsonUnknown$1, Mt as expandCapMethods, Ot as asString$1, R as extractNestedAddonId, Rt as readinessKey, V as isCollectionArrayMethod, W as isVoidInput, X as looseSchema, Y as logLevelAtMost, _t as DATAPLANE_SECRET_HEADER$1, d as METHOD_ACCESS_MAP, f as RUNTIME_DEFAULTS, ht as errMsg$1, it as scopesAllowDeviceCap, kt as createEvent, nt as procedureAuthKey, rt as scopesAllowAddon, t as ALL_CAPABILITY_DEFINITIONS, vt as DEVICE_SETTINGS_CONTRIBUTION_METHODS, wt as ReadinessTimeoutError, y as addonSettingsCapability, yt as DEVICE_STATUS_METHOD, zt as resolveCapMount } from "./dist-BAwlOEUy.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";
@@ -18,7 +18,7 @@ import NativeMetricsAddon, { t as NativeMetricsProvider } from "./builtins/nativ
18
18
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
19
19
  import { SqliteSettingsAddon, o as SqliteSettingsBackend } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
20
20
  import { ConfigStore, DeviceStore } from "./builtins/sqlite-storage/index.mjs";
21
- import { StorageOrchestratorAddon, r as StorageOrchestratorService } from "./builtins/storage-orchestrator/storage-orchestrator.addon.mjs";
21
+ import { StorageOrchestratorAddon, t as StorageOrchestratorService } from "./builtins/storage-orchestrator/storage-orchestrator.addon.mjs";
22
22
  import "./builtins/storage-orchestrator/index.mjs";
23
23
  import { SystemConfigAddon } from "./builtins/system-config/system-config.addon.mjs";
24
24
  import "./builtins/system-config/index.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.82",
3
+ "version": "1.2.84",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",