@camstack/system 1.2.289 → 1.2.291
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 +1 -1
- 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.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- 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/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- 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.d.ts +9 -0
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +18 -2
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +18 -2
- 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 +11 -11
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +11 -11
- 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-DKFb2936.mjs → dist-DiMNxNDh.mjs} +1474 -1017
- package/dist/{dist-BYnHJU96.js → dist-XnunBp0n.js} +1479 -1016
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -3
- package/dist/index.mjs +4 -4
- package/dist/kernel/moleculer/addon-peer-bytes-facility.d.ts +25 -0
- package/dist/{manifest-system-deps-B8ZUclN4.js → manifest-system-deps-DTgkfBJy.js} +591 -0
- package/dist/{manifest-system-deps-C9T7784z.mjs → manifest-system-deps-ghRqcy_-.mjs} +585 -6
- package/dist/{retired-settings-keys-C6rFqHR7.js → retired-settings-keys-DQn9s_AI.js} +1 -1
- package/dist/{retired-settings-keys-tuNxNNpR.mjs → retired-settings-keys-DnCcgrCG.mjs} +1 -1
- package/package.json +1 -1
package/dist/addon-runner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
2
|
-
const require_manifest_system_deps = require("./manifest-system-deps-
|
|
2
|
+
const require_manifest_system_deps = require("./manifest-system-deps-DTgkfBJy.js");
|
|
3
3
|
const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
|
|
4
4
|
let node_path = require("node:path");
|
|
5
5
|
node_path = require_chunk.__toESM(node_path);
|
package/dist/addon-runner.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Qt as startRunnerHeapWatch, R as LocalChildClient, a as createUdsAddonContext, at as setWorkerNativeCapsChangeListener, bt as installManifestNativeDeps, j as createUdsLoggerWithControl, n as installManifestPythonDeps, nt as getWorkerNativeCapProvider, rt as getWorkerNativeCapSnapshot, st as validateProviderRegistrations, t as installManifestSystemDeps, un as emitHeapDiagnosticReport, xt as resolveAddonClass, zt as RUNNER_RSS_BUDGET_ENV } from "./manifest-system-deps-ghRqcy_-.mjs";
|
|
2
2
|
import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
|
|
3
3
|
import { register } from "node:module";
|
|
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-XnunBp0n.js");
|
|
7
7
|
const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { L as addonPagesCapability, fn as BaseAddon, un as errMsg, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
|
|
3
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
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-XnunBp0n.js");
|
|
7
7
|
const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fn as BaseAddon, un as errMsg, z as addonWidgetsCapability, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
|
|
3
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
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-XnunBp0n.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 {
|
|
1
|
+
import { B as alertsCapability, Tn as createEvent, fn as BaseAddon, n as AlertSchema, un as errMsg, zn as EventCategory } from "../../dist-DiMNxNDh.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
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-XnunBp0n.js");
|
|
7
7
|
//#region src/builtins/autotrack/autotrack-config.ts
|
|
8
8
|
var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
|
|
9
9
|
deadZoneFraction: .5,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { U as bareAddonId, Vt as ptzAutotrackCapability, fn as BaseAddon, g as FIRST_LEVEL_MACRO_CLASSES, jn as isEvent, un as errMsg, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
//#region src/builtins/autotrack/autotrack-config.ts
|
|
3
3
|
var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
|
|
4
4
|
deadZoneFraction: .5,
|
|
@@ -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-XnunBp0n.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
let buffer = require("buffer");
|
|
9
9
|
let node_fs_promises = require("node:fs/promises");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { H as backupCapability, fn as BaseAddon, jt as mayWriteToLocation, nn as storageOccupancyCapability, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
import { randomBytes, randomUUID } from "node:crypto";
|
|
3
3
|
import { Buffer as Buffer$1 } from "buffer";
|
|
4
4
|
import * as fsp from "node:fs/promises";
|
|
@@ -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-XnunBp0n.js");
|
|
7
7
|
let zod = require("zod");
|
|
8
8
|
let _camstack_types_node = require("@camstack/types/node");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $t as snapshotCapability, K as cameraGridLayoutCapability, Pt as motionCapability, Q as declarationOwnerNodeId, S as MOTION_CLOSE_AFTER_MS, Tn as createEvent, dn as buildFfmpegArgs, fn as BaseAddon, gn as DeviceFeature, i as BaseDevice, in as streamCatalogCapability, kn as hydrateSchema, m as DeclaredDevices, p as DERIVED_CAMERA_SILENCED_CAP_NAMES, un as errMsg, vn as DeviceType, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { FfmpegProcess } from "@camstack/types/node";
|
|
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-XnunBp0n.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 {
|
|
1
|
+
import { Dt as logDestinationCapability, fn as BaseAddon } from "../../dist-DiMNxNDh.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 = {
|
|
@@ -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-XnunBp0n.js");
|
|
4
4
|
let node_crypto = require("node:crypto");
|
|
5
5
|
let node_fs_promises = require("node:fs/promises");
|
|
6
6
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { J as
|
|
1
|
+
import { J as coreBlockAddonId, X as coreBlocksCapability, Y as coreBlockIdFromAddonId, c as CORE_BLOCKS_ADDON_ID, fn as BaseAddon, l as CORE_BLOCK_ADDON_PREFIX, m as DeclaredDevices, u as CoreBlockSchema, un as errMsg } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as fs from "node:fs/promises";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -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-XnunBp0n.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-DQn9s_AI.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let _camstack_types_node = require("@camstack/types/node");
|
|
10
10
|
//#region src/builtins/device-manager/adoption-job-engine.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-
|
|
1
|
+
import { A as STREAM_PROFILE_META, An as isDeviceConfigCap, Et as locationIconKey, Ft as normalizeUnit, G as buildStreamParamsConfigSchema, Qt as siteZoneKey, Rn as sleep$1, Rt as parseStreamParamsFormPatch, Wt as resolveContainerPrimaryChild, _n as DeviceRole, d as DAY_NAMES, fn as BaseAddon, gn as DeviceFeature, h as DeviceStatusSchema, nt as deviceStateCapability, o as CAMERA_SWITCH_ORDER, ot as enumerateItemArrayFields, pt as formatMinutes, qt as runtimeStatePolicyFor, rt as deviceStatusCapability, s as CAP_NAMES_WITH_STATUS, st as enumerateSchemaFields, t as ALL_CAPABILITY_DEFINITIONS, tt as deviceManagerCapability, un as errMsg, vn as DeviceType, x as MINUTES_PER_DAY, xn as WELL_KNOWN_TAB_MAP, y as LocationIconIdSchema, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
|
+
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-DnCcgrCG.mjs";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { canonicalDeviceFingerprint } from "@camstack/types/node";
|
|
5
5
|
//#region src/builtins/device-manager/adoption-job-engine.ts
|
|
@@ -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-XnunBp0n.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 { D as
|
|
1
|
+
import { D as SOURCE_CAPS, O as SOURCE_DEVICE_TYPES, Tn as createEvent, U as bareAddonId, bt as isSourceCap, ct as evaluateSensorEdge, fn as BaseAddon, it as doorbellCapability, un as errMsg, vn as DeviceType, yt as isSameAddonId, zn as EventCategory } from "../../dist-DiMNxNDh.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-XnunBp0n.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 {
|
|
1
|
+
import { Dt as logDestinationCapability, fn as BaseAddon } from "../../dist-DiMNxNDh.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;
|
|
@@ -26,6 +26,15 @@ export declare class LivenessMonitorAddon extends BaseAddon<LivenessMonitorConfi
|
|
|
26
26
|
* the 24-hour lookback that decides whether it records at all.
|
|
27
27
|
*/
|
|
28
28
|
private lastSegmentMs;
|
|
29
|
+
/**
|
|
30
|
+
* A camera nobody could read is NOT a camera with no footage.
|
|
31
|
+
*
|
|
32
|
+
* `null` here means "no claim", and `liveness-checks.ts` skips a camera with
|
|
33
|
+
* no claim — which is the safe direction. But a skip that says nothing is
|
|
34
|
+
* indistinguishable from a healthy tick, so the branch that drops the camera
|
|
35
|
+
* names it, per camera (D393, and CLAUDE.md's logging rule).
|
|
36
|
+
*/
|
|
37
|
+
private unreadable;
|
|
29
38
|
/** Announce new faults and recoveries; say nothing about an unchanged fault. */
|
|
30
39
|
private report;
|
|
31
40
|
}
|
|
@@ -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-XnunBp0n.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";
|
|
@@ -150,7 +150,7 @@ var LivenessMonitorAddon = class extends require_dist.BaseAddon {
|
|
|
150
150
|
const cameras = [];
|
|
151
151
|
for (const device of cameraDevices) {
|
|
152
152
|
const lastSegmentMs = await this.lastSegmentMs(device.id, nowMs, staleAfterMs);
|
|
153
|
-
const activeMode = lastSegmentMs !== null && nowMs - lastSegmentMs > staleAfterMs ? require_dist.RecordingStatusSchema.parse(await this.ctx.api.
|
|
153
|
+
const activeMode = lastSegmentMs !== null && nowMs - lastSegmentMs > staleAfterMs ? require_dist.RecordingStatusSchema.parse(await this.ctx.api.recordingArchive.getStatus.query({ deviceId: device.id })).activeMode : null;
|
|
154
154
|
cameras.push({
|
|
155
155
|
deviceId: device.id,
|
|
156
156
|
online: device.online === true,
|
|
@@ -175,18 +175,34 @@ var LivenessMonitorAddon = class extends require_dist.BaseAddon {
|
|
|
175
175
|
async lastSegmentMs(deviceId, nowMs, staleAfterMs) {
|
|
176
176
|
const recent = await this.ctx.api.recording.getAvailability.query({
|
|
177
177
|
deviceId,
|
|
178
|
+
provider: require_dist.RECORDING_SOURCE_CAMSTACK_ADDON,
|
|
178
179
|
fromMs: nowMs - staleAfterMs,
|
|
179
180
|
toMs: nowMs
|
|
180
181
|
});
|
|
182
|
+
if (recent.read === "unreadable") return this.unreadable(deviceId, "recent window");
|
|
181
183
|
if (recent.ranges.length > 0) return Math.max(...recent.ranges.map((r) => r.endMs));
|
|
182
184
|
const day = await this.ctx.api.recording.getAvailability.query({
|
|
183
185
|
deviceId,
|
|
186
|
+
provider: require_dist.RECORDING_SOURCE_CAMSTACK_ADDON,
|
|
184
187
|
fromMs: nowMs - RECORDING_LOOKBACK_MS,
|
|
185
188
|
toMs: nowMs
|
|
186
189
|
});
|
|
190
|
+
if (day.read === "unreadable") return this.unreadable(deviceId, "24 h lookback");
|
|
187
191
|
if (day.ranges.length === 0) return null;
|
|
188
192
|
return Math.max(...day.ranges.map((r) => r.endMs));
|
|
189
193
|
}
|
|
194
|
+
/**
|
|
195
|
+
* A camera nobody could read is NOT a camera with no footage.
|
|
196
|
+
*
|
|
197
|
+
* `null` here means "no claim", and `liveness-checks.ts` skips a camera with
|
|
198
|
+
* no claim — which is the safe direction. But a skip that says nothing is
|
|
199
|
+
* indistinguishable from a healthy tick, so the branch that drops the camera
|
|
200
|
+
* names it, per camera (D393, and CLAUDE.md's logging rule).
|
|
201
|
+
*/
|
|
202
|
+
unreadable(deviceId, window) {
|
|
203
|
+
this.ctx.logger.warn(`liveness: recording availability was unreadable (${window}) — this camera is not judged this tick`, { tags: { deviceId } });
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
190
206
|
/** Announce new faults and recoveries; say nothing about an unchanged fault. */
|
|
191
207
|
report(findings) {
|
|
192
208
|
const current = new Set(findings.map((f) => f.id));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as RECORDING_SOURCE_CAMSTACK_ADDON, E as RecordingStatusSchema, Tn as createEvent, fn as BaseAddon, un as errMsg, zn as EventCategory } from "../../dist-DiMNxNDh.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";
|
|
@@ -148,7 +148,7 @@ var LivenessMonitorAddon = class extends BaseAddon {
|
|
|
148
148
|
const cameras = [];
|
|
149
149
|
for (const device of cameraDevices) {
|
|
150
150
|
const lastSegmentMs = await this.lastSegmentMs(device.id, nowMs, staleAfterMs);
|
|
151
|
-
const activeMode = lastSegmentMs !== null && nowMs - lastSegmentMs > staleAfterMs ? RecordingStatusSchema.parse(await this.ctx.api.
|
|
151
|
+
const activeMode = lastSegmentMs !== null && nowMs - lastSegmentMs > staleAfterMs ? RecordingStatusSchema.parse(await this.ctx.api.recordingArchive.getStatus.query({ deviceId: device.id })).activeMode : null;
|
|
152
152
|
cameras.push({
|
|
153
153
|
deviceId: device.id,
|
|
154
154
|
online: device.online === true,
|
|
@@ -173,18 +173,34 @@ var LivenessMonitorAddon = class extends BaseAddon {
|
|
|
173
173
|
async lastSegmentMs(deviceId, nowMs, staleAfterMs) {
|
|
174
174
|
const recent = await this.ctx.api.recording.getAvailability.query({
|
|
175
175
|
deviceId,
|
|
176
|
+
provider: RECORDING_SOURCE_CAMSTACK_ADDON,
|
|
176
177
|
fromMs: nowMs - staleAfterMs,
|
|
177
178
|
toMs: nowMs
|
|
178
179
|
});
|
|
180
|
+
if (recent.read === "unreadable") return this.unreadable(deviceId, "recent window");
|
|
179
181
|
if (recent.ranges.length > 0) return Math.max(...recent.ranges.map((r) => r.endMs));
|
|
180
182
|
const day = await this.ctx.api.recording.getAvailability.query({
|
|
181
183
|
deviceId,
|
|
184
|
+
provider: RECORDING_SOURCE_CAMSTACK_ADDON,
|
|
182
185
|
fromMs: nowMs - RECORDING_LOOKBACK_MS,
|
|
183
186
|
toMs: nowMs
|
|
184
187
|
});
|
|
188
|
+
if (day.read === "unreadable") return this.unreadable(deviceId, "24 h lookback");
|
|
185
189
|
if (day.ranges.length === 0) return null;
|
|
186
190
|
return Math.max(...day.ranges.map((r) => r.endMs));
|
|
187
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* A camera nobody could read is NOT a camera with no footage.
|
|
194
|
+
*
|
|
195
|
+
* `null` here means "no claim", and `liveness-checks.ts` skips a camera with
|
|
196
|
+
* no claim — which is the safe direction. But a skip that says nothing is
|
|
197
|
+
* indistinguishable from a healthy tick, so the branch that drops the camera
|
|
198
|
+
* names it, per camera (D393, and CLAUDE.md's logging rule).
|
|
199
|
+
*/
|
|
200
|
+
unreadable(deviceId, window) {
|
|
201
|
+
this.ctx.logger.warn(`liveness: recording availability was unreadable (${window}) — this camera is not judged this tick`, { tags: { deviceId } });
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
188
204
|
/** Announce new faults and recoveries; say nothing about an unchanged fault. */
|
|
189
205
|
report(findings) {
|
|
190
206
|
const current = new Set(findings.map((f) => f.id));
|
|
@@ -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-XnunBp0n.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 {
|
|
2
|
+
import { I as UserRecordSchema, V as authProviderCapability, fn as BaseAddon, j as ScopedTokenSchema, on as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-DiMNxNDh.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-XnunBp0n.js");
|
|
4
4
|
const require_tls = require("../../tls-D_wUeOTD.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 {
|
|
1
|
+
import { Tt as localNetworkCapability, fn as BaseAddon, zn as EventCategory } from "../../dist-DiMNxNDh.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-IM-v7JV4.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-XnunBp0n.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 {
|
|
1
|
+
import { Dt as logDestinationCapability, fn as BaseAddon } from "../../dist-DiMNxNDh.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-XnunBp0n.js");
|
|
7
7
|
let node_fs_promises = require("node:fs/promises");
|
|
8
8
|
let node_fs = require("node:fs");
|
|
9
9
|
node_fs = require_chunk.__toESM(node_fs);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ht as
|
|
1
|
+
import { Ht as reducePoints, Mt as metricsProviderCapability, Tn as createEvent, Ut as resolveBucketMs, fn as BaseAddon, ft as foldSnapshotByFunction, un as errMsg, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
import { access, readFile, readdir } from "node:fs/promises";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import { constants, readFileSync } from "node:fs";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-XnunBp0n.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 {
|
|
2
|
+
import { Dn as emitReadiness, Xt as scoreRuntimes, at as enumerateInferenceDevices, fn as BaseAddon, un as errMsg, zn as EventCategory, zt as platformProbeCapability } from "../../dist-DiMNxNDh.mjs";
|
|
3
3
|
import * as fs from "node:fs";
|
|
4
4
|
import { execFile } from "node:child_process";
|
|
5
5
|
import * as os from "node:os";
|
|
@@ -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-XnunBp0n.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 {
|
|
1
|
+
import { fn as BaseAddon, zn as EventCategory } from "../../dist-DiMNxNDh.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-XnunBp0n.js");
|
|
7
7
|
const require_snapshot_courtesy = require("../../snapshot-courtesy-Cqs7GkOV.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $t as snapshotCapability, Mn as nodePin, U as bareAddonId, W as batteryCapability, a as BatteryStatusSchema, an as streamQualityLabel, et as deriveBatteryPresence, fn as BaseAddon, gn as DeviceFeature, un as errMsg, vn as DeviceType, zn as EventCategory } from "../../dist-DiMNxNDh.mjs";
|
|
2
2
|
import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CZPvteq2.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-XnunBp0n.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 {
|
|
1
|
+
import { dt as filesystemBrowseCapability, fn as BaseAddon, rn as storageProviderCapability } from "../../dist-DiMNxNDh.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-XnunBp0n.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");
|
|
@@ -3648,19 +3648,19 @@ var StorageOrchestratorAddon = class extends require_dist.BaseAddon {
|
|
|
3648
3648
|
},
|
|
3649
3649
|
recorder: {
|
|
3650
3650
|
pause: async (leaseId) => {
|
|
3651
|
-
await this.ctx.api.
|
|
3651
|
+
await this.ctx.api.recordingArchive.pauseForStorageMigration.mutate({ leaseId });
|
|
3652
3652
|
},
|
|
3653
3653
|
resume: async (leaseId) => {
|
|
3654
|
-
await this.ctx.api.
|
|
3654
|
+
await this.ctx.api.recordingArchive.resumeForStorageMigration.mutate({ leaseId });
|
|
3655
3655
|
},
|
|
3656
|
-
startMove: (input) => this.ctx.api.
|
|
3657
|
-
startDrain: (input) => this.ctx.api.
|
|
3658
|
-
getMove: (jobId) => this.ctx.api.
|
|
3659
|
-
listMovers: () => this.ctx.api.
|
|
3660
|
-
residue: (input) => this.ctx.api.
|
|
3661
|
-
cancelMove: async (jobId) => (await this.ctx.api.
|
|
3656
|
+
startMove: (input) => this.ctx.api.recordingArchive.startStorageMigrationMove.mutate(input),
|
|
3657
|
+
startDrain: (input) => this.ctx.api.recordingArchive.relocateFootage.mutate(input),
|
|
3658
|
+
getMove: (jobId) => this.ctx.api.recordingArchive.getStorageMigrationMoveStatus.query({ jobId }),
|
|
3659
|
+
listMovers: () => this.ctx.api.recordingArchive.listRelocateJobs.query({}),
|
|
3660
|
+
residue: (input) => this.ctx.api.recordingArchive.getRelocateResidue.query(input),
|
|
3661
|
+
cancelMove: async (jobId) => (await this.ctx.api.recordingArchive.cancelStorageMigrationMove.mutate({ jobId })).cancelled,
|
|
3662
3662
|
refresh: async (leaseId) => {
|
|
3663
|
-
await this.ctx.api.
|
|
3663
|
+
await this.ctx.api.recordingArchive.refreshStorageLocationsForMigration.mutate({ leaseId });
|
|
3664
3664
|
}
|
|
3665
3665
|
},
|
|
3666
3666
|
analytics: {
|
|
@@ -3711,7 +3711,7 @@ var StorageOrchestratorAddon = class extends require_dist.BaseAddon {
|
|
|
3711
3711
|
},
|
|
3712
3712
|
startDebugMedia: () => this.ctx.api.pipelineAnalytics.reclaimDebugMedia.mutate({ mode: "reclaim" }),
|
|
3713
3713
|
debugMediaStatus: () => this.ctx.api.pipelineAnalytics.getMediaReclaimStatus.query({}),
|
|
3714
|
-
walkLedger: (input) => this.ctx.api.
|
|
3714
|
+
walkLedger: (input) => this.ctx.api.recordingArchive.reconcileLedgerAgainstDisk.mutate(input)
|
|
3715
3715
|
},
|
|
3716
3716
|
now: () => Date.now(),
|
|
3717
3717
|
newId: () => (0, node_crypto.randomUUID)()
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { At as mayReadLocation, Ct as legacyModeOf, F as StorageMigrationJobSchema, Gt as resolveLocationMode, M as StorageCleanupJobSchema, N as StorageLocationModeSchema, Nn as parseJsonObject, Nt as modeMayWrite, P as StorageLocationTypeSchema, Zt as settingsStoreCapability, _t as isLocationEnabled, en as storageCapability, fn as BaseAddon, jt as mayWriteToLocation, ln as withLocationMode, lt as evictionPolicyOfLocation, mt as gbToBytes, q as collectSecretConfigKeys, tn as storageMigrationCapability, v as LegacyStorageLocationDefaultSchema, w as REDACTED_SECRET, zn as EventCategory } from "../../dist-DiMNxNDh.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";
|
|
@@ -3643,19 +3643,19 @@ var StorageOrchestratorAddon = class extends BaseAddon {
|
|
|
3643
3643
|
},
|
|
3644
3644
|
recorder: {
|
|
3645
3645
|
pause: async (leaseId) => {
|
|
3646
|
-
await this.ctx.api.
|
|
3646
|
+
await this.ctx.api.recordingArchive.pauseForStorageMigration.mutate({ leaseId });
|
|
3647
3647
|
},
|
|
3648
3648
|
resume: async (leaseId) => {
|
|
3649
|
-
await this.ctx.api.
|
|
3649
|
+
await this.ctx.api.recordingArchive.resumeForStorageMigration.mutate({ leaseId });
|
|
3650
3650
|
},
|
|
3651
|
-
startMove: (input) => this.ctx.api.
|
|
3652
|
-
startDrain: (input) => this.ctx.api.
|
|
3653
|
-
getMove: (jobId) => this.ctx.api.
|
|
3654
|
-
listMovers: () => this.ctx.api.
|
|
3655
|
-
residue: (input) => this.ctx.api.
|
|
3656
|
-
cancelMove: async (jobId) => (await this.ctx.api.
|
|
3651
|
+
startMove: (input) => this.ctx.api.recordingArchive.startStorageMigrationMove.mutate(input),
|
|
3652
|
+
startDrain: (input) => this.ctx.api.recordingArchive.relocateFootage.mutate(input),
|
|
3653
|
+
getMove: (jobId) => this.ctx.api.recordingArchive.getStorageMigrationMoveStatus.query({ jobId }),
|
|
3654
|
+
listMovers: () => this.ctx.api.recordingArchive.listRelocateJobs.query({}),
|
|
3655
|
+
residue: (input) => this.ctx.api.recordingArchive.getRelocateResidue.query(input),
|
|
3656
|
+
cancelMove: async (jobId) => (await this.ctx.api.recordingArchive.cancelStorageMigrationMove.mutate({ jobId })).cancelled,
|
|
3657
3657
|
refresh: async (leaseId) => {
|
|
3658
|
-
await this.ctx.api.
|
|
3658
|
+
await this.ctx.api.recordingArchive.refreshStorageLocationsForMigration.mutate({ leaseId });
|
|
3659
3659
|
}
|
|
3660
3660
|
},
|
|
3661
3661
|
analytics: {
|
|
@@ -3706,7 +3706,7 @@ var StorageOrchestratorAddon = class extends BaseAddon {
|
|
|
3706
3706
|
},
|
|
3707
3707
|
startDebugMedia: () => this.ctx.api.pipelineAnalytics.reclaimDebugMedia.mutate({ mode: "reclaim" }),
|
|
3708
3708
|
debugMediaStatus: () => this.ctx.api.pipelineAnalytics.getMediaReclaimStatus.query({}),
|
|
3709
|
-
walkLedger: (input) => this.ctx.api.
|
|
3709
|
+
walkLedger: (input) => this.ctx.api.recordingArchive.reconcileLedgerAgainstDisk.mutate(input)
|
|
3710
3710
|
},
|
|
3711
3711
|
now: () => Date.now(),
|
|
3712
3712
|
newId: () => randomUUID()
|
|
@@ -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-XnunBp0n.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.
|