@camstack/system 1.2.348 → 1.2.350
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/addon-runner.js +2 -2
- package/dist/addon-runner.mjs +1 -1
- 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.d.ts +8 -0
- package/dist/builtins/alerts/alerts.addon.js +146 -31
- package/dist/builtins/alerts/alerts.addon.mjs +146 -31
- package/dist/builtins/alerts/device-label.d.ts +8 -0
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.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/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/block-type-defs.d.ts +20 -5
- package/dist/builtins/core-blocks/core-blocks.addon.js +171 -26
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +171 -26
- package/dist/builtins/device-manager/device-bindings-store.d.ts +3 -1
- package/dist/builtins/device-manager/device-manager.addon.js +4 -56
- package/dist/builtins/device-manager/device-manager.addon.mjs +4 -56
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-checks.d.ts +7 -0
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +8 -4
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +8 -4
- 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 +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- 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/{child-cap-dispatch-k3dEOCnu.js → child-cap-dispatch-CYgHiMdj.js} +1 -1
- package/dist/{child-cap-dispatch-B2N_gWV-.mjs → child-cap-dispatch-zEt3rqy-.mjs} +1 -1
- package/dist/{composition-sources-C42s3_1h.js → composition-sources-DyxH-DLr.js} +1 -1
- package/dist/{composition-sources-D7cxA4Yv.mjs → composition-sources-d7zXAC70.mjs} +1 -1
- package/dist/{dist-BgV_QADz.js → dist-DZKm2EOp.js} +103 -3
- package/dist/{dist-nUn3vto_.mjs → dist-Di0aX2zy.mjs} +103 -3
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{retired-settings-keys-D980hwnw.js → retired-settings-keys-BEY9Wjf1.js} +1 -1
- package/dist/{retired-settings-keys-pKNWq-CL.mjs → retired-settings-keys-jzB4iJpq.mjs} +1 -1
- package/package.json +1 -1
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
7
|
-
const require_retired_settings_keys = require("../../retired-settings-keys-
|
|
6
|
+
const require_dist = require("../../dist-DZKm2EOp.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-BEY9Wjf1.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
10
10
|
let _camstack_types_node = require("@camstack/types/node");
|
|
@@ -1621,16 +1621,6 @@ async function listDeviceIdsByCaps(deps, input) {
|
|
|
1621
1621
|
const wanted = new Set(input.capNames);
|
|
1622
1622
|
return (await getAllBindings(deps)).filter((row) => row.entries.some((entry) => wanted.has(entry.capName))).map((row) => row.deviceId);
|
|
1623
1623
|
}
|
|
1624
|
-
/**
|
|
1625
|
-
* Resolve a numeric deviceId to a stableId via persisted meta.
|
|
1626
|
-
* Used only by the device-identity section of the device-details
|
|
1627
|
-
* aggregator (see `buildBaseDeviceSection`) to surface the stableId as
|
|
1628
|
-
* a readonly display field. All runtime/registry lookups are keyed by
|
|
1629
|
-
* numeric deviceId; this helper is display-only.
|
|
1630
|
-
*/
|
|
1631
|
-
async function lookupPersistedStableId(deps, deviceId) {
|
|
1632
|
-
return (await deps.rows.get(deviceId))?.meta.stableId;
|
|
1633
|
-
}
|
|
1634
1624
|
//#endregion
|
|
1635
1625
|
//#region src/builtins/device-manager/day-night-config-schema.ts
|
|
1636
1626
|
var MODE_LABELS = {
|
|
@@ -3653,52 +3643,9 @@ async function deriveDeviceConfigContribution(deps, registry, def, entry, device
|
|
|
3653
3643
|
async function buildBaseDeviceSection(deps, deviceId) {
|
|
3654
3644
|
const hubRegistry = deps.ctx.kernel?.deviceRegistry;
|
|
3655
3645
|
const hubLocal = hubRegistry ? resolveDeviceById(hubRegistry, deviceId) : null;
|
|
3656
|
-
const stableId = hubLocal?.device.stableId ?? await lookupPersistedStableId(deps.bindingsDeps, deviceId);
|
|
3657
3646
|
const nativeOwner = resolveNativeDeviceOwner(deps, deviceId);
|
|
3658
|
-
const addonId = hubLocal?.addonId ?? nativeOwner?.addonId ?? null;
|
|
3659
3647
|
if (!hubLocal && !nativeOwner) return null;
|
|
3660
|
-
const sections = [
|
|
3661
|
-
id: "device-identity",
|
|
3662
|
-
title: "Identity",
|
|
3663
|
-
tab: "general",
|
|
3664
|
-
order: 0,
|
|
3665
|
-
fields: [
|
|
3666
|
-
{
|
|
3667
|
-
type: "text",
|
|
3668
|
-
key: "_deviceId",
|
|
3669
|
-
label: "Device ID",
|
|
3670
|
-
readonlyField: true,
|
|
3671
|
-
value: String(deviceId)
|
|
3672
|
-
},
|
|
3673
|
-
{
|
|
3674
|
-
type: "text",
|
|
3675
|
-
key: "_stableId",
|
|
3676
|
-
label: "Stable ID",
|
|
3677
|
-
readonlyField: true,
|
|
3678
|
-
value: stableId ?? ""
|
|
3679
|
-
},
|
|
3680
|
-
{
|
|
3681
|
-
type: "text",
|
|
3682
|
-
key: "_addonId",
|
|
3683
|
-
label: "Driver",
|
|
3684
|
-
readonlyField: true,
|
|
3685
|
-
value: addonId ?? "unknown"
|
|
3686
|
-
},
|
|
3687
|
-
...hubLocal ? [{
|
|
3688
|
-
type: "text",
|
|
3689
|
-
key: "_type",
|
|
3690
|
-
label: "Type",
|
|
3691
|
-
readonlyField: true,
|
|
3692
|
-
value: hubLocal.device.type
|
|
3693
|
-
}, {
|
|
3694
|
-
type: "text",
|
|
3695
|
-
key: "_online",
|
|
3696
|
-
label: "Online",
|
|
3697
|
-
readonlyField: true,
|
|
3698
|
-
value: hubLocal.device.online ? "yes" : "no"
|
|
3699
|
-
}] : []
|
|
3700
|
-
]
|
|
3701
|
-
}];
|
|
3648
|
+
const sections = [];
|
|
3702
3649
|
const driverResult = await resolveDriverConfigSchema(deps, deviceId, hubLocal);
|
|
3703
3650
|
if (driverResult.status === "ok") for (const section of driverResult.schema.sections) sections.push({
|
|
3704
3651
|
id: section.id,
|
|
@@ -3722,6 +3669,7 @@ async function buildBaseDeviceSection(deps, deviceId) {
|
|
|
3722
3669
|
variant: "warning"
|
|
3723
3670
|
}]
|
|
3724
3671
|
});
|
|
3672
|
+
if (sections.length === 0) return null;
|
|
3725
3673
|
return {
|
|
3726
3674
|
sections,
|
|
3727
3675
|
...driverResult.status === "ok" && driverResult.schema.tabs ? { tabs: [...driverResult.schema.tabs] } : {}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $t as normalizeUnit, At as formatMinutes, C as FieldClaimSchema, Ct as enumerateSchemaFields, E as LocationIconIdSchema, Et as expandContainer, F as STREAM_PROFILE_META, Gn as DeviceFeature, Ht as locationIconKey, Jn as errMsg, Kn as DeviceRole, O as MINUTES_PER_DAY, Rt as legacyAutoLinkIds, S as FieldClaimModeSchema, St as enumerateItemArrayFields, Yn as BaseAddon, Z as buildStreamParamsConfigSchema, _ as DAY_NAMES, _t as deviceExtensionCapability, b as DeviceStatusSchema, br as EventCategory, bt as deviceStatusCapability, lt as createDeviceExtensionProvider, mn as runtimeStatePolicyFor, mt as defineExtensionSlotProvider, nn as parseStreamParamsFormPatch, o as CAMERA_SWITCH_ORDER, qn as DeviceType, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, tr as WELL_KNOWN_TAB_MAP, ur as isDeviceConfigCap, vr as sleep$1, vt as deviceManagerCapability, yn as siteZoneKey, yt as deviceStateCapability } from "../../dist-
|
|
2
|
-
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-
|
|
1
|
+
import { $t as normalizeUnit, At as formatMinutes, C as FieldClaimSchema, Ct as enumerateSchemaFields, E as LocationIconIdSchema, Et as expandContainer, F as STREAM_PROFILE_META, Gn as DeviceFeature, Ht as locationIconKey, Jn as errMsg, Kn as DeviceRole, O as MINUTES_PER_DAY, Rt as legacyAutoLinkIds, S as FieldClaimModeSchema, St as enumerateItemArrayFields, Yn as BaseAddon, Z as buildStreamParamsConfigSchema, _ as DAY_NAMES, _t as deviceExtensionCapability, b as DeviceStatusSchema, br as EventCategory, bt as deviceStatusCapability, lt as createDeviceExtensionProvider, mn as runtimeStatePolicyFor, mt as defineExtensionSlotProvider, nn as parseStreamParamsFormPatch, o as CAMERA_SWITCH_ORDER, qn as DeviceType, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, tr as WELL_KNOWN_TAB_MAP, ur as isDeviceConfigCap, vr as sleep$1, vt as deviceManagerCapability, yn as siteZoneKey, yt as deviceStateCapability } from "../../dist-Di0aX2zy.mjs";
|
|
2
|
+
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-jzB4iJpq.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { canonicalDeviceFingerprint } from "@camstack/types/node";
|
|
@@ -1616,16 +1616,6 @@ async function listDeviceIdsByCaps(deps, input) {
|
|
|
1616
1616
|
const wanted = new Set(input.capNames);
|
|
1617
1617
|
return (await getAllBindings(deps)).filter((row) => row.entries.some((entry) => wanted.has(entry.capName))).map((row) => row.deviceId);
|
|
1618
1618
|
}
|
|
1619
|
-
/**
|
|
1620
|
-
* Resolve a numeric deviceId to a stableId via persisted meta.
|
|
1621
|
-
* Used only by the device-identity section of the device-details
|
|
1622
|
-
* aggregator (see `buildBaseDeviceSection`) to surface the stableId as
|
|
1623
|
-
* a readonly display field. All runtime/registry lookups are keyed by
|
|
1624
|
-
* numeric deviceId; this helper is display-only.
|
|
1625
|
-
*/
|
|
1626
|
-
async function lookupPersistedStableId(deps, deviceId) {
|
|
1627
|
-
return (await deps.rows.get(deviceId))?.meta.stableId;
|
|
1628
|
-
}
|
|
1629
1619
|
//#endregion
|
|
1630
1620
|
//#region src/builtins/device-manager/day-night-config-schema.ts
|
|
1631
1621
|
var MODE_LABELS = {
|
|
@@ -3648,52 +3638,9 @@ async function deriveDeviceConfigContribution(deps, registry, def, entry, device
|
|
|
3648
3638
|
async function buildBaseDeviceSection(deps, deviceId) {
|
|
3649
3639
|
const hubRegistry = deps.ctx.kernel?.deviceRegistry;
|
|
3650
3640
|
const hubLocal = hubRegistry ? resolveDeviceById(hubRegistry, deviceId) : null;
|
|
3651
|
-
const stableId = hubLocal?.device.stableId ?? await lookupPersistedStableId(deps.bindingsDeps, deviceId);
|
|
3652
3641
|
const nativeOwner = resolveNativeDeviceOwner(deps, deviceId);
|
|
3653
|
-
const addonId = hubLocal?.addonId ?? nativeOwner?.addonId ?? null;
|
|
3654
3642
|
if (!hubLocal && !nativeOwner) return null;
|
|
3655
|
-
const sections = [
|
|
3656
|
-
id: "device-identity",
|
|
3657
|
-
title: "Identity",
|
|
3658
|
-
tab: "general",
|
|
3659
|
-
order: 0,
|
|
3660
|
-
fields: [
|
|
3661
|
-
{
|
|
3662
|
-
type: "text",
|
|
3663
|
-
key: "_deviceId",
|
|
3664
|
-
label: "Device ID",
|
|
3665
|
-
readonlyField: true,
|
|
3666
|
-
value: String(deviceId)
|
|
3667
|
-
},
|
|
3668
|
-
{
|
|
3669
|
-
type: "text",
|
|
3670
|
-
key: "_stableId",
|
|
3671
|
-
label: "Stable ID",
|
|
3672
|
-
readonlyField: true,
|
|
3673
|
-
value: stableId ?? ""
|
|
3674
|
-
},
|
|
3675
|
-
{
|
|
3676
|
-
type: "text",
|
|
3677
|
-
key: "_addonId",
|
|
3678
|
-
label: "Driver",
|
|
3679
|
-
readonlyField: true,
|
|
3680
|
-
value: addonId ?? "unknown"
|
|
3681
|
-
},
|
|
3682
|
-
...hubLocal ? [{
|
|
3683
|
-
type: "text",
|
|
3684
|
-
key: "_type",
|
|
3685
|
-
label: "Type",
|
|
3686
|
-
readonlyField: true,
|
|
3687
|
-
value: hubLocal.device.type
|
|
3688
|
-
}, {
|
|
3689
|
-
type: "text",
|
|
3690
|
-
key: "_online",
|
|
3691
|
-
label: "Online",
|
|
3692
|
-
readonlyField: true,
|
|
3693
|
-
value: hubLocal.device.online ? "yes" : "no"
|
|
3694
|
-
}] : []
|
|
3695
|
-
]
|
|
3696
|
-
}];
|
|
3643
|
+
const sections = [];
|
|
3697
3644
|
const driverResult = await resolveDriverConfigSchema(deps, deviceId, hubLocal);
|
|
3698
3645
|
if (driverResult.status === "ok") for (const section of driverResult.schema.sections) sections.push({
|
|
3699
3646
|
id: section.id,
|
|
@@ -3717,6 +3664,7 @@ async function buildBaseDeviceSection(deps, deviceId) {
|
|
|
3717
3664
|
variant: "warning"
|
|
3718
3665
|
}]
|
|
3719
3666
|
});
|
|
3667
|
+
if (sections.length === 0) return null;
|
|
3720
3668
|
return {
|
|
3721
3669
|
sections,
|
|
3722
3670
|
...driverResult.status === "ok" && driverResult.schema.tabs ? { tabs: [...driverResult.schema.tabs] } : {}
|
|
@@ -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-DZKm2EOp.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 { Ut as logDestinationCapability, Yn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ut as logDestinationCapability, Yn as BaseAddon } from "../../dist-Di0aX2zy.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;
|
|
@@ -4,6 +4,11 @@ export type RecordingActiveMode = RecordingStatus['activeMode'];
|
|
|
4
4
|
/** What the monitor learned about one camera this tick. */
|
|
5
5
|
export interface CameraFootage {
|
|
6
6
|
readonly deviceId: number;
|
|
7
|
+
/**
|
|
8
|
+
* Operator-facing name. Prefer this in the finding message; the numeric id
|
|
9
|
+
* stays on `deviceId` for tags / stable finding ids.
|
|
10
|
+
*/
|
|
11
|
+
readonly name?: string;
|
|
7
12
|
readonly online: boolean;
|
|
8
13
|
/**
|
|
9
14
|
* ms-epoch of the newest recorded segment within the lookback window, or
|
|
@@ -44,6 +49,8 @@ export interface LivenessFinding {
|
|
|
44
49
|
readonly message: string;
|
|
45
50
|
/** Present on per-camera findings. Always the numeric id. */
|
|
46
51
|
readonly deviceId?: number;
|
|
52
|
+
/** Operator name when known — alert surfaces prefer this over the id. */
|
|
53
|
+
readonly deviceName?: string;
|
|
47
54
|
}
|
|
48
55
|
/**
|
|
49
56
|
* Evaluate every invariant against one tick's facts.
|
|
@@ -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-DZKm2EOp.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";
|
|
@@ -35,12 +35,14 @@ function evaluateLiveness(facts) {
|
|
|
35
35
|
const silentFor = facts.nowMs - cam.lastSegmentMs;
|
|
36
36
|
if (silentFor <= facts.staleAfterMs) continue;
|
|
37
37
|
if (cam.activeMode !== null && cam.activeMode !== "continuous") continue;
|
|
38
|
+
const label = typeof cam.name === "string" && cam.name.trim().length > 0 ? cam.name.trim() : `Camera ${String(cam.deviceId)}`;
|
|
38
39
|
findings.push({
|
|
39
40
|
id: `${NO_FOOTAGE_PREFIX}${cam.deviceId}`,
|
|
40
41
|
severity: "error",
|
|
41
42
|
title: "Recording stopped",
|
|
42
|
-
message:
|
|
43
|
-
deviceId: cam.deviceId
|
|
43
|
+
message: `${label} is online and was recording, but has produced no segment for ${minutes(silentFor)} minutes.`,
|
|
44
|
+
deviceId: cam.deviceId,
|
|
45
|
+
...typeof cam.name === "string" && cam.name.trim().length > 0 ? { deviceName: cam.name.trim() } : {}
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
return findings;
|
|
@@ -153,6 +155,7 @@ var LivenessMonitorAddon = class extends require_dist.BaseAddon {
|
|
|
153
155
|
const activeMode = lastSegmentMs !== null && nowMs - lastSegmentMs > staleAfterMs ? require_dist.RecordingStatusSchema.parse(await this.ctx.api.recordingArchive.getStatus.query({ deviceId: device.id })).activeMode : null;
|
|
154
156
|
cameras.push({
|
|
155
157
|
deviceId: device.id,
|
|
158
|
+
name: device.name,
|
|
156
159
|
online: device.online === true,
|
|
157
160
|
lastSegmentMs,
|
|
158
161
|
activeMode
|
|
@@ -221,7 +224,8 @@ var LivenessMonitorAddon = class extends require_dist.BaseAddon {
|
|
|
221
224
|
severity: finding.severity,
|
|
222
225
|
title: finding.title,
|
|
223
226
|
message: finding.message,
|
|
224
|
-
...finding.deviceId !== void 0 ? { deviceId: finding.deviceId } : {}
|
|
227
|
+
...finding.deviceId !== void 0 ? { deviceId: finding.deviceId } : {},
|
|
228
|
+
...finding.deviceName !== void 0 ? { name: finding.deviceName } : {}
|
|
225
229
|
}));
|
|
226
230
|
}
|
|
227
231
|
for (const id of [...this.active]) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as RECORDING_SOURCE_CAMSTACK_ADDON, Jn as errMsg, N as RecordingStatusSchema, Yn as BaseAddon, ar as createEvent, br as EventCategory } from "../../dist-
|
|
1
|
+
import { A as RECORDING_SOURCE_CAMSTACK_ADDON, Jn as errMsg, N as RecordingStatusSchema, Yn as BaseAddon, ar as createEvent, br as EventCategory } from "../../dist-Di0aX2zy.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";
|
|
@@ -33,12 +33,14 @@ function evaluateLiveness(facts) {
|
|
|
33
33
|
const silentFor = facts.nowMs - cam.lastSegmentMs;
|
|
34
34
|
if (silentFor <= facts.staleAfterMs) continue;
|
|
35
35
|
if (cam.activeMode !== null && cam.activeMode !== "continuous") continue;
|
|
36
|
+
const label = typeof cam.name === "string" && cam.name.trim().length > 0 ? cam.name.trim() : `Camera ${String(cam.deviceId)}`;
|
|
36
37
|
findings.push({
|
|
37
38
|
id: `${NO_FOOTAGE_PREFIX}${cam.deviceId}`,
|
|
38
39
|
severity: "error",
|
|
39
40
|
title: "Recording stopped",
|
|
40
|
-
message:
|
|
41
|
-
deviceId: cam.deviceId
|
|
41
|
+
message: `${label} is online and was recording, but has produced no segment for ${minutes(silentFor)} minutes.`,
|
|
42
|
+
deviceId: cam.deviceId,
|
|
43
|
+
...typeof cam.name === "string" && cam.name.trim().length > 0 ? { deviceName: cam.name.trim() } : {}
|
|
42
44
|
});
|
|
43
45
|
}
|
|
44
46
|
return findings;
|
|
@@ -151,6 +153,7 @@ var LivenessMonitorAddon = class extends BaseAddon {
|
|
|
151
153
|
const activeMode = lastSegmentMs !== null && nowMs - lastSegmentMs > staleAfterMs ? RecordingStatusSchema.parse(await this.ctx.api.recordingArchive.getStatus.query({ deviceId: device.id })).activeMode : null;
|
|
152
154
|
cameras.push({
|
|
153
155
|
deviceId: device.id,
|
|
156
|
+
name: device.name,
|
|
154
157
|
online: device.online === true,
|
|
155
158
|
lastSegmentMs,
|
|
156
159
|
activeMode
|
|
@@ -219,7 +222,8 @@ var LivenessMonitorAddon = class extends BaseAddon {
|
|
|
219
222
|
severity: finding.severity,
|
|
220
223
|
title: finding.title,
|
|
221
224
|
message: finding.message,
|
|
222
|
-
...finding.deviceId !== void 0 ? { deviceId: finding.deviceId } : {}
|
|
225
|
+
...finding.deviceId !== void 0 ? { deviceId: finding.deviceId } : {},
|
|
226
|
+
...finding.deviceName !== void 0 ? { name: finding.deviceName } : {}
|
|
223
227
|
}));
|
|
224
228
|
}
|
|
225
229
|
for (const id of [...this.active]) {
|
|
@@ -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-DZKm2EOp.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 { Dn as userManagementCapability, I as ScopedTokenSchema, K as authProviderCapability, V as UserRecordSchema, Yn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-
|
|
2
|
+
import { Dn as userManagementCapability, I as ScopedTokenSchema, K as authProviderCapability, V as UserRecordSchema, Yn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-Di0aX2zy.mjs";
|
|
3
3
|
import * as crypto$2 from "node:crypto";
|
|
4
4
|
import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
|
|
5
5
|
import nodeCrypto from "crypto";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("../../dist-
|
|
3
|
+
const require_dist = require("../../dist-DZKm2EOp.js");
|
|
4
4
|
const require_tls = require("../../tls-ue_Xefmv.js");
|
|
5
5
|
let node_fs_promises = require("node:fs/promises");
|
|
6
6
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Vt as localNetworkCapability, Yn as BaseAddon, br as EventCategory } from "../../dist-
|
|
1
|
+
import { Vt as localNetworkCapability, Yn as BaseAddon, br as EventCategory } from "../../dist-Di0aX2zy.mjs";
|
|
2
2
|
import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-DTlVWwAI.mjs";
|
|
3
3
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
4
4
|
import { join } 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-DZKm2EOp.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 { Ut as logDestinationCapability, Yn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ut as logDestinationCapability, Yn as BaseAddon } from "../../dist-Di0aX2zy.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-DZKm2EOp.js");
|
|
7
7
|
const require_proc_stat = require("../../proc-stat-DL-WUOhl.js");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
let node_os = require("node:os");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Jn as errMsg, Yn as BaseAddon, Yt as metricsProviderCapability, ar as createEvent, br as EventCategory, kt as foldSnapshotByFunction, ln as resolveBucketMs, sn as reducePoints } from "../../dist-
|
|
1
|
+
import { Jn as errMsg, Yn as BaseAddon, Yt as metricsProviderCapability, ar as createEvent, br as EventCategory, kt as foldSnapshotByFunction, ln as resolveBucketMs, sn as reducePoints } from "../../dist-Di0aX2zy.mjs";
|
|
2
2
|
import { a as parseProcStat, i as nodeProcReader, n as elapsedSecSince, o as parseProcStatusRss, r as lifetimeCpuPercent, t as commandFromCmdline } from "../../proc-stat-CbC55Kqi.mjs";
|
|
3
3
|
import { access, readFile, readdir } from "node:fs/promises";
|
|
4
4
|
import * as os from "node:os";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-DZKm2EOp.js");
|
|
7
7
|
let node_os = require("node:os");
|
|
8
8
|
node_os = require_chunk.__toESM(node_os);
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import { Jn as errMsg, Yn as BaseAddon, _n as scoreRuntimes, br as EventCategory, in as platformProbeCapability, sr as emitReadiness, xt as enumerateInferenceDevices } from "../../dist-
|
|
2
|
+
import { Jn as errMsg, Yn as BaseAddon, _n as scoreRuntimes, br as EventCategory, in as platformProbeCapability, sr as emitReadiness, xt as enumerateInferenceDevices } from "../../dist-Di0aX2zy.mjs";
|
|
3
3
|
import * as os from "node:os";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import { execFile } from "node:child_process";
|
|
@@ -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-DZKm2EOp.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 { Yn as BaseAddon, br as EventCategory } from "../../dist-
|
|
1
|
+
import { Yn as BaseAddon, br as EventCategory } from "../../dist-Di0aX2zy.mjs";
|
|
2
2
|
//#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
|
|
3
3
|
/**
|
|
4
4
|
* Reconcile the durable `enabledProviders` set against authoritative
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-DZKm2EOp.js");
|
|
7
7
|
const require_snapshot_courtesy = require("../../snapshot-courtesy-D_C5-nC0.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { En as streamQualityLabel, Gn as DeviceFeature, J as bareAddonId, Jn as errMsg, Jt as memoizePinnedFfmpeg, Y as batteryCapability, Yn as BaseAddon, a as BatteryStatusSchema, bn as snapshotCapability, br as EventCategory, fr as nodePin, ht as deriveBatteryPresence, qn as DeviceType } from "../../dist-
|
|
1
|
+
import { En as streamQualityLabel, Gn as DeviceFeature, J as bareAddonId, Jn as errMsg, Jt as memoizePinnedFfmpeg, Y as batteryCapability, Yn as BaseAddon, a as BatteryStatusSchema, bn as snapshotCapability, br as EventCategory, fr as nodePin, ht as deriveBatteryPresence, qn as DeviceType } from "../../dist-Di0aX2zy.mjs";
|
|
2
2
|
import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CyFs1M3I.mjs";
|
|
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
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-DZKm2EOp.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ot as filesystemBrowseCapability, Yn as BaseAddon, wn as storageProviderCapability } from "../../dist-
|
|
1
|
+
import { Ot as filesystemBrowseCapability, Yn as BaseAddon, wn as storageProviderCapability } from "../../dist-Di0aX2zy.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
Binary file
|
|
Binary file
|
|
@@ -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-DZKm2EOp.js");
|
|
7
7
|
const require_hub_cap_forward = require("../../hub-cap-forward-DmHNjbB0.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as StorageMigrationJobSchema, Kt as mayReadLocation, L as StorageCleanupJobSchema, Mn as withLocationMode, Pt as isLocationEnabled, R as StorageLocationModeSchema, Sn as storageMigrationCapability, T as LegacyStorageLocationDefaultSchema, Tt as evictionPolicyOfLocation, Xt as modeMayWrite, Yn as BaseAddon, br as EventCategory, et as collectSecretConfigKeys, fn as resolveLocationMode, j as REDACTED_SECRET, jt as gbToBytes, pr as parseJsonObject, qt as mayWriteToLocation, vn as settingsStoreCapability, xn as storageCapability, z as StorageLocationTypeSchema, zt as legacyModeOf } from "../../dist-
|
|
1
|
+
import { B as StorageMigrationJobSchema, Kt as mayReadLocation, L as StorageCleanupJobSchema, Mn as withLocationMode, Pt as isLocationEnabled, R as StorageLocationModeSchema, Sn as storageMigrationCapability, T as LegacyStorageLocationDefaultSchema, Tt as evictionPolicyOfLocation, Xt as modeMayWrite, Yn as BaseAddon, br as EventCategory, et as collectSecretConfigKeys, fn as resolveLocationMode, j as REDACTED_SECRET, jt as gbToBytes, pr as parseJsonObject, qt as mayWriteToLocation, vn as settingsStoreCapability, xn as storageCapability, z as StorageLocationTypeSchema, zt as legacyModeOf } from "../../dist-Di0aX2zy.mjs";
|
|
2
2
|
import { t as HUB_CAP_FWD_ACTION } from "../../hub-cap-forward-BdT320dq.mjs";
|
|
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-DZKm2EOp.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 { Jn as errMsg, Yn as BaseAddon, lr as hydrateSchema } from "../../dist-
|
|
1
|
+
import { Jn as errMsg, Yn as BaseAddon, lr as hydrateSchema } from "../../dist-Di0aX2zy.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-DZKm2EOp.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 { Ut as logDestinationCapability, Yn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ut as logDestinationCapability, Yn as BaseAddon } from "../../dist-Di0aX2zy.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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
2
|
-
const require_dist = require("./dist-
|
|
2
|
+
const require_dist = require("./dist-DZKm2EOp.js");
|
|
3
3
|
const require_proc_stat = require("./proc-stat-DL-WUOhl.js");
|
|
4
4
|
require("./hub-cap-forward-DmHNjbB0.js");
|
|
5
5
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ar as createEvent, br as EventCategory$1 } from "./dist-
|
|
1
|
+
import { ar as createEvent, br as EventCategory$1 } from "./dist-Di0aX2zy.mjs";
|
|
2
2
|
import { a as parseProcStat, i as nodeProcReader } from "./proc-stat-CbC55Kqi.mjs";
|
|
3
3
|
import "./hub-cap-forward-BdT320dq.mjs";
|
|
4
4
|
import * as crypto$1 from "node:crypto";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Jn as errMsg, Vn as compositionSourceKey } from "./dist-
|
|
1
|
+
import { Jn as errMsg, Vn as compositionSourceKey } from "./dist-Di0aX2zy.mjs";
|
|
2
2
|
//#region src/builtins/core-blocks/composition-sources.ts
|
|
3
3
|
/**
|
|
4
4
|
* Describe what a composition reads and writes for SAVE-time validation
|