@camstack/system 1.1.54 → 1.1.55

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 (47) hide show
  1. package/dist/addon-runner.js +2 -2
  2. package/dist/addon-runner.mjs +2 -2
  3. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  7. package/dist/builtins/alerts/alerts.addon.js +1 -1
  8. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  11. package/dist/builtins/console-logging/index.js +1 -1
  12. package/dist/builtins/console-logging/index.mjs +1 -1
  13. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  14. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  15. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  16. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  17. package/dist/builtins/hub-forwarder/index.js +1 -1
  18. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  19. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  20. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  21. package/dist/builtins/local-network/local-network.addon.js +1 -1
  22. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  23. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  24. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  25. package/dist/builtins/platform-probe/index.js +1 -1
  26. package/dist/builtins/platform-probe/index.mjs +1 -1
  27. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  28. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  29. package/dist/builtins/snapshot/index.js +1 -1
  30. package/dist/builtins/snapshot/index.mjs +1 -1
  31. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  32. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  33. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  34. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  35. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  36. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  37. package/dist/builtins/system-config/system-config.addon.js +1 -1
  38. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  39. package/dist/builtins/winston-logging/index.js +1 -1
  40. package/dist/builtins/winston-logging/index.mjs +1 -1
  41. package/dist/{dist-B5C4dVvO.js → dist-CD5HJkAg.js} +186 -5
  42. package/dist/{dist-DssImRC5.mjs → dist-RlzjLezj.mjs} +186 -5
  43. package/dist/index.js +2 -2
  44. package/dist/index.mjs +2 -2
  45. package/dist/{manifest-python-deps-CWom-eqp.mjs → manifest-python-deps-BMKlyabv.mjs} +1 -1
  46. package/dist/{manifest-python-deps-kkvku9yU.js → manifest-python-deps-BpDOYWC2.js} +1 -1
  47. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-B5C4dVvO.js");
3
- const require_manifest_python_deps = require("./manifest-python-deps-kkvku9yU.js");
2
+ const require_dist = require("./dist-CD5HJkAg.js");
3
+ const require_manifest_python_deps = require("./manifest-python-deps-BpDOYWC2.js");
4
4
  const require_custom_action_registry = require("./custom-action-registry-vLYEFTtv.js");
5
5
  let node_fs = require("node:fs");
6
6
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,5 +1,5 @@
1
- import { j as isCollectionArrayMethod, t as ALL_CAPABILITY_DEFINITIONS } from "./dist-DssImRC5.mjs";
2
- import { F as createUdsLoggerWithControl, I as LocalChildClient, bt as resolveAddonClass, i as createUdsAddonContext, it as setWorkerNativeCapsChangeListener, nt as getWorkerNativeCapSnapshot, ot as validateProviderRegistrations, t as installManifestPythonDeps, tt as getWorkerNativeCapProvider, vt as installManifestNativeDeps } from "./manifest-python-deps-CWom-eqp.mjs";
1
+ import { j as isCollectionArrayMethod, t as ALL_CAPABILITY_DEFINITIONS } from "./dist-RlzjLezj.mjs";
2
+ import { F as createUdsLoggerWithControl, I as LocalChildClient, bt as resolveAddonClass, i as createUdsAddonContext, it as setWorkerNativeCapsChangeListener, nt as getWorkerNativeCapSnapshot, ot as validateProviderRegistrations, t as installManifestPythonDeps, tt as getWorkerNativeCapProvider, vt as installManifestNativeDeps } from "./manifest-python-deps-BMKlyabv.mjs";
3
3
  import { t as CustomActionRegistry } from "./custom-action-registry-BEXwC-oo.mjs";
4
4
  import { register } from "node:module";
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
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { f as addonPagesCapability, it as BaseAddon, kt as EventCategory, rt as errMsg } from "../../dist-DssImRC5.mjs";
1
+ import { f as addonPagesCapability, it as BaseAddon, kt as EventCategory, rt as errMsg } from "../../dist-RlzjLezj.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_fs = require("node:fs");
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { it as BaseAddon, kt as EventCategory, m as addonWidgetsCapability, rt as errMsg } from "../../dist-DssImRC5.mjs";
1
+ import { it as BaseAddon, kt as EventCategory, m as addonWidgetsCapability, rt as errMsg } from "../../dist-RlzjLezj.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  //#region src/builtins/alerts/alerts.addon.ts
8
8
  var CATEGORY_MAPPINGS = {
9
9
  "addon.crashed": {
@@ -1,4 +1,4 @@
1
- import { _t as createEvent, h as alertsCapability, it as BaseAddon, kt as EventCategory, n as AlertSchema, rt as errMsg } from "../../dist-DssImRC5.mjs";
1
+ import { _t as createEvent, h as alertsCapability, it as BaseAddon, kt as EventCategory, n as AlertSchema, rt as errMsg } from "../../dist-RlzjLezj.mjs";
2
2
  //#region src/builtins/alerts/alerts.addon.ts
3
3
  var CATEGORY_MAPPINGS = {
4
4
  "addon.crashed": {
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let node_fs = require("node:fs");
8
8
  let node_fs$1 = require_chunk.__toESM(node_fs, 1);
9
9
  node_fs = require_chunk.__toESM(node_fs);
@@ -1,4 +1,4 @@
1
- import { it as BaseAddon, kt as EventCategory, v as backupCapability } from "../../dist-DssImRC5.mjs";
1
+ import { it as BaseAddon, kt as EventCategory, v as backupCapability } from "../../dist-RlzjLezj.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import Kt from "node:fs";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.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 { L as logDestinationCapability, it as BaseAddon } from "../../dist-DssImRC5.mjs";
1
+ import { L as logDestinationCapability, it as BaseAddon } from "../../dist-RlzjLezj.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/console-logging/console-destination.ts
4
4
  var LEVEL_RANK = {
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let _camstack_types_node = require("@camstack/types/node");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { E as evaluateLinkExpression, J as setByPath, Ot as sleep, S as deviceStatusCapability, St as isDeviceConfigCap, T as enumerateSchemaFields, U as parseStreamParamsFormPatch, V as normalizeUnit, a as DeviceStatusSchema, b as deviceManagerCapability, c as STREAM_PROFILE_META, ct as DeviceFeature, et as toExpressionValue, g as applyTransform, i as CAP_NAMES_WITH_STATUS, it as BaseAddon, k as getByPath, kt as EventCategory, lt as DeviceRole, nt as validateExpressionSource, pt as WELL_KNOWN_TAB_MAP, rt as errMsg, t as ALL_CAPABILITY_DEFINITIONS, ut as DeviceType, w as enumerateItemArrayFields, x as deviceStateCapability, y as buildStreamParamsConfigSchema } from "../../dist-DssImRC5.mjs";
1
+ import { E as evaluateLinkExpression, J as setByPath, Ot as sleep, S as deviceStatusCapability, St as isDeviceConfigCap, T as enumerateSchemaFields, U as parseStreamParamsFormPatch, V as normalizeUnit, a as DeviceStatusSchema, b as deviceManagerCapability, c as STREAM_PROFILE_META, ct as DeviceFeature, et as toExpressionValue, g as applyTransform, i as CAP_NAMES_WITH_STATUS, it as BaseAddon, k as getByPath, kt as EventCategory, lt as DeviceRole, nt as validateExpressionSource, pt as WELL_KNOWN_TAB_MAP, rt as errMsg, t as ALL_CAPABILITY_DEFINITIONS, ut as DeviceType, w as enumerateItemArrayFields, x as deviceStateCapability, y as buildStreamParamsConfigSchema } from "../../dist-RlzjLezj.mjs";
2
2
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.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 { C as doorbellCapability, _t as createEvent, it as BaseAddon, kt as EventCategory, rt as errMsg, ut as DeviceType } from "../../dist-DssImRC5.mjs";
1
+ import { C as doorbellCapability, _t as createEvent, it as BaseAddon, kt as EventCategory, rt as errMsg, ut as DeviceType } from "../../dist-RlzjLezj.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-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.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 { L as logDestinationCapability, it as BaseAddon } from "../../dist-DssImRC5.mjs";
1
+ import { L as logDestinationCapability, it as BaseAddon } from "../../dist-RlzjLezj.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.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,4 +1,4 @@
1
- import { _ as authProviderCapability, d as UserRecordSchema, it as BaseAddon, l as ScopedTokenSchema, r as ApiKeyRecordSchema, tt as userManagementCapability } from "../../dist-DssImRC5.mjs";
1
+ import { _ as authProviderCapability, d as UserRecordSchema, it as BaseAddon, l as ScopedTokenSchema, r as ApiKeyRecordSchema, tt as userManagementCapability } from "../../dist-RlzjLezj.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import * as crypto$1 from "node:crypto";
4
4
  import { randomUUID } from "node: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-B5C4dVvO.js");
3
+ const require_dist = require("../../dist-CD5HJkAg.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 { I as localNetworkCapability, it as BaseAddon, kt as EventCategory } from "../../dist-DssImRC5.mjs";
1
+ import { I as localNetworkCapability, it as BaseAddon, kt as EventCategory } from "../../dist-RlzjLezj.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
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { _t as createEvent, it as BaseAddon, kt as EventCategory, z as metricsProviderCapability } from "../../dist-DssImRC5.mjs";
1
+ import { _t as createEvent, it as BaseAddon, kt as EventCategory, z as metricsProviderCapability } from "../../dist-RlzjLezj.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile, execFileSync } from "node:child_process";
4
4
  import { promisify } from "node:util";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,4 +1,4 @@
1
- import { W as platformProbeCapability, it as BaseAddon, kt as EventCategory, q as scoreRuntimes, rt as errMsg, yt as emitReadiness } from "../../dist-DssImRC5.mjs";
1
+ import { W as platformProbeCapability, it as BaseAddon, kt as EventCategory, q as scoreRuntimes, rt as errMsg, yt as emitReadiness } from "../../dist-RlzjLezj.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import { execFile } 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
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.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, kt as EventCategory } from "../../dist-DssImRC5.mjs";
1
+ import { it as BaseAddon, kt as EventCategory } from "../../dist-RlzjLezj.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let node_child_process = require("node:child_process");
8
8
  //#region src/builtins/snapshot/snapshot-coalescing.ts
9
9
  /**
@@ -1,4 +1,4 @@
1
- import { $ as streamQualityLabel, B as nodePin, X as snapshotCapability, ct as DeviceFeature, it as BaseAddon, rt as errMsg, ut as DeviceType } from "../../dist-DssImRC5.mjs";
1
+ import { $ as streamQualityLabel, B as nodePin, X as snapshotCapability, ct as DeviceFeature, it as BaseAddon, rt as errMsg, ut as DeviceType } from "../../dist-RlzjLezj.mjs";
2
2
  import { execFile } from "node:child_process";
3
3
  //#region src/builtins/snapshot/snapshot-coalescing.ts
4
4
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { O as filesystemBrowseCapability, Q as storageProviderCapability, it as BaseAddon } from "../../dist-DssImRC5.mjs";
1
+ import { O as filesystemBrowseCapability, Q as storageProviderCapability, it as BaseAddon } from "../../dist-RlzjLezj.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import * as path$1 from "node:path";
4
4
  import { basename, dirname, join, resolve, sep } from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let better_sqlite3 = require("better-sqlite3");
9
9
  better_sqlite3 = require_chunk.__toESM(better_sqlite3);
@@ -1,4 +1,4 @@
1
- import { Y as settingsStoreCapability, it as BaseAddon, mt as asJsonObject, rt as errMsg, s as RUNTIME_DEFAULTS, wt as parseJsonUnknown } from "../../dist-DssImRC5.mjs";
1
+ import { Y as settingsStoreCapability, it as BaseAddon, mt as asJsonObject, rt as errMsg, s as RUNTIME_DEFAULTS, wt as parseJsonUnknown } from "../../dist-RlzjLezj.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import Database from "better-sqlite3";
4
4
  //#region src/builtins/sqlite-storage/sqlite-settings-backend.ts
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.js");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_chunk.__toESM(node_path);
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- import { Ct as parseJsonObject, Z as storageCapability, it as BaseAddon, u as StorageLocationTypeSchema } from "../../dist-DssImRC5.mjs";
1
+ import { Ct as parseJsonObject, Z as storageCapability, it as BaseAddon, u as StorageLocationTypeSchema } from "../../dist-RlzjLezj.mjs";
2
2
  import * as path$1 from "node:path";
3
3
  import * as fs from "node:fs/promises";
4
4
  import { buildStorageLocationRegistry } from "@camstack/system";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.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 { it as BaseAddon, rt as errMsg, xt as hydrateSchema } from "../../dist-DssImRC5.mjs";
1
+ import { it as BaseAddon, rt as errMsg, xt as hydrateSchema } from "../../dist-RlzjLezj.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-B5C4dVvO.js");
6
+ const require_dist = require("../../dist-CD5HJkAg.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 { L as logDestinationCapability, it as BaseAddon } from "../../dist-DssImRC5.mjs";
1
+ import { L as logDestinationCapability, it as BaseAddon } from "../../dist-RlzjLezj.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";
@@ -3343,6 +3343,62 @@ var RecordingConfigSchema = zod.z.object({
3343
3343
  scrubThumbnails: ScrubThumbnailPresetSchema.optional()
3344
3344
  });
3345
3345
  /**
3346
+ * Ops-log — the durable, append-only operations audit shared by the
3347
+ * recordings and events management surfaces.
3348
+ *
3349
+ * ONE row shape is reused for both domains so a single "Activity" view can
3350
+ * merge the recorder's DurableState ring (recordings ops-log) and the
3351
+ * pipeline-analytics SQLite collection (events ops-log). Each row records a
3352
+ * management operation, WHY it ran (reason), and its measurable effect
3353
+ * (itemsAffected + bytesReclaimed). Writes are best-effort — a failed log must
3354
+ * never fail the operation it records.
3355
+ */
3356
+ /** Which management domain the operation belongs to. */
3357
+ var OpsLogDomainSchema = zod.z.enum(["recording", "events"]);
3358
+ /** The kind of management operation performed. */
3359
+ var OpsLogOpSchema = zod.z.enum([
3360
+ "prune",
3361
+ "manual-delete",
3362
+ "rescan",
3363
+ "retention-run"
3364
+ ]);
3365
+ /** Why the operation ran. */
3366
+ var OpsLogReasonSchema = zod.z.enum([
3367
+ "retention",
3368
+ "quota",
3369
+ "manual",
3370
+ "operator"
3371
+ ]);
3372
+ /** One audit row, shared verbatim by both domains. */
3373
+ var OpsLogEntrySchema = zod.z.object({
3374
+ /** Unique row id. */
3375
+ id: zod.z.string(),
3376
+ /** Epoch ms the operation completed. */
3377
+ at: zod.z.number(),
3378
+ domain: OpsLogDomainSchema,
3379
+ op: OpsLogOpSchema,
3380
+ reason: OpsLogReasonSchema,
3381
+ /** The camera the op targeted; null for a cluster/global op. */
3382
+ deviceId: zod.z.number().nullable(),
3383
+ /** Node that performed the op (the log carries nodeId — no cross-node aggregation). */
3384
+ nodeId: zod.z.string(),
3385
+ /** Buckets / rows deleted (op-specific unit). */
3386
+ itemsAffected: zod.z.number(),
3387
+ /** Bytes reclaimed by the op (0 when not measurable). */
3388
+ bytesReclaimed: zod.z.number(),
3389
+ /** Free-text detail (e.g. "floor moved to <ts>"); null when none. */
3390
+ detail: zod.z.string().nullable(),
3391
+ /** Who/what triggered the op. */
3392
+ actor: zod.z.string()
3393
+ });
3394
+ /** Shared query input for the per-domain `listOpsLog` cap methods. */
3395
+ var OpsLogQueryInputSchema = zod.z.object({
3396
+ /** Restrict to a single camera; omit for every row. */
3397
+ deviceId: zod.z.number().optional(),
3398
+ /** Max rows returned, newest-first. */
3399
+ limit: zod.z.number().int().min(1).max(1e3).optional()
3400
+ });
3401
+ /**
3346
3402
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
3347
3403
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
3348
3404
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -11238,9 +11294,10 @@ var zoneRulesCapability = {
11238
11294
  * `package` backs the package-drop detector — a package zone is a
11239
11295
  * `ZoneRule` on the `'package'` stage referencing drawn polygons
11240
11296
  * (see docs/superpowers/specs/2026-07-17-package-zones-design.md §3.1).
11241
- * The orchestrator provider that writes this stage lands in a later
11242
- * slice; until then the mirror carries only `{motion, detection}` and
11243
- * consumers read `package` as absent (treat as `[]`).
11297
+ * The orchestrator provider writes this stage as a first-class slice
11298
+ * (Phase 4): every mutation mirrors the full `{motion, detection,
11299
+ * package}` shape, so consumers read the current package rules directly
11300
+ * off `device.state.zoneRules.value.package`.
11244
11301
  */
11245
11302
  runtimeState: zod.z.object({
11246
11303
  motion: zod.z.array(ZoneRuleSchema).readonly(),
@@ -16161,6 +16218,26 @@ var TrackCascadeCountsSchema = zod.z.object({
16161
16218
  /** Per-track CLIP search vectors removed (best-effort). */
16162
16219
  embeddings: zod.z.number().int()
16163
16220
  });
16221
+ /** Event-store footprint for one camera. */
16222
+ var EventStoreDeviceFootprintSchema = zod.z.object({
16223
+ deviceId: zod.z.number(),
16224
+ /** Persisted event rows (motion + object + audio) for the camera. */
16225
+ rows: zod.z.number().int(),
16226
+ /** Event-owned media bytes on disk for the camera. */
16227
+ bytes: zod.z.number().int()
16228
+ });
16229
+ /** Aggregate event-store footprint: global totals + per-camera breakdown. */
16230
+ var EventStoreFootprintSchema = zod.z.object({
16231
+ totalRows: zod.z.number().int(),
16232
+ totalBytes: zod.z.number().int(),
16233
+ devices: zod.z.array(EventStoreDeviceFootprintSchema).readonly()
16234
+ });
16235
+ /** Per-kind counts returned by the event-prune / device-delete mutations. */
16236
+ var EventPruneCountsSchema = zod.z.object({
16237
+ motion: zod.z.number().int(),
16238
+ object: zod.z.number().int(),
16239
+ audio: zod.z.number().int()
16240
+ });
16164
16241
  var pipelineAnalyticsCapability = {
16165
16242
  name: "pipeline-analytics",
16166
16243
  scope: "device",
@@ -16322,6 +16399,45 @@ var pipelineAnalyticsCapability = {
16322
16399
  kind: "mutation",
16323
16400
  auth: "admin"
16324
16401
  }),
16402
+ /**
16403
+ * Durable event-store footprint for the management UI: event rows
16404
+ * (motion + object + audio) counted per camera + total, plus the
16405
+ * event-owned media bytes on disk per camera + total. Stat/count-based,
16406
+ * computed on demand.
16407
+ */
16408
+ getEventStoreFootprint: method(zod.z.object({}), EventStoreFootprintSchema, {
16409
+ kind: "query",
16410
+ auth: "admin"
16411
+ }),
16412
+ /**
16413
+ * Cluster-wide prune of events older than `olderThanMs` (exclusive) across
16414
+ * every camera, deleting each event's media in lockstep. Logged to the
16415
+ * events ops-log with `reason` (default `'retention'`). Returns the summed
16416
+ * per-kind deleted counts.
16417
+ */
16418
+ pruneEvents: method(zod.z.object({
16419
+ olderThanMs: zod.z.number(),
16420
+ reason: OpsLogReasonSchema.optional()
16421
+ }), EventPruneCountsSchema, {
16422
+ kind: "mutation",
16423
+ auth: "admin"
16424
+ }),
16425
+ /**
16426
+ * Manually delete EVERY event (motion + object + audio) for one camera and
16427
+ * its event-owned media in lockstep. Logged to the events ops-log as
16428
+ * `op:'manual-delete', reason:'manual'`. Destructive — the admin UI guards
16429
+ * it behind a confirm.
16430
+ */
16431
+ deleteDeviceEvents: method(zod.z.object({ deviceId: zod.z.number() }), EventPruneCountsSchema, {
16432
+ kind: "mutation",
16433
+ auth: "admin"
16434
+ }),
16435
+ /** The events ops-log rows (newest-first), optionally scoped to one camera.
16436
+ * Backed by a declared pipeline-analytics SQLite collection. */
16437
+ listOpsLog: method(OpsLogQueryInputSchema, zod.z.array(OpsLogEntrySchema).readonly(), {
16438
+ kind: "query",
16439
+ auth: "admin"
16440
+ }),
16325
16441
  getEventMedia: method(zod.z.object({
16326
16442
  eventId: zod.z.string(),
16327
16443
  kind: MediaFileKindEnum.optional()
@@ -20945,14 +21061,43 @@ var recordingCapability = {
20945
21061
  auth: "admin"
20946
21062
  }),
20947
21063
  /** Apply this device's retention policy to footage now; returns the oldest
20948
- * surviving footage start (the retention floor) or null if no footage. */
20949
- pruneFootage: method(zod.z.object({ deviceId: zod.z.number() }), zod.z.object({
21064
+ * surviving footage start (the retention floor) or null if no footage. The
21065
+ * prune is logged to the recordings ops-log with `reason` (default
21066
+ * `'retention'` — the policy-driven prune; `'quota'` when disk-pressure
21067
+ * triggered). */
21068
+ pruneFootage: method(zod.z.object({
21069
+ deviceId: zod.z.number(),
21070
+ reason: OpsLogReasonSchema.optional()
21071
+ }), zod.z.object({
20950
21072
  floorMs: zod.z.number().nullable(),
20951
21073
  deletedBuckets: zod.z.number().int(),
20952
21074
  reclaimedBytes: zod.z.number().int()
20953
21075
  }), {
20954
21076
  kind: "mutation",
20955
21077
  auth: "admin"
21078
+ }),
21079
+ /**
21080
+ * Manually delete a camera's footage — the whole footprint, or a
21081
+ * `[fromMs, toMs)` window when either bound is given. Logged to the
21082
+ * recordings ops-log as `op:'manual-delete', reason:'manual'`. Destructive:
21083
+ * the admin UI guards it behind a confirm.
21084
+ */
21085
+ deleteFootprint: method(zod.z.object({
21086
+ deviceId: zod.z.number(),
21087
+ fromMs: zod.z.number().optional(),
21088
+ toMs: zod.z.number().optional()
21089
+ }), zod.z.object({
21090
+ deletedBuckets: zod.z.number().int(),
21091
+ reclaimedBytes: zod.z.number().int()
21092
+ }), {
21093
+ kind: "mutation",
21094
+ auth: "admin"
21095
+ }),
21096
+ /** The recordings ops-log rows (newest-first), optionally scoped to one
21097
+ * camera. Backed by the recorder's bounded DurableState ring. */
21098
+ listOpsLog: method(OpsLogQueryInputSchema, zod.z.array(OpsLogEntrySchema).readonly(), {
21099
+ kind: "query",
21100
+ auth: "admin"
20956
21101
  })
20957
21102
  }
20958
21103
  };
@@ -24655,6 +24800,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24655
24800
  addonId: null,
24656
24801
  access: "delete"
24657
24802
  },
24803
+ "pipelineAnalytics.deleteDeviceEvents": {
24804
+ capName: "pipeline-analytics",
24805
+ capScope: "device",
24806
+ addonId: null,
24807
+ access: "delete"
24808
+ },
24658
24809
  "pipelineAnalytics.deleteTracks": {
24659
24810
  capName: "pipeline-analytics",
24660
24811
  capScope: "device",
@@ -24685,6 +24836,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24685
24836
  addonId: null,
24686
24837
  access: "view"
24687
24838
  },
24839
+ "pipelineAnalytics.getEventStoreFootprint": {
24840
+ capName: "pipeline-analytics",
24841
+ capScope: "device",
24842
+ addonId: null,
24843
+ access: "view"
24844
+ },
24688
24845
  "pipelineAnalytics.getKeyEvents": {
24689
24846
  capName: "pipeline-analytics",
24690
24847
  capScope: "device",
@@ -24727,6 +24884,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24727
24884
  addonId: null,
24728
24885
  access: "view"
24729
24886
  },
24887
+ "pipelineAnalytics.listOpsLog": {
24888
+ capName: "pipeline-analytics",
24889
+ capScope: "device",
24890
+ addonId: null,
24891
+ access: "view"
24892
+ },
24730
24893
  "pipelineAnalytics.listRecentTracks": {
24731
24894
  capName: "pipeline-analytics",
24732
24895
  capScope: "device",
@@ -24739,6 +24902,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24739
24902
  addonId: null,
24740
24903
  access: "view"
24741
24904
  },
24905
+ "pipelineAnalytics.pruneEvents": {
24906
+ capName: "pipeline-analytics",
24907
+ capScope: "device",
24908
+ addonId: null,
24909
+ access: "create"
24910
+ },
24742
24911
  "pipelineAnalytics.pruneEventsBefore": {
24743
24912
  capName: "pipeline-analytics",
24744
24913
  capScope: "device",
@@ -25501,6 +25670,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25501
25670
  addonId: null,
25502
25671
  access: "create"
25503
25672
  },
25673
+ "recording.deleteFootprint": {
25674
+ capName: "recording",
25675
+ capScope: "system",
25676
+ addonId: null,
25677
+ access: "delete"
25678
+ },
25504
25679
  "recording.getAvailability": {
25505
25680
  capName: "recording",
25506
25681
  capScope: "system",
@@ -25531,6 +25706,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25531
25706
  addonId: null,
25532
25707
  access: "view"
25533
25708
  },
25709
+ "recording.listOpsLog": {
25710
+ capName: "recording",
25711
+ capScope: "system",
25712
+ addonId: null,
25713
+ access: "view"
25714
+ },
25534
25715
  "recording.locateSegment": {
25535
25716
  capName: "recording",
25536
25717
  capScope: "system",
@@ -3343,6 +3343,62 @@ var RecordingConfigSchema = z.object({
3343
3343
  scrubThumbnails: ScrubThumbnailPresetSchema.optional()
3344
3344
  });
3345
3345
  /**
3346
+ * Ops-log — the durable, append-only operations audit shared by the
3347
+ * recordings and events management surfaces.
3348
+ *
3349
+ * ONE row shape is reused for both domains so a single "Activity" view can
3350
+ * merge the recorder's DurableState ring (recordings ops-log) and the
3351
+ * pipeline-analytics SQLite collection (events ops-log). Each row records a
3352
+ * management operation, WHY it ran (reason), and its measurable effect
3353
+ * (itemsAffected + bytesReclaimed). Writes are best-effort — a failed log must
3354
+ * never fail the operation it records.
3355
+ */
3356
+ /** Which management domain the operation belongs to. */
3357
+ var OpsLogDomainSchema = z.enum(["recording", "events"]);
3358
+ /** The kind of management operation performed. */
3359
+ var OpsLogOpSchema = z.enum([
3360
+ "prune",
3361
+ "manual-delete",
3362
+ "rescan",
3363
+ "retention-run"
3364
+ ]);
3365
+ /** Why the operation ran. */
3366
+ var OpsLogReasonSchema = z.enum([
3367
+ "retention",
3368
+ "quota",
3369
+ "manual",
3370
+ "operator"
3371
+ ]);
3372
+ /** One audit row, shared verbatim by both domains. */
3373
+ var OpsLogEntrySchema = z.object({
3374
+ /** Unique row id. */
3375
+ id: z.string(),
3376
+ /** Epoch ms the operation completed. */
3377
+ at: z.number(),
3378
+ domain: OpsLogDomainSchema,
3379
+ op: OpsLogOpSchema,
3380
+ reason: OpsLogReasonSchema,
3381
+ /** The camera the op targeted; null for a cluster/global op. */
3382
+ deviceId: z.number().nullable(),
3383
+ /** Node that performed the op (the log carries nodeId — no cross-node aggregation). */
3384
+ nodeId: z.string(),
3385
+ /** Buckets / rows deleted (op-specific unit). */
3386
+ itemsAffected: z.number(),
3387
+ /** Bytes reclaimed by the op (0 when not measurable). */
3388
+ bytesReclaimed: z.number(),
3389
+ /** Free-text detail (e.g. "floor moved to <ts>"); null when none. */
3390
+ detail: z.string().nullable(),
3391
+ /** Who/what triggered the op. */
3392
+ actor: z.string()
3393
+ });
3394
+ /** Shared query input for the per-domain `listOpsLog` cap methods. */
3395
+ var OpsLogQueryInputSchema = z.object({
3396
+ /** Restrict to a single camera; omit for every row. */
3397
+ deviceId: z.number().optional(),
3398
+ /** Max rows returned, newest-first. */
3399
+ limit: z.number().int().min(1).max(1e3).optional()
3400
+ });
3401
+ /**
3346
3402
  * `StorageLocationType` — an addon-declared id that identifies the *kind* of
3347
3403
  * storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
3348
3404
  * so the persisted record schema and the consumer-facing cap can both consume it
@@ -11238,9 +11294,10 @@ var zoneRulesCapability = {
11238
11294
  * `package` backs the package-drop detector — a package zone is a
11239
11295
  * `ZoneRule` on the `'package'` stage referencing drawn polygons
11240
11296
  * (see docs/superpowers/specs/2026-07-17-package-zones-design.md §3.1).
11241
- * The orchestrator provider that writes this stage lands in a later
11242
- * slice; until then the mirror carries only `{motion, detection}` and
11243
- * consumers read `package` as absent (treat as `[]`).
11297
+ * The orchestrator provider writes this stage as a first-class slice
11298
+ * (Phase 4): every mutation mirrors the full `{motion, detection,
11299
+ * package}` shape, so consumers read the current package rules directly
11300
+ * off `device.state.zoneRules.value.package`.
11244
11301
  */
11245
11302
  runtimeState: z.object({
11246
11303
  motion: z.array(ZoneRuleSchema).readonly(),
@@ -16161,6 +16218,26 @@ var TrackCascadeCountsSchema = z.object({
16161
16218
  /** Per-track CLIP search vectors removed (best-effort). */
16162
16219
  embeddings: z.number().int()
16163
16220
  });
16221
+ /** Event-store footprint for one camera. */
16222
+ var EventStoreDeviceFootprintSchema = z.object({
16223
+ deviceId: z.number(),
16224
+ /** Persisted event rows (motion + object + audio) for the camera. */
16225
+ rows: z.number().int(),
16226
+ /** Event-owned media bytes on disk for the camera. */
16227
+ bytes: z.number().int()
16228
+ });
16229
+ /** Aggregate event-store footprint: global totals + per-camera breakdown. */
16230
+ var EventStoreFootprintSchema = z.object({
16231
+ totalRows: z.number().int(),
16232
+ totalBytes: z.number().int(),
16233
+ devices: z.array(EventStoreDeviceFootprintSchema).readonly()
16234
+ });
16235
+ /** Per-kind counts returned by the event-prune / device-delete mutations. */
16236
+ var EventPruneCountsSchema = z.object({
16237
+ motion: z.number().int(),
16238
+ object: z.number().int(),
16239
+ audio: z.number().int()
16240
+ });
16164
16241
  var pipelineAnalyticsCapability = {
16165
16242
  name: "pipeline-analytics",
16166
16243
  scope: "device",
@@ -16322,6 +16399,45 @@ var pipelineAnalyticsCapability = {
16322
16399
  kind: "mutation",
16323
16400
  auth: "admin"
16324
16401
  }),
16402
+ /**
16403
+ * Durable event-store footprint for the management UI: event rows
16404
+ * (motion + object + audio) counted per camera + total, plus the
16405
+ * event-owned media bytes on disk per camera + total. Stat/count-based,
16406
+ * computed on demand.
16407
+ */
16408
+ getEventStoreFootprint: method(z.object({}), EventStoreFootprintSchema, {
16409
+ kind: "query",
16410
+ auth: "admin"
16411
+ }),
16412
+ /**
16413
+ * Cluster-wide prune of events older than `olderThanMs` (exclusive) across
16414
+ * every camera, deleting each event's media in lockstep. Logged to the
16415
+ * events ops-log with `reason` (default `'retention'`). Returns the summed
16416
+ * per-kind deleted counts.
16417
+ */
16418
+ pruneEvents: method(z.object({
16419
+ olderThanMs: z.number(),
16420
+ reason: OpsLogReasonSchema.optional()
16421
+ }), EventPruneCountsSchema, {
16422
+ kind: "mutation",
16423
+ auth: "admin"
16424
+ }),
16425
+ /**
16426
+ * Manually delete EVERY event (motion + object + audio) for one camera and
16427
+ * its event-owned media in lockstep. Logged to the events ops-log as
16428
+ * `op:'manual-delete', reason:'manual'`. Destructive — the admin UI guards
16429
+ * it behind a confirm.
16430
+ */
16431
+ deleteDeviceEvents: method(z.object({ deviceId: z.number() }), EventPruneCountsSchema, {
16432
+ kind: "mutation",
16433
+ auth: "admin"
16434
+ }),
16435
+ /** The events ops-log rows (newest-first), optionally scoped to one camera.
16436
+ * Backed by a declared pipeline-analytics SQLite collection. */
16437
+ listOpsLog: method(OpsLogQueryInputSchema, z.array(OpsLogEntrySchema).readonly(), {
16438
+ kind: "query",
16439
+ auth: "admin"
16440
+ }),
16325
16441
  getEventMedia: method(z.object({
16326
16442
  eventId: z.string(),
16327
16443
  kind: MediaFileKindEnum.optional()
@@ -20945,14 +21061,43 @@ var recordingCapability = {
20945
21061
  auth: "admin"
20946
21062
  }),
20947
21063
  /** Apply this device's retention policy to footage now; returns the oldest
20948
- * surviving footage start (the retention floor) or null if no footage. */
20949
- pruneFootage: method(z.object({ deviceId: z.number() }), z.object({
21064
+ * surviving footage start (the retention floor) or null if no footage. The
21065
+ * prune is logged to the recordings ops-log with `reason` (default
21066
+ * `'retention'` — the policy-driven prune; `'quota'` when disk-pressure
21067
+ * triggered). */
21068
+ pruneFootage: method(z.object({
21069
+ deviceId: z.number(),
21070
+ reason: OpsLogReasonSchema.optional()
21071
+ }), z.object({
20950
21072
  floorMs: z.number().nullable(),
20951
21073
  deletedBuckets: z.number().int(),
20952
21074
  reclaimedBytes: z.number().int()
20953
21075
  }), {
20954
21076
  kind: "mutation",
20955
21077
  auth: "admin"
21078
+ }),
21079
+ /**
21080
+ * Manually delete a camera's footage — the whole footprint, or a
21081
+ * `[fromMs, toMs)` window when either bound is given. Logged to the
21082
+ * recordings ops-log as `op:'manual-delete', reason:'manual'`. Destructive:
21083
+ * the admin UI guards it behind a confirm.
21084
+ */
21085
+ deleteFootprint: method(z.object({
21086
+ deviceId: z.number(),
21087
+ fromMs: z.number().optional(),
21088
+ toMs: z.number().optional()
21089
+ }), z.object({
21090
+ deletedBuckets: z.number().int(),
21091
+ reclaimedBytes: z.number().int()
21092
+ }), {
21093
+ kind: "mutation",
21094
+ auth: "admin"
21095
+ }),
21096
+ /** The recordings ops-log rows (newest-first), optionally scoped to one
21097
+ * camera. Backed by the recorder's bounded DurableState ring. */
21098
+ listOpsLog: method(OpsLogQueryInputSchema, z.array(OpsLogEntrySchema).readonly(), {
21099
+ kind: "query",
21100
+ auth: "admin"
20956
21101
  })
20957
21102
  }
20958
21103
  };
@@ -24655,6 +24800,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24655
24800
  addonId: null,
24656
24801
  access: "delete"
24657
24802
  },
24803
+ "pipelineAnalytics.deleteDeviceEvents": {
24804
+ capName: "pipeline-analytics",
24805
+ capScope: "device",
24806
+ addonId: null,
24807
+ access: "delete"
24808
+ },
24658
24809
  "pipelineAnalytics.deleteTracks": {
24659
24810
  capName: "pipeline-analytics",
24660
24811
  capScope: "device",
@@ -24685,6 +24836,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24685
24836
  addonId: null,
24686
24837
  access: "view"
24687
24838
  },
24839
+ "pipelineAnalytics.getEventStoreFootprint": {
24840
+ capName: "pipeline-analytics",
24841
+ capScope: "device",
24842
+ addonId: null,
24843
+ access: "view"
24844
+ },
24688
24845
  "pipelineAnalytics.getKeyEvents": {
24689
24846
  capName: "pipeline-analytics",
24690
24847
  capScope: "device",
@@ -24727,6 +24884,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24727
24884
  addonId: null,
24728
24885
  access: "view"
24729
24886
  },
24887
+ "pipelineAnalytics.listOpsLog": {
24888
+ capName: "pipeline-analytics",
24889
+ capScope: "device",
24890
+ addonId: null,
24891
+ access: "view"
24892
+ },
24730
24893
  "pipelineAnalytics.listRecentTracks": {
24731
24894
  capName: "pipeline-analytics",
24732
24895
  capScope: "device",
@@ -24739,6 +24902,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
24739
24902
  addonId: null,
24740
24903
  access: "view"
24741
24904
  },
24905
+ "pipelineAnalytics.pruneEvents": {
24906
+ capName: "pipeline-analytics",
24907
+ capScope: "device",
24908
+ addonId: null,
24909
+ access: "create"
24910
+ },
24742
24911
  "pipelineAnalytics.pruneEventsBefore": {
24743
24912
  capName: "pipeline-analytics",
24744
24913
  capScope: "device",
@@ -25501,6 +25670,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25501
25670
  addonId: null,
25502
25671
  access: "create"
25503
25672
  },
25673
+ "recording.deleteFootprint": {
25674
+ capName: "recording",
25675
+ capScope: "system",
25676
+ addonId: null,
25677
+ access: "delete"
25678
+ },
25504
25679
  "recording.getAvailability": {
25505
25680
  capName: "recording",
25506
25681
  capScope: "system",
@@ -25531,6 +25706,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
25531
25706
  addonId: null,
25532
25707
  access: "view"
25533
25708
  },
25709
+ "recording.listOpsLog": {
25710
+ capName: "recording",
25711
+ capScope: "system",
25712
+ addonId: null,
25713
+ access: "view"
25714
+ },
25534
25715
  "recording.locateSegment": {
25535
25716
  capName: "recording",
25536
25717
  capScope: "system",
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-B5C4dVvO.js");
3
+ const require_dist = require("./dist-CD5HJkAg.js");
4
4
  const require_model_download_service = require("./model-download-service-hf0ookyy.js");
5
- const require_manifest_python_deps = require("./manifest-python-deps-kkvku9yU.js");
5
+ const require_manifest_python_deps = require("./manifest-python-deps-BpDOYWC2.js");
6
6
  const require_resource_monitor = require("./resource-monitor-DNNomR-i.js");
7
7
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./builtins/sqlite-storage/filesystem-storage.addon.js");
8
8
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./builtins/sqlite-storage/sqlite-settings.addon.js");
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { A as isArrayOutputSchema, Ct as parseJsonObject, D as extractNestedAddonId, Dt as scopeKey, Et as resolveCapMount, F as lifecycleJobSchema, G as procedureAuthKey, H as objectInputDeclaresAddonId, M as isObjectInput, N as isVoidInput, P as kebabToCamel, R as looseSchema, Tt as readinessKey, _t as createEvent, at as DATAPLANE_SECRET_HEADER$1, bt as expandCapMethods, dt as ReadinessRegistry, ft as ReadinessTimeoutError, gt as asString$1, ht as asNumber, j as isCollectionArrayMethod, kt as EventCategory$1, mt as asJsonObject$1, o as METHOD_ACCESS_MAP, ot as DEVICE_SETTINGS_CONTRIBUTION_METHODS, p as addonSettingsCapability, rt as errMsg$1, s as RUNTIME_DEFAULTS, st as DEVICE_STATUS_METHOD, t as ALL_CAPABILITY_DEFINITIONS, vt as emitDownForOwnedCaps, wt as parseJsonUnknown$1 } from "./dist-DssImRC5.mjs";
1
+ import { A as isArrayOutputSchema, Ct as parseJsonObject, D as extractNestedAddonId, Dt as scopeKey, Et as resolveCapMount, F as lifecycleJobSchema, G as procedureAuthKey, H as objectInputDeclaresAddonId, M as isObjectInput, N as isVoidInput, P as kebabToCamel, R as looseSchema, Tt as readinessKey, _t as createEvent, at as DATAPLANE_SECRET_HEADER$1, bt as expandCapMethods, dt as ReadinessRegistry, ft as ReadinessTimeoutError, gt as asString$1, ht as asNumber, j as isCollectionArrayMethod, kt as EventCategory$1, mt as asJsonObject$1, o as METHOD_ACCESS_MAP, ot as DEVICE_SETTINGS_CONTRIBUTION_METHODS, p as addonSettingsCapability, rt as errMsg$1, s as RUNTIME_DEFAULTS, st as DEVICE_STATUS_METHOD, t as ALL_CAPABILITY_DEFINITIONS, vt as emitDownForOwnedCaps, wt as parseJsonUnknown$1 } from "./dist-RlzjLezj.mjs";
2
2
  import { a as downloadModel, c as getModelFilePath, d as contentTypeFor, f as createAuthenticatedFileServer, h as resolveFilePath, i as downloadFile, l as isModelDownloaded, m as parseTokenizedUrl, n as collectModelFiles, o as ensureModel, p as parseRangeHeader, r as deleteModelFromDisk, s as fetchJson, t as ModelDownloadService, u as createFileDataPlaneHandler } from "./model-download-service-Cp9f4dk6.mjs";
3
- import { $ as buildUdsNativeCapProxy, A as createParentUnownedCallHandler, B as AGENT_CAP_FWD_SERVICE, C as buildLinkChain, D as HUB_CAP_FWD_ACTION, E as localProviderLink, F as createUdsLoggerWithControl, G as createLocalTransport, H as CapRouteError, I as LocalChildClient, J as SocketChannel, K as UdsLocalTransportClient, L as LocalChildRegistry, M as createUdsEventBus, N as udsChildLogToWorkerEntry, O as HUB_CAP_FWD_SERVICE, P as createUdsLogger, Q as buildNativeCapProxy, R as UDS_NO_ROUTE_PREFIX, S as brokerTransportLink, T as ipcParentLink, U as classifyCapRoute, V as CapRouteResolver, W as callWithServiceDiscovery, X as FrameDecoder, Y as localEndpointPath, Z as encodeFrame, _ as resolveHwAccel, _t as CapabilityUnavailableError, a as getWorkerDeviceRegistry, at as createAddonService, b as getCapUsageRegistry, bt as resolveAddonClass, c as setHubConnected, ct as capActionName, d as getMoleculerEventStats, dt as capServiceName, et as createBrokerDeviceManagerApi, f as registerEventBusService, ft as parseCapAction, g as createKernelHwAccel, gt as CapabilityHandle, h as AddonDepsManager, ht as DeviceRegistry, i as createUdsAddonContext, j as createUdsEventBridge, k as createHubCapForwardService, l as EVENT_TOPIC_PREFIX, lt as capActionSuffix, m as subscribePassthrough, mt as serializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as validateProviderRegistrations, p as setNodeEventInterest, pt as deserializeTypedArrays, q as UdsLocalTransportServer, r as createAddonContext, rt as mountNativeCapService, s as getOrInitReadinessRegistryForClient, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestPythonDeps, u as getBrokerEventBus, ut as capBareAction, v as CapUsageRegistry, vt as installManifestNativeDeps, w as ipcChildLink, x as brokerCallForCap, xt as createAddonDataPlaneFacility, y as __resetCapUsageRegistryForTests, yt as runNpm, z as AGENT_CAP_FWD_ACTION } from "./manifest-python-deps-CWom-eqp.mjs";
3
+ import { $ as buildUdsNativeCapProxy, A as createParentUnownedCallHandler, B as AGENT_CAP_FWD_SERVICE, C as buildLinkChain, D as HUB_CAP_FWD_ACTION, E as localProviderLink, F as createUdsLoggerWithControl, G as createLocalTransport, H as CapRouteError, I as LocalChildClient, J as SocketChannel, K as UdsLocalTransportClient, L as LocalChildRegistry, M as createUdsEventBus, N as udsChildLogToWorkerEntry, O as HUB_CAP_FWD_SERVICE, P as createUdsLogger, Q as buildNativeCapProxy, R as UDS_NO_ROUTE_PREFIX, S as brokerTransportLink, T as ipcParentLink, U as classifyCapRoute, V as CapRouteResolver, W as callWithServiceDiscovery, X as FrameDecoder, Y as localEndpointPath, Z as encodeFrame, _ as resolveHwAccel, _t as CapabilityUnavailableError, a as getWorkerDeviceRegistry, at as createAddonService, b as getCapUsageRegistry, bt as resolveAddonClass, c as setHubConnected, ct as capActionName, d as getMoleculerEventStats, dt as capServiceName, et as createBrokerDeviceManagerApi, f as registerEventBusService, ft as parseCapAction, g as createKernelHwAccel, gt as CapabilityHandle, h as AddonDepsManager, ht as DeviceRegistry, i as createUdsAddonContext, j as createUdsEventBridge, k as createHubCapForwardService, l as EVENT_TOPIC_PREFIX, lt as capActionSuffix, m as subscribePassthrough, mt as serializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as validateProviderRegistrations, p as setNodeEventInterest, pt as deserializeTypedArrays, q as UdsLocalTransportServer, r as createAddonContext, rt as mountNativeCapService, s as getOrInitReadinessRegistryForClient, st as NATIVE_PROVIDER_SERVICE_INFIX, t as installManifestPythonDeps, u as getBrokerEventBus, ut as capBareAction, v as CapUsageRegistry, vt as installManifestNativeDeps, w as ipcChildLink, x as brokerCallForCap, xt as createAddonDataPlaneFacility, y as __resetCapUsageRegistryForTests, yt as runNpm, z as AGENT_CAP_FWD_ACTION } from "./manifest-python-deps-BMKlyabv.mjs";
4
4
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-Le3l0qS2.mjs";
5
5
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
6
6
  import { SqliteSettingsAddon, t as SqliteSettingsBackend } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
@@ -1,4 +1,4 @@
1
- import { K as readNodePin } from "./dist-DssImRC5.mjs";
1
+ import { K as readNodePin } from "./dist-RlzjLezj.mjs";
2
2
  import { ensureBinary, ensureFfmpeg, ensurePython, installPythonPackages, installPythonRequirements } from "@camstack/types/node";
3
3
  import { createServer } from "node:http";
4
4
  import * as fs from "node:fs";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-B5C4dVvO.js");
2
+ const require_dist = require("./dist-CD5HJkAg.js");
3
3
  let _camstack_types_node = require("@camstack/types/node");
4
4
  let node_http = require("node:http");
5
5
  let node_fs = require("node:fs");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.1.54",
3
+ "version": "1.1.55",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",