@camstack/system 1.2.32 → 1.2.33

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/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/device-manager/device-manager.addon.js +1 -1
  12. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  13. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  14. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  15. package/dist/builtins/hub-forwarder/index.js +1 -1
  16. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  17. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  18. package/dist/builtins/liveness-monitor/liveness-monitor.addon.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/loki-logging/index.js +1 -1
  24. package/dist/builtins/loki-logging/index.mjs +1 -1
  25. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  26. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  27. package/dist/builtins/platform-probe/index.js +1 -1
  28. package/dist/builtins/platform-probe/index.mjs +1 -1
  29. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  30. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  31. package/dist/builtins/snapshot/index.js +1 -1
  32. package/dist/builtins/snapshot/index.mjs +1 -1
  33. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  34. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  35. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  36. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  37. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  38. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  39. package/dist/builtins/system-config/system-config.addon.js +1 -1
  40. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  41. package/dist/builtins/winston-logging/index.js +1 -1
  42. package/dist/builtins/winston-logging/index.mjs +1 -1
  43. package/dist/{dist-CSs1A90r.js → dist-CvmFWwEo.js} +170 -4
  44. package/dist/{dist-BL_FHWPP.mjs → dist-Q3N47mdR.mjs} +170 -4
  45. package/dist/index.js +1 -1
  46. package/dist/index.mjs +1 -1
  47. 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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, at as errMsg, ot as BaseAddon, p as addonPagesCapability } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, at as errMsg, ot as BaseAddon, p as addonPagesCapability } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, at as errMsg, h as addonWidgetsCapability, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, at as errMsg, h as addonWidgetsCapability, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, at as errMsg, g as alertsCapability, n as AlertSchema, ot as BaseAddon, yt as createEvent } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, at as errMsg, g as alertsCapability, n as AlertSchema, ot as BaseAddon, yt as createEvent } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, ot as BaseAddon, y as backupCapability } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, ot as BaseAddon, y as backupCapability } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { B as logDestinationCapability, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { C as deviceStateCapability, D as enumerateItemArrayFields, K as parseStreamParamsFormPatch, M as getByPath, Mt as EventCategory, O as enumerateSchemaFields, S as deviceManagerCapability, W as normalizeUnit, X as setByPath, _ as applyTransform, a as CAP_NAMES_WITH_STATUS, at as errMsg, b as buildStreamParamsConfigSchema, dt as DeviceRole, ft as DeviceType, ht as WELL_KNOWN_TAB_MAP, it as validateExpressionSource, jt as sleep, k as evaluateLinkExpression, l as STREAM_PROFILE_META, nt as toExpressionValue, o as DeviceStatusSchema, ot as BaseAddon, t as ALL_CAPABILITY_DEFINITIONS, ut as DeviceFeature, w as deviceStatusCapability, wt as isDeviceConfigCap } from "../../dist-BL_FHWPP.mjs";
1
+ import { C as deviceStateCapability, D as enumerateItemArrayFields, K as parseStreamParamsFormPatch, M as getByPath, Mt as EventCategory, O as enumerateSchemaFields, S as deviceManagerCapability, W as normalizeUnit, X as setByPath, _ as applyTransform, a as CAP_NAMES_WITH_STATUS, at as errMsg, b as buildStreamParamsConfigSchema, dt as DeviceRole, ft as DeviceType, ht as WELL_KNOWN_TAB_MAP, it as validateExpressionSource, jt as sleep, k as evaluateLinkExpression, l as STREAM_PROFILE_META, nt as toExpressionValue, o as DeviceStatusSchema, ot as BaseAddon, t as ALL_CAPABILITY_DEFINITIONS, ut as DeviceFeature, w as deviceStatusCapability, wt as isDeviceConfigCap } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, T as doorbellCapability, at as errMsg, ft as DeviceType, ot as BaseAddon, yt as createEvent } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, T as doorbellCapability, at as errMsg, ft as DeviceType, ot as BaseAddon, yt as createEvent } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { B as logDestinationCapability, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
3
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, at as errMsg, ot as BaseAddon, yt as createEvent } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, at as errMsg, ot as BaseAddon, yt as createEvent } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { f as UserRecordSchema, ot as BaseAddon, r as ApiKeyRecordSchema, rt as userManagementCapability, u as ScopedTokenSchema, v as authProviderCapability } from "../../dist-BL_FHWPP.mjs";
2
+ import { f as UserRecordSchema, ot as BaseAddon, r as ApiKeyRecordSchema, rt as userManagementCapability, u as ScopedTokenSchema, v as authProviderCapability } from "../../dist-Q3N47mdR.mjs";
3
3
  import * as crypto$1 from "node:crypto";
4
4
  import { randomUUID } 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-CSs1A90r.js");
3
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, ot as BaseAddon, z as localNetworkCapability } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, ot as BaseAddon, z as localNetworkCapability } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { B as logDestinationCapability, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, U as metricsProviderCapability, ot as BaseAddon, yt as createEvent } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, U as metricsProviderCapability, ot as BaseAddon, yt as createEvent } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.js");
7
7
  let node_fs = require("node:fs");
8
8
  node_fs = require_chunk.__toESM(node_fs);
9
9
  let node_child_process = require("node:child_process");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { E as enumerateInferenceDevices, Mt as EventCategory, Y as scoreRuntimes, at as errMsg, ot as BaseAddon, q as platformProbeCapability, xt as emitReadiness } from "../../dist-BL_FHWPP.mjs";
2
+ import { E as enumerateInferenceDevices, Mt as EventCategory, Y as scoreRuntimes, at as errMsg, ot as BaseAddon, q as platformProbeCapability, xt as emitReadiness } from "../../dist-Q3N47mdR.mjs";
3
3
  import * as fs from "node:fs";
4
4
  import { execFile } from "node:child_process";
5
5
  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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Mt as EventCategory, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { Mt as EventCategory, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Q as snapshotCapability, Tt as nodePin, at as errMsg, ft as DeviceType, i as BatteryStatusSchema, ot as BaseAddon, tt as streamQualityLabel, ut as DeviceFeature } from "../../dist-BL_FHWPP.mjs";
1
+ import { Q as snapshotCapability, Tt as nodePin, at as errMsg, ft as DeviceType, i as BatteryStatusSchema, ot as BaseAddon, tt as streamQualityLabel, ut as DeviceFeature } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { et as storageProviderCapability, j as filesystemBrowseCapability, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { et as storageProviderCapability, j as filesystemBrowseCapability, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Dt as parseJsonUnknown, at as errMsg, c as RUNTIME_DEFAULTS, gt as asJsonObject, ot as BaseAddon, x as dataStoreProviderCapability } from "../../dist-BL_FHWPP.mjs";
1
+ import { Dt as parseJsonUnknown, at as errMsg, c as RUNTIME_DEFAULTS, gt as asJsonObject, ot as BaseAddon, x as dataStoreProviderCapability } from "../../dist-Q3N47mdR.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import Database from "better-sqlite3";
4
4
  //#region src/builtins/sqlite-storage/filter-compiler.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { $ as storageCapability, Et as parseJsonObject, Z as settingsStoreCapability, d as StorageLocationTypeSchema, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { $ as storageCapability, Et as parseJsonObject, Z as settingsStoreCapability, d as StorageLocationTypeSchema, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { Ct as hydrateSchema, at as errMsg, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { Ct as hydrateSchema, at as errMsg, ot as BaseAddon } from "../../dist-Q3N47mdR.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-CSs1A90r.js");
6
+ const require_dist = require("../../dist-CvmFWwEo.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 { B as logDestinationCapability, ot as BaseAddon } from "../../dist-BL_FHWPP.mjs";
1
+ import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-Q3N47mdR.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";
@@ -5613,6 +5613,14 @@ var NcMediaPolicySchema = zod.z.object({
5613
5613
  clipPreRollSec: zod.z.number().int().min(0).max(30).optional(),
5614
5614
  clipPostRollSec: zod.z.number().int().min(0).max(30).optional(),
5615
5615
  /**
5616
+ * Playback rate of the attached gif / clip. Absent = 2x.
5617
+ *
5618
+ * A notification clip is GLANCED at on a lock screen, not watched: at real
5619
+ * time an eight-second passage is eight seconds of the recipient's attention
5620
+ * and twice the bytes. 1 is real time for the operator who wants it.
5621
+ */
5622
+ clipSpeed: zod.z.number().min(1).max(8).optional(),
5623
+ /**
5616
5624
  * Which stream profile the footage is cut from. Absent = the CHEAPEST
5617
5625
  * assigned profile: a notification is watched on a phone, so the 4K
5618
5626
  * rendition would burn CPU to produce a file the client downscales anyway.
@@ -5684,7 +5692,21 @@ var NcRuleInputSchema = zod.z.object({
5684
5692
  * behaviour, visible to all, read-only in the viewer). Present = personal
5685
5693
  * rule owned by this userId. Server-stamped; never trusted from a client.
5686
5694
  */
5687
- ownerUserId: zod.z.string().optional()
5695
+ ownerUserId: zod.z.string().optional(),
5696
+ /**
5697
+ * May a non-admin snooze this rule for EVERYONE, not just themselves?
5698
+ *
5699
+ * A snooze is personal by default — it silences the person who set it. This
5700
+ * opts THIS rule into the "the gardener is here all afternoon" case, where
5701
+ * silencing the camera for the whole household is legitimate. It silences
5702
+ * other people, so it is off unless a rule deliberately allows it.
5703
+ *
5704
+ * `.optional()`, deliberately NOT `.default()`: a Zod default does not run on
5705
+ * the addon cap path (three production failures in one day), so absent is
5706
+ * read as `false` by {@link canSetGlobal} in the engine. Admins are not bound
5707
+ * by this flag — see the scope rules on that function.
5708
+ */
5709
+ snoozeAllowGlobal: zod.z.boolean().optional()
5688
5710
  });
5689
5711
  /**
5690
5712
  * Partial patch for `updateRule` — any subset of the input fields, plus the
@@ -5769,7 +5791,28 @@ var NcConditionDescriptorSchema = zod.z.object({
5769
5791
  /** Which delivery kinds the condition applies to. */
5770
5792
  appliesTo: zod.z.array(NcDeliverySchema),
5771
5793
  phase: zod.z.string(),
5772
- description: zod.z.string().optional()
5794
+ description: zod.z.string().optional(),
5795
+ /**
5796
+ * The CHOICES for a single-choice widget (`sourceSelect`, `crossingSelect`,
5797
+ * `packagePhase`, …), served with the descriptor.
5798
+ *
5799
+ * Before this the descriptor said which widget to render and not what to put
5800
+ * in it, so every option list lived in three places: this file's enums, the
5801
+ * admin's `NC_*_OPTIONS` and the viewer's `NC_*_VALUES`. That triple mirror
5802
+ * is the drift that emptied the viewer's rule editor on 2026-08-04 — the app
5803
+ * mirrors the cap by hand, so it is only ever as current as its last build.
5804
+ *
5805
+ * With the options on the wire, a condition of an EXISTING `valueType` costs
5806
+ * zero client changes. Clients keep a local fallback for an older hub that
5807
+ * does not send them; absent here is "use your own list", not "no choices".
5808
+ */
5809
+ options: zod.z.array(zod.z.object({
5810
+ /** Written to the rule verbatim. `''` means the ABSENT state. */
5811
+ value: zod.z.string(),
5812
+ label: zod.z.string(),
5813
+ /** What THIS choice matches — shown one at a time, under the control. */
5814
+ hint: zod.z.string().optional()
5815
+ })).readonly().optional()
5773
5816
  });
5774
5817
  /**
5775
5818
  * The delivery lifecycle status of a history row — a straight read of the
@@ -5854,6 +5897,74 @@ var NcHistoryFilterSchema = zod.z.object({
5854
5897
  until: zod.z.number().optional(),
5855
5898
  limit: zod.z.number().int().min(1).max(500).default(100)
5856
5899
  });
5900
+ /**
5901
+ * What a snooze covers. Broader scopes win when several overlap, so one window
5902
+ * leaves ONE digest rather than a rule snooze and a whole-feed snooze both
5903
+ * summarising the same silence.
5904
+ */
5905
+ var NcSnoozeScopeSchema = zod.z.enum([
5906
+ "rule",
5907
+ "device",
5908
+ "all"
5909
+ ]);
5910
+ /**
5911
+ * Client-authored snooze. The server stamps `userId`, `startedAt` and
5912
+ * `expiresAt` — a DURATION is sent rather than an instant so a client with a
5913
+ * skewed clock cannot author a window that is already over, or never ends.
5914
+ */
5915
+ var NcSnoozeInputSchema = zod.z.object({
5916
+ scope: NcSnoozeScopeSchema,
5917
+ /** Required when `scope: 'rule'` — a scoped snooze with no id matches
5918
+ * NOTHING rather than degrading to "everything". */
5919
+ ruleId: zod.z.string().optional(),
5920
+ /** Required when `scope: 'device'`. */
5921
+ deviceId: zod.z.number().int().optional(),
5922
+ durationMinutes: zod.z.number().int().min(1).max(1440),
5923
+ /**
5924
+ * Silence this for EVERY recipient, not just the caller. Permission is
5925
+ * checked server-side (the rule's `snoozeAllowGlobal`, or admin for the
5926
+ * broader scopes). Absent = personal.
5927
+ */
5928
+ global: zod.z.boolean().optional(),
5929
+ /**
5930
+ * Deliver a summary of what was suppressed when the window ends. Absent =
5931
+ * ON: someone silencing a nuisance camera wants it off, someone silencing a
5932
+ * SECURITY camera wants to know what they missed, and choosing "off" for
5933
+ * everybody is how a snooze becomes an outage. Resolved to a concrete
5934
+ * boolean by the server at create time — never left to a Zod default, which
5935
+ * does not run on the addon cap path.
5936
+ */
5937
+ summary: zod.z.boolean().optional()
5938
+ });
5939
+ /** A persisted snooze window. */
5940
+ var NcSnoozeSchema = zod.z.object({
5941
+ id: zod.z.string(),
5942
+ /** Who set it. Also who it silences, unless `global`. */
5943
+ userId: zod.z.string(),
5944
+ scope: NcSnoozeScopeSchema,
5945
+ ruleId: zod.z.string().optional(),
5946
+ deviceId: zod.z.number().int().optional(),
5947
+ startedAt: zod.z.number(),
5948
+ /** Exclusive: at exactly this instant the snooze is over. Expiry is a
5949
+ * COMPARISON, not a job — no sweeper can leave the operator silenced. */
5950
+ expiresAt: zod.z.number(),
5951
+ global: zod.z.boolean(),
5952
+ summary: zod.z.boolean(),
5953
+ /** When the end-of-window digest went out. Absent = not sent (yet, or the
5954
+ * window has not closed, or `summary` is false). */
5955
+ digestSentAt: zod.z.number().optional()
5956
+ });
5957
+ zod.z.object({
5958
+ snoozeId: zod.z.string(),
5959
+ targetId: zod.z.string(),
5960
+ ruleId: zod.z.string(),
5961
+ ruleName: zod.z.string(),
5962
+ deviceId: zod.z.number().int(),
5963
+ /** How many notifications this snooze hid for that pair. */
5964
+ count: zod.z.number().int(),
5965
+ firstAt: zod.z.number(),
5966
+ lastAt: zod.z.number()
5967
+ });
5857
5968
  var notificationRulesCapability = {
5858
5969
  name: "notification-rules",
5859
5970
  scope: "system",
@@ -5920,7 +6031,36 @@ var notificationRulesCapability = {
5920
6031
  * P1 (no user dimension); the P2 viewer History screen adds per-caller
5921
6032
  * scoping on the same method.
5922
6033
  */
5923
- getHistory: method(zod.z.object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), zod.z.object({ entries: zod.z.array(NcHistoryEntrySchema) }), { auth: "admin" })
6034
+ getHistory: method(zod.z.object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), zod.z.object({ entries: zod.z.array(NcHistoryEntrySchema) }), { auth: "admin" }),
6035
+ /**
6036
+ * Snooze windows currently in effect, plus any whose digest has not yet
6037
+ * gone out. `caller: 'required'`: a user sees their OWN windows and the
6038
+ * global ones that silence them, never another person's private silence.
6039
+ * An admin sees every window — a household-wide silence is exactly the
6040
+ * thing an operator has to be able to find and cancel.
6041
+ */
6042
+ listSnoozes: method(zod.z.object({}), zod.z.object({ snoozes: zod.z.array(NcSnoozeSchema) }), { caller: "required" }),
6043
+ /**
6044
+ * Open a window. `userId` is stamped from the caller; a GLOBAL window is
6045
+ * permission-checked server-side (the rule's `snoozeAllowGlobal` for a
6046
+ * rule-scoped one, admin for a camera or the whole feed) — a client asking
6047
+ * for one it may not have is rejected, never silently downgraded, because
6048
+ * a snooze the operator believes is in effect and is not is the same
6049
+ * failure as one they cannot end.
6050
+ */
6051
+ createSnooze: method(zod.z.object({ snooze: NcSnoozeInputSchema }), zod.z.object({ snooze: NcSnoozeSchema }), {
6052
+ kind: "mutation",
6053
+ caller: "required"
6054
+ }),
6055
+ /**
6056
+ * End a window NOW. The digest still goes out (what was hidden while it
6057
+ * was open is still what the operator missed); only the silence stops.
6058
+ * A user may cancel their own; an admin may cancel any.
6059
+ */
6060
+ cancelSnooze: method(zod.z.object({ snoozeId: zod.z.string() }), zod.z.object({ success: zod.z.literal(true) }), {
6061
+ kind: "mutation",
6062
+ caller: "required"
6063
+ })
5924
6064
  }
5925
6065
  };
5926
6066
  /**
@@ -6988,7 +7128,15 @@ var streamBrokerCapability = {
6988
7128
  format: zod.z.enum(["gif", "mp4"]).default("gif"),
6989
7129
  maxWidth: zod.z.number().int().min(120).max(1920).default(480),
6990
7130
  /** GIF only — MP4 keeps the source cadence. */
6991
- fps: zod.z.number().int().min(1).max(15).default(5)
7131
+ fps: zod.z.number().int().min(1).max(15).default(5),
7132
+ /**
7133
+ * Playback rate. A notification clip is GLANCED at on a lock screen,
7134
+ * not watched, so 2x is the default: the recipient sees the whole
7135
+ * passage in half the time and the GIF is half the bytes. `1` is real
7136
+ * time. Applies to MP4 as well — the operator set a speed, not a GIF
7137
+ * speed.
7138
+ */
7139
+ speed: zod.z.number().min(1).max(8).default(2)
6992
7140
  }), zod.z.object({
6993
7141
  base64: zod.z.string(),
6994
7142
  mime: zod.z.string(),
@@ -26905,12 +27053,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
26905
27053
  addonId: null,
26906
27054
  access: "create"
26907
27055
  },
27056
+ "notificationRules.cancelSnooze": {
27057
+ capName: "notification-rules",
27058
+ capScope: "system",
27059
+ addonId: null,
27060
+ access: "create"
27061
+ },
26908
27062
  "notificationRules.createRule": {
26909
27063
  capName: "notification-rules",
26910
27064
  capScope: "system",
26911
27065
  addonId: null,
26912
27066
  access: "create"
26913
27067
  },
27068
+ "notificationRules.createSnooze": {
27069
+ capName: "notification-rules",
27070
+ capScope: "system",
27071
+ addonId: null,
27072
+ access: "create"
27073
+ },
26914
27074
  "notificationRules.deleteRule": {
26915
27075
  capName: "notification-rules",
26916
27076
  capScope: "system",
@@ -26941,6 +27101,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26941
27101
  addonId: null,
26942
27102
  access: "view"
26943
27103
  },
27104
+ "notificationRules.listSnoozes": {
27105
+ capName: "notification-rules",
27106
+ capScope: "system",
27107
+ addonId: null,
27108
+ access: "view"
27109
+ },
26944
27110
  "notificationRules.setRuleEnabled": {
26945
27111
  capName: "notification-rules",
26946
27112
  capScope: "system",
@@ -5613,6 +5613,14 @@ var NcMediaPolicySchema = z.object({
5613
5613
  clipPreRollSec: z.number().int().min(0).max(30).optional(),
5614
5614
  clipPostRollSec: z.number().int().min(0).max(30).optional(),
5615
5615
  /**
5616
+ * Playback rate of the attached gif / clip. Absent = 2x.
5617
+ *
5618
+ * A notification clip is GLANCED at on a lock screen, not watched: at real
5619
+ * time an eight-second passage is eight seconds of the recipient's attention
5620
+ * and twice the bytes. 1 is real time for the operator who wants it.
5621
+ */
5622
+ clipSpeed: z.number().min(1).max(8).optional(),
5623
+ /**
5616
5624
  * Which stream profile the footage is cut from. Absent = the CHEAPEST
5617
5625
  * assigned profile: a notification is watched on a phone, so the 4K
5618
5626
  * rendition would burn CPU to produce a file the client downscales anyway.
@@ -5684,7 +5692,21 @@ var NcRuleInputSchema = z.object({
5684
5692
  * behaviour, visible to all, read-only in the viewer). Present = personal
5685
5693
  * rule owned by this userId. Server-stamped; never trusted from a client.
5686
5694
  */
5687
- ownerUserId: z.string().optional()
5695
+ ownerUserId: z.string().optional(),
5696
+ /**
5697
+ * May a non-admin snooze this rule for EVERYONE, not just themselves?
5698
+ *
5699
+ * A snooze is personal by default — it silences the person who set it. This
5700
+ * opts THIS rule into the "the gardener is here all afternoon" case, where
5701
+ * silencing the camera for the whole household is legitimate. It silences
5702
+ * other people, so it is off unless a rule deliberately allows it.
5703
+ *
5704
+ * `.optional()`, deliberately NOT `.default()`: a Zod default does not run on
5705
+ * the addon cap path (three production failures in one day), so absent is
5706
+ * read as `false` by {@link canSetGlobal} in the engine. Admins are not bound
5707
+ * by this flag — see the scope rules on that function.
5708
+ */
5709
+ snoozeAllowGlobal: z.boolean().optional()
5688
5710
  });
5689
5711
  /**
5690
5712
  * Partial patch for `updateRule` — any subset of the input fields, plus the
@@ -5769,7 +5791,28 @@ var NcConditionDescriptorSchema = z.object({
5769
5791
  /** Which delivery kinds the condition applies to. */
5770
5792
  appliesTo: z.array(NcDeliverySchema),
5771
5793
  phase: z.string(),
5772
- description: z.string().optional()
5794
+ description: z.string().optional(),
5795
+ /**
5796
+ * The CHOICES for a single-choice widget (`sourceSelect`, `crossingSelect`,
5797
+ * `packagePhase`, …), served with the descriptor.
5798
+ *
5799
+ * Before this the descriptor said which widget to render and not what to put
5800
+ * in it, so every option list lived in three places: this file's enums, the
5801
+ * admin's `NC_*_OPTIONS` and the viewer's `NC_*_VALUES`. That triple mirror
5802
+ * is the drift that emptied the viewer's rule editor on 2026-08-04 — the app
5803
+ * mirrors the cap by hand, so it is only ever as current as its last build.
5804
+ *
5805
+ * With the options on the wire, a condition of an EXISTING `valueType` costs
5806
+ * zero client changes. Clients keep a local fallback for an older hub that
5807
+ * does not send them; absent here is "use your own list", not "no choices".
5808
+ */
5809
+ options: z.array(z.object({
5810
+ /** Written to the rule verbatim. `''` means the ABSENT state. */
5811
+ value: z.string(),
5812
+ label: z.string(),
5813
+ /** What THIS choice matches — shown one at a time, under the control. */
5814
+ hint: z.string().optional()
5815
+ })).readonly().optional()
5773
5816
  });
5774
5817
  /**
5775
5818
  * The delivery lifecycle status of a history row — a straight read of the
@@ -5854,6 +5897,74 @@ var NcHistoryFilterSchema = z.object({
5854
5897
  until: z.number().optional(),
5855
5898
  limit: z.number().int().min(1).max(500).default(100)
5856
5899
  });
5900
+ /**
5901
+ * What a snooze covers. Broader scopes win when several overlap, so one window
5902
+ * leaves ONE digest rather than a rule snooze and a whole-feed snooze both
5903
+ * summarising the same silence.
5904
+ */
5905
+ var NcSnoozeScopeSchema = z.enum([
5906
+ "rule",
5907
+ "device",
5908
+ "all"
5909
+ ]);
5910
+ /**
5911
+ * Client-authored snooze. The server stamps `userId`, `startedAt` and
5912
+ * `expiresAt` — a DURATION is sent rather than an instant so a client with a
5913
+ * skewed clock cannot author a window that is already over, or never ends.
5914
+ */
5915
+ var NcSnoozeInputSchema = z.object({
5916
+ scope: NcSnoozeScopeSchema,
5917
+ /** Required when `scope: 'rule'` — a scoped snooze with no id matches
5918
+ * NOTHING rather than degrading to "everything". */
5919
+ ruleId: z.string().optional(),
5920
+ /** Required when `scope: 'device'`. */
5921
+ deviceId: z.number().int().optional(),
5922
+ durationMinutes: z.number().int().min(1).max(1440),
5923
+ /**
5924
+ * Silence this for EVERY recipient, not just the caller. Permission is
5925
+ * checked server-side (the rule's `snoozeAllowGlobal`, or admin for the
5926
+ * broader scopes). Absent = personal.
5927
+ */
5928
+ global: z.boolean().optional(),
5929
+ /**
5930
+ * Deliver a summary of what was suppressed when the window ends. Absent =
5931
+ * ON: someone silencing a nuisance camera wants it off, someone silencing a
5932
+ * SECURITY camera wants to know what they missed, and choosing "off" for
5933
+ * everybody is how a snooze becomes an outage. Resolved to a concrete
5934
+ * boolean by the server at create time — never left to a Zod default, which
5935
+ * does not run on the addon cap path.
5936
+ */
5937
+ summary: z.boolean().optional()
5938
+ });
5939
+ /** A persisted snooze window. */
5940
+ var NcSnoozeSchema = z.object({
5941
+ id: z.string(),
5942
+ /** Who set it. Also who it silences, unless `global`. */
5943
+ userId: z.string(),
5944
+ scope: NcSnoozeScopeSchema,
5945
+ ruleId: z.string().optional(),
5946
+ deviceId: z.number().int().optional(),
5947
+ startedAt: z.number(),
5948
+ /** Exclusive: at exactly this instant the snooze is over. Expiry is a
5949
+ * COMPARISON, not a job — no sweeper can leave the operator silenced. */
5950
+ expiresAt: z.number(),
5951
+ global: z.boolean(),
5952
+ summary: z.boolean(),
5953
+ /** When the end-of-window digest went out. Absent = not sent (yet, or the
5954
+ * window has not closed, or `summary` is false). */
5955
+ digestSentAt: z.number().optional()
5956
+ });
5957
+ z.object({
5958
+ snoozeId: z.string(),
5959
+ targetId: z.string(),
5960
+ ruleId: z.string(),
5961
+ ruleName: z.string(),
5962
+ deviceId: z.number().int(),
5963
+ /** How many notifications this snooze hid for that pair. */
5964
+ count: z.number().int(),
5965
+ firstAt: z.number(),
5966
+ lastAt: z.number()
5967
+ });
5857
5968
  var notificationRulesCapability = {
5858
5969
  name: "notification-rules",
5859
5970
  scope: "system",
@@ -5920,7 +6031,36 @@ var notificationRulesCapability = {
5920
6031
  * P1 (no user dimension); the P2 viewer History screen adds per-caller
5921
6032
  * scoping on the same method.
5922
6033
  */
5923
- getHistory: method(z.object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), z.object({ entries: z.array(NcHistoryEntrySchema) }), { auth: "admin" })
6034
+ getHistory: method(z.object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), z.object({ entries: z.array(NcHistoryEntrySchema) }), { auth: "admin" }),
6035
+ /**
6036
+ * Snooze windows currently in effect, plus any whose digest has not yet
6037
+ * gone out. `caller: 'required'`: a user sees their OWN windows and the
6038
+ * global ones that silence them, never another person's private silence.
6039
+ * An admin sees every window — a household-wide silence is exactly the
6040
+ * thing an operator has to be able to find and cancel.
6041
+ */
6042
+ listSnoozes: method(z.object({}), z.object({ snoozes: z.array(NcSnoozeSchema) }), { caller: "required" }),
6043
+ /**
6044
+ * Open a window. `userId` is stamped from the caller; a GLOBAL window is
6045
+ * permission-checked server-side (the rule's `snoozeAllowGlobal` for a
6046
+ * rule-scoped one, admin for a camera or the whole feed) — a client asking
6047
+ * for one it may not have is rejected, never silently downgraded, because
6048
+ * a snooze the operator believes is in effect and is not is the same
6049
+ * failure as one they cannot end.
6050
+ */
6051
+ createSnooze: method(z.object({ snooze: NcSnoozeInputSchema }), z.object({ snooze: NcSnoozeSchema }), {
6052
+ kind: "mutation",
6053
+ caller: "required"
6054
+ }),
6055
+ /**
6056
+ * End a window NOW. The digest still goes out (what was hidden while it
6057
+ * was open is still what the operator missed); only the silence stops.
6058
+ * A user may cancel their own; an admin may cancel any.
6059
+ */
6060
+ cancelSnooze: method(z.object({ snoozeId: z.string() }), z.object({ success: z.literal(true) }), {
6061
+ kind: "mutation",
6062
+ caller: "required"
6063
+ })
5924
6064
  }
5925
6065
  };
5926
6066
  /**
@@ -6988,7 +7128,15 @@ var streamBrokerCapability = {
6988
7128
  format: z.enum(["gif", "mp4"]).default("gif"),
6989
7129
  maxWidth: z.number().int().min(120).max(1920).default(480),
6990
7130
  /** GIF only — MP4 keeps the source cadence. */
6991
- fps: z.number().int().min(1).max(15).default(5)
7131
+ fps: z.number().int().min(1).max(15).default(5),
7132
+ /**
7133
+ * Playback rate. A notification clip is GLANCED at on a lock screen,
7134
+ * not watched, so 2x is the default: the recipient sees the whole
7135
+ * passage in half the time and the GIF is half the bytes. `1` is real
7136
+ * time. Applies to MP4 as well — the operator set a speed, not a GIF
7137
+ * speed.
7138
+ */
7139
+ speed: z.number().min(1).max(8).default(2)
6992
7140
  }), z.object({
6993
7141
  base64: z.string(),
6994
7142
  mime: z.string(),
@@ -26905,12 +27053,24 @@ var METHOD_ACCESS_MAP = Object.freeze({
26905
27053
  addonId: null,
26906
27054
  access: "create"
26907
27055
  },
27056
+ "notificationRules.cancelSnooze": {
27057
+ capName: "notification-rules",
27058
+ capScope: "system",
27059
+ addonId: null,
27060
+ access: "create"
27061
+ },
26908
27062
  "notificationRules.createRule": {
26909
27063
  capName: "notification-rules",
26910
27064
  capScope: "system",
26911
27065
  addonId: null,
26912
27066
  access: "create"
26913
27067
  },
27068
+ "notificationRules.createSnooze": {
27069
+ capName: "notification-rules",
27070
+ capScope: "system",
27071
+ addonId: null,
27072
+ access: "create"
27073
+ },
26914
27074
  "notificationRules.deleteRule": {
26915
27075
  capName: "notification-rules",
26916
27076
  capScope: "system",
@@ -26941,6 +27101,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
26941
27101
  addonId: null,
26942
27102
  access: "view"
26943
27103
  },
27104
+ "notificationRules.listSnoozes": {
27105
+ capName: "notification-rules",
27106
+ capScope: "system",
27107
+ addonId: null,
27108
+ access: "view"
27109
+ },
26944
27110
  "notificationRules.setRuleEnabled": {
26945
27111
  capName: "notification-rules",
26946
27112
  capScope: "system",
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-CSs1A90r.js");
3
+ const require_dist = require("./dist-CvmFWwEo.js");
4
4
  const require_model_download_service = require("./model-download-service-hf0ookyy.js");
5
5
  const require_manifest_python_deps = require("./manifest-python-deps-BqE5j0-O.js");
6
6
  const require_resource_monitor = require("./resource-monitor-DNNomR-i.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 { A as extractNestedAddonId, At as scopeKey, Dt as parseJsonUnknown$1, Et as parseJsonObject, F as isObjectInput, G as objectInputDeclaresAddonId, H as looseSchema, I as isVoidInput, J as procedureAuthKey, L as kebabToCamel, Mt as EventCategory$1, N as isArrayOutputSchema, Ot as readinessKey, P as isCollectionArrayMethod, R as lifecycleJobSchema, St as expandCapMethods, V as logLevelAtMost, _t as asNumber, at as errMsg$1, bt as emitDownForOwnedCaps, c as RUNTIME_DEFAULTS, ct as DEVICE_SETTINGS_CONTRIBUTION_METHODS, gt as asJsonObject$1, kt as resolveCapMount, lt as DEVICE_STATUS_METHOD, m as addonSettingsCapability, mt as ReadinessTimeoutError, pt as ReadinessRegistry, s as METHOD_ACCESS_MAP, st as DATAPLANE_SECRET_HEADER$1, t as ALL_CAPABILITY_DEFINITIONS, vt as asString$1, yt as createEvent } from "./dist-BL_FHWPP.mjs";
2
+ import { A as extractNestedAddonId, At as scopeKey, Dt as parseJsonUnknown$1, Et as parseJsonObject, F as isObjectInput, G as objectInputDeclaresAddonId, H as looseSchema, I as isVoidInput, J as procedureAuthKey, L as kebabToCamel, Mt as EventCategory$1, N as isArrayOutputSchema, Ot as readinessKey, P as isCollectionArrayMethod, R as lifecycleJobSchema, St as expandCapMethods, V as logLevelAtMost, _t as asNumber, at as errMsg$1, bt as emitDownForOwnedCaps, c as RUNTIME_DEFAULTS, ct as DEVICE_SETTINGS_CONTRIBUTION_METHODS, gt as asJsonObject$1, kt as resolveCapMount, lt as DEVICE_STATUS_METHOD, m as addonSettingsCapability, mt as ReadinessTimeoutError, pt as ReadinessRegistry, s as METHOD_ACCESS_MAP, st as DATAPLANE_SECRET_HEADER$1, t as ALL_CAPABILITY_DEFINITIONS, vt as asString$1, yt as createEvent } from "./dist-Q3N47mdR.mjs";
3
3
  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";
4
4
  import { $ as buildNativeCapProxy, A as createHubCapForwardService, B as AGENT_CAP_FWD_ACTION, C as brokerTransportLink, Ct as resolveAddonClass, D as localProviderLink, E as ipcParentLink, F as createUdsLogger, G as callWithServiceDiscovery, H as CapRouteResolver, I as createUdsLoggerWithControl, J as UdsLocalTransportServer, K as createLocalTransport, L as LocalChildClient, M as createUdsEventBridge, N as createUdsEventBus, O as HUB_CAP_FWD_ACTION, P as udsChildLogToWorkerEntry, Q as encodeFrame, R as LocalChildRegistry, S as brokerCallForCap, St as runNpm, T as ipcChildLink, U as CapRouteError, V as AGENT_CAP_FWD_SERVICE, W as classifyCapRoute, X as localEndpointPath, Y as SocketChannel, Z as FrameDecoder, _ as createKernelHwAccel, _t as CapabilityHandle, a as getWorkerDeviceRegistry, b as __resetCapUsageRegistryForTests, bt as installManifestNativeDeps, c as setHubConnected, ct as NATIVE_PROVIDER_SERVICE_INFIX, d as getBrokerEventBus, dt as capBareAction, et as buildUdsNativeCapProxy, f as getMoleculerEventStats, ft as capServiceName, g as AddonDepsManager, gt as DeviceRegistry, h as subscribePassthrough, ht as serializeTypedArrays, i as createUdsAddonContext, it as mountNativeCapService, j as createParentUnownedCallHandler, k as HUB_CAP_FWD_SERVICE, l as EVENT_TOPIC_PREFIX, lt as capActionName, m as setNodeEventInterest, mt as deserializeTypedArrays, n as adaptBrokerToCluster, o as getOrInitReadinessRegistry, ot as createAddonService, p as registerEventBusService, pt as parseCapAction, q as UdsLocalTransportClient, r as createAddonContext, s as getOrInitReadinessRegistryForClient, st as validateProviderRegistrations, t as installManifestPythonDeps, tt as createBrokerDeviceManagerApi, u as clusterEventTopic, ut as capActionSuffix, v as resolveHwAccel, vt as CapabilityUnavailableError, w as buildLinkChain, wt as createAddonDataPlaneFacility, x as getCapUsageRegistry, xt as resolveNpmInvocation, y as CapUsageRegistry, yt as copyBundledNativeModules, z as UDS_NO_ROUTE_PREFIX } from "./manifest-python-deps-Ck4-9K9m.mjs";
5
5
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-BkP504Vq.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/system",
3
- "version": "1.2.32",
3
+ "version": "1.2.33",
4
4
  "description": "Core addon for CamStack — builtins, pipeline, process management, auth, logging, events",
5
5
  "keywords": [
6
6
  "camstack",