@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.
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +1 -1
- package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-CSs1A90r.js → dist-CvmFWwEo.js} +170 -4
- package/dist/{dist-BL_FHWPP.mjs → dist-Q3N47mdR.mjs} +170 -4
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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";
|