@camstack/system 1.2.277 → 1.2.279
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/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.d.ts +0 -2
- 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.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 +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/{dist-DOF9wnat.mjs → dist-BLHDOV8o.mjs} +139 -79
- package/dist/{dist-Bu8HN-KS.js → dist-C6z4MoX5.js} +139 -79
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{retired-settings-keys-DXMfts8c.mjs → retired-settings-keys-DsMEZO3v.mjs} +1 -1
- package/dist/{retired-settings-keys-BwE6S2eQ.js → retired-settings-keys-_qA7nWba.js} +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-C6z4MoX5.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 { Fn as EventCategory, P as addonPagesCapability, cn as BaseAddon, on as errMsg } from "../../dist-
|
|
1
|
+
import { Fn as EventCategory, P as addonPagesCapability, cn as BaseAddon, on as errMsg } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Fn as EventCategory, I as addonWidgetsCapability, cn as BaseAddon, on as errMsg } from "../../dist-
|
|
1
|
+
import { Fn as EventCategory, I as addonWidgetsCapability, cn as BaseAddon, on as errMsg } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Fn as EventCategory, L as alertsCapability, cn as BaseAddon, n as AlertSchema, on as errMsg, xn as createEvent } from "../../dist-
|
|
1
|
+
import { Fn as EventCategory, L as alertsCapability, cn as BaseAddon, n as AlertSchema, on as errMsg, xn as createEvent } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { B as bareAddonId, Dn as isEvent, Fn as EventCategory, Lt as ptzAutotrackCapability, cn as BaseAddon, h as FIRST_LEVEL_MACRO_CLASSES, on as errMsg } from "../../dist-
|
|
1
|
+
import { B as bareAddonId, Dn as isEvent, Fn as EventCategory, Lt as ptzAutotrackCapability, cn as BaseAddon, h as FIRST_LEVEL_MACRO_CLASSES, on as errMsg } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Dt as mayWriteToLocation, Fn as EventCategory, Qt as storageOccupancyCapability, cn as BaseAddon, z as backupCapability } from "../../dist-
|
|
1
|
+
import { Dt as mayWriteToLocation, Fn as EventCategory, Qt as storageOccupancyCapability, cn as BaseAddon, z as backupCapability } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { At as motionCapability, Fn as EventCategory, Tn as hydrateSchema, U as cameraGridLayoutCapability, Y as declarationOwnerNodeId, Yt as snapshotCapability, b as MOTION_CLOSE_AFTER_MS, cn as BaseAddon, en as streamCatalogCapability, f as DERIVED_CAMERA_SILENCED_CAP_NAMES, fn as DeviceFeature, i as BaseDevice, mn as DeviceType, on as errMsg, p as DeclaredDevices, sn as buildFfmpegArgs, xn as createEvent } from "../../dist-
|
|
1
|
+
import { At as motionCapability, Fn as EventCategory, Tn as hydrateSchema, U as cameraGridLayoutCapability, Y as declarationOwnerNodeId, Yt as snapshotCapability, b as MOTION_CLOSE_AFTER_MS, cn as BaseAddon, en as streamCatalogCapability, f as DERIVED_CAMERA_SILENCED_CAP_NAMES, fn as DeviceFeature, i as BaseDevice, mn as DeviceType, on as errMsg, p as DeclaredDevices, sn as buildFfmpegArgs, xn as createEvent } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { G as coreBlockAddonId, K as coreBlockIdFromAddonId, c as CORE_BLOCKS_ADDON_ID, cn as BaseAddon, l as CORE_BLOCK_ADDON_PREFIX, on as errMsg, p as DeclaredDevices, q as coreBlocksCapability, u as CoreBlockSchema } from "../../dist-
|
|
1
|
+
import { G as coreBlockAddonId, K as coreBlockIdFromAddonId, c as CORE_BLOCKS_ADDON_ID, cn as BaseAddon, l as CORE_BLOCK_ADDON_PREFIX, on as errMsg, p as DeclaredDevices, q as coreBlocksCapability, u as CoreBlockSchema } from "../../dist-BLHDOV8o.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";
|
|
@@ -166,8 +166,6 @@ export declare class DeviceManagerAddon extends BaseAddon {
|
|
|
166
166
|
deviceId: number;
|
|
167
167
|
capName: string;
|
|
168
168
|
wrapperAddonId: string;
|
|
169
|
-
/** The source to toggle on a collection cap. Absent = all of the addon's. */
|
|
170
|
-
sourceId?: string;
|
|
171
169
|
active: boolean;
|
|
172
170
|
}): Promise<void>;
|
|
173
171
|
/** The narrow dependency bag the activation verb needs (D556). */
|
|
@@ -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-C6z4MoX5.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-_qA7nWba.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 { $ as deviceStateCapability, Bt as resolveContainerPrimaryChild, D as STREAM_PROFILE_META, En as isDeviceConfigCap, Fn as EventCategory, H as buildStreamParamsConfigSchema, Jt as siteZoneKey, Pn as sleep$1, Pt as parseStreamParamsFormPatch, Q as deviceManagerCapability, St as locationIconKey, Ut as runtimeStatePolicyFor, _n as WELL_KNOWN_TAB_MAP, cn as BaseAddon, et as deviceStatusCapability, fn as DeviceFeature, it as enumerateSchemaFields, jt as normalizeUnit, m as DeviceStatusSchema, mn as DeviceType, o as CAMERA_SWITCH_ORDER, on as errMsg, pn as DeviceRole, rt as enumerateItemArrayFields, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, v as LocationIconIdSchema } from "../../dist-
|
|
2
|
-
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-
|
|
1
|
+
import { $ as deviceStateCapability, Bt as resolveContainerPrimaryChild, D as STREAM_PROFILE_META, En as isDeviceConfigCap, Fn as EventCategory, H as buildStreamParamsConfigSchema, Jt as siteZoneKey, Pn as sleep$1, Pt as parseStreamParamsFormPatch, Q as deviceManagerCapability, St as locationIconKey, Ut as runtimeStatePolicyFor, _n as WELL_KNOWN_TAB_MAP, cn as BaseAddon, et as deviceStatusCapability, fn as DeviceFeature, it as enumerateSchemaFields, jt as normalizeUnit, m as DeviceStatusSchema, mn as DeviceType, o as CAMERA_SWITCH_ORDER, on as errMsg, pn as DeviceRole, rt as enumerateItemArrayFields, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, v as LocationIconIdSchema } from "../../dist-BLHDOV8o.mjs";
|
|
2
|
+
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-DsMEZO3v.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-C6z4MoX5.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 { B as bareAddonId, Fn as EventCategory, T as SOURCE_DEVICE_TYPES, at as evaluateSensorEdge, cn as BaseAddon, gt as isSourceCap, ht as isSameAddonId, mn as DeviceType, on as errMsg, tt as doorbellCapability, w as SOURCE_CAPS, xn as createEvent } from "../../dist-
|
|
1
|
+
import { B as bareAddonId, Fn as EventCategory, T as SOURCE_DEVICE_TYPES, at as evaluateSensorEdge, cn as BaseAddon, gt as isSourceCap, ht as isSameAddonId, mn as DeviceType, on as errMsg, tt as doorbellCapability, w as SOURCE_CAPS, xn as createEvent } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { C as RecordingStatusSchema, Fn as EventCategory, cn as BaseAddon, on as errMsg, xn as createEvent } from "../../dist-
|
|
1
|
+
import { C as RecordingStatusSchema, Fn as EventCategory, cn as BaseAddon, on as errMsg, xn as createEvent } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { N as UserRecordSchema, O as ScopedTokenSchema, R as authProviderCapability, cn as BaseAddon, nn as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-
|
|
2
|
+
import { N as UserRecordSchema, O as ScopedTokenSchema, R as authProviderCapability, cn as BaseAddon, nn as userManagementCapability, r as ApiKeyRecordSchema } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Fn as EventCategory, cn as BaseAddon, xt as localNetworkCapability } from "../../dist-
|
|
1
|
+
import { Fn as EventCategory, cn as BaseAddon, xt as localNetworkCapability } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Fn as EventCategory, Ot as metricsProviderCapability, Rt as reducePoints, cn as BaseAddon, lt as foldSnapshotByFunction, on as errMsg, xn as createEvent, zt as resolveBucketMs } from "../../dist-
|
|
1
|
+
import { Fn as EventCategory, Ot as metricsProviderCapability, Rt as reducePoints, cn as BaseAddon, lt as foldSnapshotByFunction, on as errMsg, xn as createEvent, zt as resolveBucketMs } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Cn as emitReadiness, Fn as EventCategory, Ft as platformProbeCapability, Kt as scoreRuntimes, cn as BaseAddon, nt as enumerateInferenceDevices, on as errMsg } from "../../dist-
|
|
2
|
+
import { Cn as emitReadiness, Fn as EventCategory, Ft as platformProbeCapability, Kt as scoreRuntimes, cn as BaseAddon, nt as enumerateInferenceDevices, on as errMsg } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Fn as EventCategory, cn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Fn as EventCategory, cn as BaseAddon } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { B as bareAddonId, Fn as EventCategory, On as nodePin, V as batteryCapability, Yt as snapshotCapability, Z as deriveBatteryPresence, a as BatteryStatusSchema, cn as BaseAddon, fn as DeviceFeature, mn as DeviceType, on as errMsg, tn as streamQualityLabel } from "../../dist-
|
|
1
|
+
import { B as bareAddonId, Fn as EventCategory, On as nodePin, V as batteryCapability, Yt as snapshotCapability, Z as deriveBatteryPresence, a as BatteryStatusSchema, cn as BaseAddon, fn as DeviceFeature, mn as DeviceType, on as errMsg, tn as streamQualityLabel } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { $t as storageProviderCapability, cn as BaseAddon, ct as filesystemBrowseCapability } from "../../dist-
|
|
1
|
+
import { $t as storageProviderCapability, cn as BaseAddon, ct as filesystemBrowseCapability } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { A as StorageLocationModeSchema, Dt as mayWriteToLocation, Et as mayReadLocation, Fn as EventCategory, M as StorageMigrationJobSchema, Vt as resolveLocationMode, W as collectSecretConfigKeys, Xt as storageCapability, Zt as storageMigrationCapability, _ as LegacyStorageLocationDefaultSchema, an as withLocationMode, cn as BaseAddon, j as StorageLocationTypeSchema, k as StorageCleanupJobSchema, kn as parseJsonObject, kt as modeMayWrite, ot as evictionPolicyOfLocation, pt as isLocationEnabled, qt as settingsStoreCapability, ut as gbToBytes, x as REDACTED_SECRET, yt as legacyModeOf } from "../../dist-
|
|
1
|
+
import { A as StorageLocationModeSchema, Dt as mayWriteToLocation, Et as mayReadLocation, Fn as EventCategory, M as StorageMigrationJobSchema, Vt as resolveLocationMode, W as collectSecretConfigKeys, Xt as storageCapability, Zt as storageMigrationCapability, _ as LegacyStorageLocationDefaultSchema, an as withLocationMode, cn as BaseAddon, j as StorageLocationTypeSchema, k as StorageCleanupJobSchema, kn as parseJsonObject, kt as modeMayWrite, ot as evictionPolicyOfLocation, pt as isLocationEnabled, qt as settingsStoreCapability, ut as gbToBytes, x as REDACTED_SECRET, yt as legacyModeOf } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Tn as hydrateSchema, cn as BaseAddon, on as errMsg } from "../../dist-
|
|
1
|
+
import { Tn as hydrateSchema, cn as BaseAddon, on as errMsg } from "../../dist-BLHDOV8o.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-C6z4MoX5.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 { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ct as logDestinationCapability, cn as BaseAddon } from "../../dist-BLHDOV8o.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";
|
|
@@ -691,7 +691,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
691
691
|
return EventCategory;
|
|
692
692
|
}({});
|
|
693
693
|
//#endregion
|
|
694
|
-
//#region ../types/dist/sleep-
|
|
694
|
+
//#region ../types/dist/sleep-CaB_hL5g.mjs
|
|
695
695
|
/**
|
|
696
696
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
697
697
|
* window to float samples (D455).
|
|
@@ -3854,6 +3854,20 @@ var EVENT_OWNER_TYPES = [
|
|
|
3854
3854
|
* nothing failing until a caller asked.
|
|
3855
3855
|
*/
|
|
3856
3856
|
var EventOwnerTypeSchema = z.enum(EVENT_OWNER_TYPES);
|
|
3857
|
+
/**
|
|
3858
|
+
* The owner kinds a media-PRESENCE probe may ask about: the three event tables
|
|
3859
|
+
* plus `track`.
|
|
3860
|
+
*
|
|
3861
|
+
* `videoclips` resolves a clip's still the way `resolveDefaultEventMedia` does
|
|
3862
|
+
* — the event's OWN media when it has any, else its owning TRACK's — so the
|
|
3863
|
+
* probe needs exactly this union and no more of {@link MediaOwnerType}. Built
|
|
3864
|
+
* FROM {@link EVENT_OWNER_TYPES} so a fourth event table reaches the probe the
|
|
3865
|
+
* day it is declared, rather than being accepted by one side and refused by the
|
|
3866
|
+
* other.
|
|
3867
|
+
*/
|
|
3868
|
+
var MEDIA_PRESENCE_OWNER_KINDS = [...EVENT_OWNER_TYPES, "track"];
|
|
3869
|
+
/** The same list as a Zod enum, for the cap input that carries it. */
|
|
3870
|
+
var MediaPresenceOwnerKindSchema = z.enum(MEDIA_PRESENCE_OWNER_KINDS);
|
|
3857
3871
|
new Set(EVENT_OWNER_TYPES);
|
|
3858
3872
|
/**
|
|
3859
3873
|
* Shared video / audio encode profile schemas used by every consumer
|
|
@@ -13238,30 +13252,30 @@ var deviceManagerCapability = {
|
|
|
13238
13252
|
*/
|
|
13239
13253
|
getAllBindings: method(z.object({}), z.array(DeviceBindingsForDeviceSchema)),
|
|
13240
13254
|
/**
|
|
13241
|
-
* Activate (or deactivate) a wrapper addon
|
|
13242
|
-
* (
|
|
13243
|
-
*
|
|
13244
|
-
* Persists the binding via ctx.settings;
|
|
13245
|
-
* clears the wrapper (falling back to native if one is
|
|
13246
|
-
*
|
|
13247
|
-
*
|
|
13248
|
-
*
|
|
13249
|
-
*
|
|
13250
|
-
* `sourceId`
|
|
13251
|
-
*
|
|
13252
|
-
*
|
|
13253
|
-
*
|
|
13254
|
-
*
|
|
13255
|
-
*
|
|
13256
|
-
*
|
|
13257
|
-
*
|
|
13255
|
+
* Activate (or deactivate) a wrapper addon for a (device, cap) pair — the
|
|
13256
|
+
* per-camera function switch's ONE authority (D62).
|
|
13257
|
+
*
|
|
13258
|
+
* SINGLETON capabilities only. Persists the binding via ctx.settings;
|
|
13259
|
+
* `active: false` clears the wrapper (falling back to native if one is
|
|
13260
|
+
* registered) by persisting the explicit `{ wrapperAddonId: null }` marker,
|
|
13261
|
+
* which is what stops `getBindings` re-binding a `defaultActive` wrapper.
|
|
13262
|
+
*
|
|
13263
|
+
* **A COLLECTION capability is REFUSED by name.** It briefly took a
|
|
13264
|
+
* `sourceId` and wrote a per-device DENY set, so one of an addon's several
|
|
13265
|
+
* sources could be switched off without switching off the rest (D556, then
|
|
13266
|
+
* D555's re-key by source). The operator removed the whole idea the same
|
|
13267
|
+
* day: *"tutti i providers funzionano sempre, non serve
|
|
13268
|
+
* disattivarli/attivarli … loro vivono lì"* (D557 amended, third). A
|
|
13269
|
+
* collection cap's providers are a DERIVED set — every addon that provides
|
|
13270
|
+
* the cap for this device type, computed on every read and persisted
|
|
13271
|
+
* nowhere — so there is nothing here to activate, and a verb that accepted
|
|
13272
|
+
* the call could only write a field the enumeration does not read. That is
|
|
13273
|
+
* the D62 shape, and this repo has shipped it four times.
|
|
13258
13274
|
*/
|
|
13259
13275
|
setWrapperActive: method(z.object({
|
|
13260
13276
|
deviceId: z.number(),
|
|
13261
13277
|
capName: z.string(),
|
|
13262
13278
|
wrapperAddonId: z.string(),
|
|
13263
|
-
/** The `ClipSource.source` id to toggle. Absent = all of the addon's. */
|
|
13264
|
-
sourceId: z.string().optional(),
|
|
13265
13279
|
active: z.boolean()
|
|
13266
13280
|
}), z.void(), {
|
|
13267
13281
|
kind: "mutation",
|
|
@@ -21794,6 +21808,35 @@ var pipelineAnalyticsCapability = {
|
|
|
21794
21808
|
deviceId: z.number()
|
|
21795
21809
|
}), z.array(MediaFileInfoSchema).readonly()),
|
|
21796
21810
|
/**
|
|
21811
|
+
* Which of `ownerIds` hold at least ONE media row — an INDEX read, never a
|
|
21812
|
+
* blob read, and the LICENCE `videoclips` needs to publish a `thumbnail`.
|
|
21813
|
+
*
|
|
21814
|
+
* The event-media URL is stamped from a template for every event in the
|
|
21815
|
+
* system, so "the plane is up" was being served as "there are bytes": 64 of
|
|
21816
|
+
* one camera's 179 clips pointed at a 404 (device 3836, 2026-08-17). This
|
|
21817
|
+
* is the question that turns the stamp into a claim.
|
|
21818
|
+
*
|
|
21819
|
+
* It is on the WIRE because the clip source is registered by the addon that
|
|
21820
|
+
* owns the FOOTAGE, not by this one (D560) — the probe used to be an
|
|
21821
|
+
* in-process `MediaStore` read. One call per OWNER KIND, never one per
|
|
21822
|
+
* owner: that N+1 is what `MediaStore.ownersWithMedia` was written to
|
|
21823
|
+
* prevent, and crossing a process boundary makes it worse, not better.
|
|
21824
|
+
* `ownerIds` is bounded at the same 5 000 the annotation fetch is bounded
|
|
21825
|
+
* at, so one pathological camera-day cannot mint an unbounded request.
|
|
21826
|
+
*
|
|
21827
|
+
* THROWS rather than answering partially. A probe that quietly
|
|
21828
|
+
* under-reports reads as "these owners have nothing" and the caller drops
|
|
21829
|
+
* thumbnails that exist — the opposite failure to the one above, and
|
|
21830
|
+
* equally invisible.
|
|
21831
|
+
*
|
|
21832
|
+
* `deviceId` is the authorization subject, exactly as on `getEventMedia`.
|
|
21833
|
+
*/
|
|
21834
|
+
ownersWithMedia: method(z.object({
|
|
21835
|
+
deviceId: z.number(),
|
|
21836
|
+
ownerKind: MediaPresenceOwnerKindSchema,
|
|
21837
|
+
ownerIds: z.array(z.string()).max(5e3)
|
|
21838
|
+
}), z.array(z.string()).readonly()),
|
|
21839
|
+
/**
|
|
21797
21840
|
* Search object events by text query using CLIP cosine similarity.
|
|
21798
21841
|
* Encodes `text` via the `embedding-encoder` cap, queries the
|
|
21799
21842
|
* `ObjectEmbeddingStore` with optional prefilters, ranks all matching
|
|
@@ -25945,6 +25988,18 @@ var vectorStoreCapability = {
|
|
|
25945
25988
|
stats: method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" })
|
|
25946
25989
|
}
|
|
25947
25990
|
};
|
|
25991
|
+
z.enum([
|
|
25992
|
+
"queue-full",
|
|
25993
|
+
"camera-backoff",
|
|
25994
|
+
"sleeping",
|
|
25995
|
+
"camera-refused",
|
|
25996
|
+
"no-keyframe",
|
|
25997
|
+
"no-catalog-row",
|
|
25998
|
+
"unsupported",
|
|
25999
|
+
"unknown-device",
|
|
26000
|
+
"uid-missing"
|
|
26001
|
+
]);
|
|
26002
|
+
z.enum(["deferred", "final"]);
|
|
25948
26003
|
var ClipSchema = z.object({
|
|
25949
26004
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
25950
26005
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -26095,7 +26150,25 @@ var ClipSchema = z.object({
|
|
|
26095
26150
|
*/
|
|
26096
26151
|
playable: z.boolean().optional(),
|
|
26097
26152
|
/** Why {@link playable} is false, verbatim (`no-file-for-window`). */
|
|
26098
|
-
unplayableReason: z.string().optional()
|
|
26153
|
+
unplayableReason: z.string().optional(),
|
|
26154
|
+
/**
|
|
26155
|
+
* This clip is STILL BEING WRITTEN, so {@link ClipSchema.timeRange}`.endMs`
|
|
26156
|
+
* is not its end.
|
|
26157
|
+
*
|
|
26158
|
+
* Absent — the common case — means the row is closed and its `endMs` is the
|
|
26159
|
+
* end of the recording. Present and `true` means the source told us the file
|
|
26160
|
+
* has no end yet, and the `endMs` we carry is whatever the camera's index
|
|
26161
|
+
* entry happened to hold: on a Reolink E1 Outdoor PoE (592, measured
|
|
26162
|
+
* 2026-09-20) the newest file `…_192927_000000_…_0.mp4` reported an `endTime`
|
|
26163
|
+
* of 19:29:56 and STILL reported it eight minutes later, while the file went
|
|
26164
|
+
* on growing. A surface that drew 29 s there was lying about a clip that
|
|
26165
|
+
* plays for minutes, on the one row the operator looks at first.
|
|
26166
|
+
*
|
|
26167
|
+
* `endMs` is deliberately still a number: it is the best bound anything has
|
|
26168
|
+
* for a mint window or a byte fetch, and every consumer already requires it.
|
|
26169
|
+
* This flag says what it is WORTH, and a duration is not drawn from it.
|
|
26170
|
+
*/
|
|
26171
|
+
inProgress: z.boolean().optional()
|
|
26099
26172
|
});
|
|
26100
26173
|
var ClipPlaybackSchema = z.object({
|
|
26101
26174
|
/**
|
|
@@ -26178,59 +26251,17 @@ var ClipSourceSchema = z.object({
|
|
|
26178
26251
|
* alternative — a `native:reolink:* → provider-reolink` table inside the
|
|
26179
26252
|
* widget — is a second authority on provider identity living in the one
|
|
26180
26253
|
* package with no business knowing it, wrong the day a third source appears
|
|
26181
|
-
* (D557). One addon may serve SEVERAL sources
|
|
26182
|
-
*
|
|
26183
|
-
*
|
|
26184
|
-
*
|
|
26254
|
+
* (D557). One addon may serve SEVERAL sources, which is why the per-device
|
|
26255
|
+
* switch is keyed by SOURCE and not by this (D555) — `addon-provider-reolink`
|
|
26256
|
+
* served a hub child two of them until the two views were measured to be one
|
|
26257
|
+
* store read twice (D555) and then read ONE way (D565).
|
|
26185
26258
|
*
|
|
26186
26259
|
* Optional for version skew only. The collection dispatcher stamps it from
|
|
26187
26260
|
* the registry, so a row that travelled through the fan-out carries the
|
|
26188
26261
|
* authoritative id whatever the provider filled in.
|
|
26189
26262
|
*/
|
|
26190
26263
|
addonId: z.string().optional(),
|
|
26191
|
-
|
|
26192
|
-
* Which API this source resolved to FOR THIS CAMERA, when it has a choice.
|
|
26193
|
-
*
|
|
26194
|
-
* A source may cover one store through more than one surface — the Reolink
|
|
26195
|
-
* provider reads a hub child through the parent's event log and a standalone
|
|
26196
|
-
* through its own file list, because that is what each camera answers. The
|
|
26197
|
-
* CHOICE is the provider's, made from what the camera is, and is never a row
|
|
26198
|
-
* the operator has to understand; but it is REPORTED, because a source that
|
|
26199
|
-
* silently reads a different API on two cameras and then behaves differently
|
|
26200
|
-
* is the thing nobody can debug later. Absent when the source has only one
|
|
26201
|
-
* way to read its store.
|
|
26202
|
-
*/
|
|
26203
|
-
via: z.string().optional(),
|
|
26204
|
-
availability: ClipSourceAvailabilitySchema,
|
|
26205
|
-
/**
|
|
26206
|
-
* The operator switched this source OFF for this camera.
|
|
26207
|
-
*
|
|
26208
|
-
* Deliberately NOT a member of {@link ClipSourceAvailabilitySchema}'s
|
|
26209
|
-
* vocabulary. That enum models what the source CAN do — a sleeping camera, an
|
|
26210
|
-
* unmounted card, an index that disagrees with its own calendar — and a
|
|
26211
|
-
* switched-off source could answer perfectly well; the operator decided it
|
|
26212
|
-
* should not. Folding the choice in is how `disabled` and `broken` stop being
|
|
26213
|
-
* distinguishable, which is the D62 rule this repo has already paid for twice:
|
|
26214
|
-
* an off switch is REPORTED off (`CameraStatus.switchedOff`, the same word),
|
|
26215
|
-
* and disabled must never look like broken. It is also what lets every
|
|
26216
|
-
* exhaustive consumer of the availability enum keep compiling.
|
|
26217
|
-
*
|
|
26218
|
-
* A switched-off source contributes NO clips (`listClips` never calls it) and
|
|
26219
|
-
* its row carries no `catalogAsOf`: nothing confirms a catalog it is not
|
|
26220
|
-
* allowed to serve, and a frozen age that can only grow draws a stalling
|
|
26221
|
-
* source rather than an off switch.
|
|
26222
|
-
*
|
|
26223
|
-
* The row survives BECAUSE it is the control the operator switches the source
|
|
26224
|
-
* back on from — D554 decision 4's rule ("a source that cannot answer
|
|
26225
|
-
* produces a ROW, not an absence") applied to the one case D556 carved out of
|
|
26226
|
-
* it, and D557's own kept property ("a source is never hidden, only its
|
|
26227
|
-
* rows"). Absent means on.
|
|
26228
|
-
*
|
|
26229
|
-
* A provider never sets this — like {@link ClipSourceSchema.addonId} it is
|
|
26230
|
-
* stamped by the collection dispatcher, which holds the registry's projection
|
|
26231
|
-
* of the persisted authority (D556) and is the only place that knows it.
|
|
26232
|
-
*/
|
|
26233
|
-
switchedOff: z.boolean().optional()
|
|
26264
|
+
availability: ClipSourceAvailabilitySchema
|
|
26234
26265
|
});
|
|
26235
26266
|
var videoclipsCapability = {
|
|
26236
26267
|
name: "videoclips",
|
|
@@ -26284,22 +26315,40 @@ var videoclipsCapability = {
|
|
|
26284
26315
|
limit: z.number().int().positive().optional(),
|
|
26285
26316
|
/**
|
|
26286
26317
|
* WHICH provider to ask — the `addonId` a {@link ClipSourceSchema} row
|
|
26287
|
-
* carries, never a source id and never a list.
|
|
26318
|
+
* carries, never a source id and never a list. **Required** (D554 amended).
|
|
26288
26319
|
*
|
|
26289
|
-
*
|
|
26290
|
-
*
|
|
26291
|
-
*
|
|
26292
|
-
*
|
|
26293
|
-
*
|
|
26320
|
+
* A provider the device is not bound to is refused by name rather than
|
|
26321
|
+
* answered by another one (D552's `rejectUnresolvedAddonPin` rule).
|
|
26322
|
+
*
|
|
26323
|
+
* It was optional, documented as "absent means the device's BOUND
|
|
26324
|
+
* provider, which is CamStack on every camera". No code implemented
|
|
26325
|
+
* that. Measured on the live hub 2026-09-20 — device 592, bound to
|
|
26326
|
+
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
26327
|
+
* answered SIX rows, three from each source, merged newest-first:
|
|
26328
|
+
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
26329
|
+
* so absence bought the union this method exists not to be, and
|
|
26330
|
+
* `limit` meant `limit × sources`.
|
|
26331
|
+
*
|
|
26332
|
+
* There is nothing to restore the default to. `getBindings` answers a
|
|
26333
|
+
* collection cap with a DERIVED, PLURAL set (D554 amended, step 0);
|
|
26334
|
+
* `setWrapperActive` — the singleton authority that could name one —
|
|
26335
|
+
* throws for a collection cap by design. Naming CamStack here instead
|
|
26336
|
+
* would privilege one addon by id inside a surface whose premise is
|
|
26337
|
+
* that sources are peers, and would be wrong on the first camera with
|
|
26338
|
+
* no recorder binding. So absence is REFUSED, in the schema, where the
|
|
26339
|
+
* generated types make it unomittable rather than merely discouraged.
|
|
26340
|
+
*
|
|
26341
|
+
* The default belongs to the SURFACE, which has the `listSources` rows
|
|
26342
|
+
* and can say which one it picked (D569 § 1–3; the viewer already
|
|
26343
|
+
* always sends this).
|
|
26294
26344
|
*
|
|
26295
26345
|
* It replaced `sources?: string[]`, a VIEW filter over source ids that
|
|
26296
26346
|
* assumed the answer was a fan-out over everything a camera has. The
|
|
26297
|
-
* operator settled otherwise on 2026-09-20 — *"
|
|
26298
|
-
*
|
|
26299
|
-
*
|
|
26300
|
-
* at a time and there is nothing to filter out of it.
|
|
26347
|
+
* operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
|
|
26348
|
+
* solo"* — so the list is asked of one provider at a time and there is
|
|
26349
|
+
* nothing to filter out of it.
|
|
26301
26350
|
*/
|
|
26302
|
-
provider: z.string().
|
|
26351
|
+
provider: z.string().min(1)
|
|
26303
26352
|
}), z.array(ClipSchema).readonly(), {
|
|
26304
26353
|
kind: "query",
|
|
26305
26354
|
auth: "protected"
|
|
@@ -43723,6 +43772,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
43723
43772
|
addonId: null,
|
|
43724
43773
|
access: "view"
|
|
43725
43774
|
},
|
|
43775
|
+
"pipelineAnalytics.ownersWithMedia": {
|
|
43776
|
+
capName: "pipeline-analytics",
|
|
43777
|
+
capScope: "device",
|
|
43778
|
+
addonId: null,
|
|
43779
|
+
access: "view"
|
|
43780
|
+
},
|
|
43726
43781
|
"pipelineAnalytics.pauseForStorageMigration": {
|
|
43727
43782
|
capName: "pipeline-analytics",
|
|
43728
43783
|
capScope: "device",
|
|
@@ -47623,6 +47678,11 @@ Object.freeze({
|
|
|
47623
47678
|
form: "single",
|
|
47624
47679
|
optional: false
|
|
47625
47680
|
}],
|
|
47681
|
+
"pipelineAnalytics.ownersWithMedia": [{
|
|
47682
|
+
name: "deviceId",
|
|
47683
|
+
form: "single",
|
|
47684
|
+
optional: false
|
|
47685
|
+
}],
|
|
47626
47686
|
"pipelineAnalytics.proposeRetrainAnnotations": [{
|
|
47627
47687
|
name: "deviceId",
|
|
47628
47688
|
form: "single",
|
|
@@ -691,7 +691,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
691
691
|
return EventCategory;
|
|
692
692
|
}({});
|
|
693
693
|
//#endregion
|
|
694
|
-
//#region ../types/dist/sleep-
|
|
694
|
+
//#region ../types/dist/sleep-CaB_hL5g.mjs
|
|
695
695
|
/**
|
|
696
696
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
697
697
|
* window to float samples (D455).
|
|
@@ -3854,6 +3854,20 @@ var EVENT_OWNER_TYPES = [
|
|
|
3854
3854
|
* nothing failing until a caller asked.
|
|
3855
3855
|
*/
|
|
3856
3856
|
var EventOwnerTypeSchema = zod.z.enum(EVENT_OWNER_TYPES);
|
|
3857
|
+
/**
|
|
3858
|
+
* The owner kinds a media-PRESENCE probe may ask about: the three event tables
|
|
3859
|
+
* plus `track`.
|
|
3860
|
+
*
|
|
3861
|
+
* `videoclips` resolves a clip's still the way `resolveDefaultEventMedia` does
|
|
3862
|
+
* — the event's OWN media when it has any, else its owning TRACK's — so the
|
|
3863
|
+
* probe needs exactly this union and no more of {@link MediaOwnerType}. Built
|
|
3864
|
+
* FROM {@link EVENT_OWNER_TYPES} so a fourth event table reaches the probe the
|
|
3865
|
+
* day it is declared, rather than being accepted by one side and refused by the
|
|
3866
|
+
* other.
|
|
3867
|
+
*/
|
|
3868
|
+
var MEDIA_PRESENCE_OWNER_KINDS = [...EVENT_OWNER_TYPES, "track"];
|
|
3869
|
+
/** The same list as a Zod enum, for the cap input that carries it. */
|
|
3870
|
+
var MediaPresenceOwnerKindSchema = zod.z.enum(MEDIA_PRESENCE_OWNER_KINDS);
|
|
3857
3871
|
new Set(EVENT_OWNER_TYPES);
|
|
3858
3872
|
/**
|
|
3859
3873
|
* Shared video / audio encode profile schemas used by every consumer
|
|
@@ -13238,30 +13252,30 @@ var deviceManagerCapability = {
|
|
|
13238
13252
|
*/
|
|
13239
13253
|
getAllBindings: method(zod.z.object({}), zod.z.array(DeviceBindingsForDeviceSchema)),
|
|
13240
13254
|
/**
|
|
13241
|
-
* Activate (or deactivate) a wrapper addon
|
|
13242
|
-
* (
|
|
13243
|
-
*
|
|
13244
|
-
* Persists the binding via ctx.settings;
|
|
13245
|
-
* clears the wrapper (falling back to native if one is
|
|
13246
|
-
*
|
|
13247
|
-
*
|
|
13248
|
-
*
|
|
13249
|
-
*
|
|
13250
|
-
* `sourceId`
|
|
13251
|
-
*
|
|
13252
|
-
*
|
|
13253
|
-
*
|
|
13254
|
-
*
|
|
13255
|
-
*
|
|
13256
|
-
*
|
|
13257
|
-
*
|
|
13255
|
+
* Activate (or deactivate) a wrapper addon for a (device, cap) pair — the
|
|
13256
|
+
* per-camera function switch's ONE authority (D62).
|
|
13257
|
+
*
|
|
13258
|
+
* SINGLETON capabilities only. Persists the binding via ctx.settings;
|
|
13259
|
+
* `active: false` clears the wrapper (falling back to native if one is
|
|
13260
|
+
* registered) by persisting the explicit `{ wrapperAddonId: null }` marker,
|
|
13261
|
+
* which is what stops `getBindings` re-binding a `defaultActive` wrapper.
|
|
13262
|
+
*
|
|
13263
|
+
* **A COLLECTION capability is REFUSED by name.** It briefly took a
|
|
13264
|
+
* `sourceId` and wrote a per-device DENY set, so one of an addon's several
|
|
13265
|
+
* sources could be switched off without switching off the rest (D556, then
|
|
13266
|
+
* D555's re-key by source). The operator removed the whole idea the same
|
|
13267
|
+
* day: *"tutti i providers funzionano sempre, non serve
|
|
13268
|
+
* disattivarli/attivarli … loro vivono lì"* (D557 amended, third). A
|
|
13269
|
+
* collection cap's providers are a DERIVED set — every addon that provides
|
|
13270
|
+
* the cap for this device type, computed on every read and persisted
|
|
13271
|
+
* nowhere — so there is nothing here to activate, and a verb that accepted
|
|
13272
|
+
* the call could only write a field the enumeration does not read. That is
|
|
13273
|
+
* the D62 shape, and this repo has shipped it four times.
|
|
13258
13274
|
*/
|
|
13259
13275
|
setWrapperActive: method(zod.z.object({
|
|
13260
13276
|
deviceId: zod.z.number(),
|
|
13261
13277
|
capName: zod.z.string(),
|
|
13262
13278
|
wrapperAddonId: zod.z.string(),
|
|
13263
|
-
/** The `ClipSource.source` id to toggle. Absent = all of the addon's. */
|
|
13264
|
-
sourceId: zod.z.string().optional(),
|
|
13265
13279
|
active: zod.z.boolean()
|
|
13266
13280
|
}), zod.z.void(), {
|
|
13267
13281
|
kind: "mutation",
|
|
@@ -21794,6 +21808,35 @@ var pipelineAnalyticsCapability = {
|
|
|
21794
21808
|
deviceId: zod.z.number()
|
|
21795
21809
|
}), zod.z.array(MediaFileInfoSchema).readonly()),
|
|
21796
21810
|
/**
|
|
21811
|
+
* Which of `ownerIds` hold at least ONE media row — an INDEX read, never a
|
|
21812
|
+
* blob read, and the LICENCE `videoclips` needs to publish a `thumbnail`.
|
|
21813
|
+
*
|
|
21814
|
+
* The event-media URL is stamped from a template for every event in the
|
|
21815
|
+
* system, so "the plane is up" was being served as "there are bytes": 64 of
|
|
21816
|
+
* one camera's 179 clips pointed at a 404 (device 3836, 2026-08-17). This
|
|
21817
|
+
* is the question that turns the stamp into a claim.
|
|
21818
|
+
*
|
|
21819
|
+
* It is on the WIRE because the clip source is registered by the addon that
|
|
21820
|
+
* owns the FOOTAGE, not by this one (D560) — the probe used to be an
|
|
21821
|
+
* in-process `MediaStore` read. One call per OWNER KIND, never one per
|
|
21822
|
+
* owner: that N+1 is what `MediaStore.ownersWithMedia` was written to
|
|
21823
|
+
* prevent, and crossing a process boundary makes it worse, not better.
|
|
21824
|
+
* `ownerIds` is bounded at the same 5 000 the annotation fetch is bounded
|
|
21825
|
+
* at, so one pathological camera-day cannot mint an unbounded request.
|
|
21826
|
+
*
|
|
21827
|
+
* THROWS rather than answering partially. A probe that quietly
|
|
21828
|
+
* under-reports reads as "these owners have nothing" and the caller drops
|
|
21829
|
+
* thumbnails that exist — the opposite failure to the one above, and
|
|
21830
|
+
* equally invisible.
|
|
21831
|
+
*
|
|
21832
|
+
* `deviceId` is the authorization subject, exactly as on `getEventMedia`.
|
|
21833
|
+
*/
|
|
21834
|
+
ownersWithMedia: method(zod.z.object({
|
|
21835
|
+
deviceId: zod.z.number(),
|
|
21836
|
+
ownerKind: MediaPresenceOwnerKindSchema,
|
|
21837
|
+
ownerIds: zod.z.array(zod.z.string()).max(5e3)
|
|
21838
|
+
}), zod.z.array(zod.z.string()).readonly()),
|
|
21839
|
+
/**
|
|
21797
21840
|
* Search object events by text query using CLIP cosine similarity.
|
|
21798
21841
|
* Encodes `text` via the `embedding-encoder` cap, queries the
|
|
21799
21842
|
* `ObjectEmbeddingStore` with optional prefilters, ranks all matching
|
|
@@ -25945,6 +25988,18 @@ var vectorStoreCapability = {
|
|
|
25945
25988
|
stats: method(VectorStatsInputSchema, VectorStatsResultSchema, { auth: "admin" })
|
|
25946
25989
|
}
|
|
25947
25990
|
};
|
|
25991
|
+
zod.z.enum([
|
|
25992
|
+
"queue-full",
|
|
25993
|
+
"camera-backoff",
|
|
25994
|
+
"sleeping",
|
|
25995
|
+
"camera-refused",
|
|
25996
|
+
"no-keyframe",
|
|
25997
|
+
"no-catalog-row",
|
|
25998
|
+
"unsupported",
|
|
25999
|
+
"unknown-device",
|
|
26000
|
+
"uid-missing"
|
|
26001
|
+
]);
|
|
26002
|
+
zod.z.enum(["deferred", "final"]);
|
|
25948
26003
|
var ClipSchema = zod.z.object({
|
|
25949
26004
|
/** Opaque, provider-namespaced id. The default provider encodes the time
|
|
25950
26005
|
* window so `getClipPlayback` is self-contained (no event re-query). */
|
|
@@ -26095,7 +26150,25 @@ var ClipSchema = zod.z.object({
|
|
|
26095
26150
|
*/
|
|
26096
26151
|
playable: zod.z.boolean().optional(),
|
|
26097
26152
|
/** Why {@link playable} is false, verbatim (`no-file-for-window`). */
|
|
26098
|
-
unplayableReason: zod.z.string().optional()
|
|
26153
|
+
unplayableReason: zod.z.string().optional(),
|
|
26154
|
+
/**
|
|
26155
|
+
* This clip is STILL BEING WRITTEN, so {@link ClipSchema.timeRange}`.endMs`
|
|
26156
|
+
* is not its end.
|
|
26157
|
+
*
|
|
26158
|
+
* Absent — the common case — means the row is closed and its `endMs` is the
|
|
26159
|
+
* end of the recording. Present and `true` means the source told us the file
|
|
26160
|
+
* has no end yet, and the `endMs` we carry is whatever the camera's index
|
|
26161
|
+
* entry happened to hold: on a Reolink E1 Outdoor PoE (592, measured
|
|
26162
|
+
* 2026-09-20) the newest file `…_192927_000000_…_0.mp4` reported an `endTime`
|
|
26163
|
+
* of 19:29:56 and STILL reported it eight minutes later, while the file went
|
|
26164
|
+
* on growing. A surface that drew 29 s there was lying about a clip that
|
|
26165
|
+
* plays for minutes, on the one row the operator looks at first.
|
|
26166
|
+
*
|
|
26167
|
+
* `endMs` is deliberately still a number: it is the best bound anything has
|
|
26168
|
+
* for a mint window or a byte fetch, and every consumer already requires it.
|
|
26169
|
+
* This flag says what it is WORTH, and a duration is not drawn from it.
|
|
26170
|
+
*/
|
|
26171
|
+
inProgress: zod.z.boolean().optional()
|
|
26099
26172
|
});
|
|
26100
26173
|
var ClipPlaybackSchema = zod.z.object({
|
|
26101
26174
|
/**
|
|
@@ -26178,59 +26251,17 @@ var ClipSourceSchema = zod.z.object({
|
|
|
26178
26251
|
* alternative — a `native:reolink:* → provider-reolink` table inside the
|
|
26179
26252
|
* widget — is a second authority on provider identity living in the one
|
|
26180
26253
|
* package with no business knowing it, wrong the day a third source appears
|
|
26181
|
-
* (D557). One addon may serve SEVERAL sources
|
|
26182
|
-
*
|
|
26183
|
-
*
|
|
26184
|
-
*
|
|
26254
|
+
* (D557). One addon may serve SEVERAL sources, which is why the per-device
|
|
26255
|
+
* switch is keyed by SOURCE and not by this (D555) — `addon-provider-reolink`
|
|
26256
|
+
* served a hub child two of them until the two views were measured to be one
|
|
26257
|
+
* store read twice (D555) and then read ONE way (D565).
|
|
26185
26258
|
*
|
|
26186
26259
|
* Optional for version skew only. The collection dispatcher stamps it from
|
|
26187
26260
|
* the registry, so a row that travelled through the fan-out carries the
|
|
26188
26261
|
* authoritative id whatever the provider filled in.
|
|
26189
26262
|
*/
|
|
26190
26263
|
addonId: zod.z.string().optional(),
|
|
26191
|
-
|
|
26192
|
-
* Which API this source resolved to FOR THIS CAMERA, when it has a choice.
|
|
26193
|
-
*
|
|
26194
|
-
* A source may cover one store through more than one surface — the Reolink
|
|
26195
|
-
* provider reads a hub child through the parent's event log and a standalone
|
|
26196
|
-
* through its own file list, because that is what each camera answers. The
|
|
26197
|
-
* CHOICE is the provider's, made from what the camera is, and is never a row
|
|
26198
|
-
* the operator has to understand; but it is REPORTED, because a source that
|
|
26199
|
-
* silently reads a different API on two cameras and then behaves differently
|
|
26200
|
-
* is the thing nobody can debug later. Absent when the source has only one
|
|
26201
|
-
* way to read its store.
|
|
26202
|
-
*/
|
|
26203
|
-
via: zod.z.string().optional(),
|
|
26204
|
-
availability: ClipSourceAvailabilitySchema,
|
|
26205
|
-
/**
|
|
26206
|
-
* The operator switched this source OFF for this camera.
|
|
26207
|
-
*
|
|
26208
|
-
* Deliberately NOT a member of {@link ClipSourceAvailabilitySchema}'s
|
|
26209
|
-
* vocabulary. That enum models what the source CAN do — a sleeping camera, an
|
|
26210
|
-
* unmounted card, an index that disagrees with its own calendar — and a
|
|
26211
|
-
* switched-off source could answer perfectly well; the operator decided it
|
|
26212
|
-
* should not. Folding the choice in is how `disabled` and `broken` stop being
|
|
26213
|
-
* distinguishable, which is the D62 rule this repo has already paid for twice:
|
|
26214
|
-
* an off switch is REPORTED off (`CameraStatus.switchedOff`, the same word),
|
|
26215
|
-
* and disabled must never look like broken. It is also what lets every
|
|
26216
|
-
* exhaustive consumer of the availability enum keep compiling.
|
|
26217
|
-
*
|
|
26218
|
-
* A switched-off source contributes NO clips (`listClips` never calls it) and
|
|
26219
|
-
* its row carries no `catalogAsOf`: nothing confirms a catalog it is not
|
|
26220
|
-
* allowed to serve, and a frozen age that can only grow draws a stalling
|
|
26221
|
-
* source rather than an off switch.
|
|
26222
|
-
*
|
|
26223
|
-
* The row survives BECAUSE it is the control the operator switches the source
|
|
26224
|
-
* back on from — D554 decision 4's rule ("a source that cannot answer
|
|
26225
|
-
* produces a ROW, not an absence") applied to the one case D556 carved out of
|
|
26226
|
-
* it, and D557's own kept property ("a source is never hidden, only its
|
|
26227
|
-
* rows"). Absent means on.
|
|
26228
|
-
*
|
|
26229
|
-
* A provider never sets this — like {@link ClipSourceSchema.addonId} it is
|
|
26230
|
-
* stamped by the collection dispatcher, which holds the registry's projection
|
|
26231
|
-
* of the persisted authority (D556) and is the only place that knows it.
|
|
26232
|
-
*/
|
|
26233
|
-
switchedOff: zod.z.boolean().optional()
|
|
26264
|
+
availability: ClipSourceAvailabilitySchema
|
|
26234
26265
|
});
|
|
26235
26266
|
var videoclipsCapability = {
|
|
26236
26267
|
name: "videoclips",
|
|
@@ -26284,22 +26315,40 @@ var videoclipsCapability = {
|
|
|
26284
26315
|
limit: zod.z.number().int().positive().optional(),
|
|
26285
26316
|
/**
|
|
26286
26317
|
* WHICH provider to ask — the `addonId` a {@link ClipSourceSchema} row
|
|
26287
|
-
* carries, never a source id and never a list.
|
|
26318
|
+
* carries, never a source id and never a list. **Required** (D554 amended).
|
|
26288
26319
|
*
|
|
26289
|
-
*
|
|
26290
|
-
*
|
|
26291
|
-
*
|
|
26292
|
-
*
|
|
26293
|
-
*
|
|
26320
|
+
* A provider the device is not bound to is refused by name rather than
|
|
26321
|
+
* answered by another one (D552's `rejectUnresolvedAddonPin` rule).
|
|
26322
|
+
*
|
|
26323
|
+
* It was optional, documented as "absent means the device's BOUND
|
|
26324
|
+
* provider, which is CamStack on every camera". No code implemented
|
|
26325
|
+
* that. Measured on the live hub 2026-09-20 — device 592, bound to
|
|
26326
|
+
* `recorder` AND `provider-reolink` — a bare call with `limit: 3`
|
|
26327
|
+
* answered SIX rows, three from each source, merged newest-first:
|
|
26328
|
+
* `device-collection-dispatch.ts` simply left the fan-out un-narrowed,
|
|
26329
|
+
* so absence bought the union this method exists not to be, and
|
|
26330
|
+
* `limit` meant `limit × sources`.
|
|
26331
|
+
*
|
|
26332
|
+
* There is nothing to restore the default to. `getBindings` answers a
|
|
26333
|
+
* collection cap with a DERIVED, PLURAL set (D554 amended, step 0);
|
|
26334
|
+
* `setWrapperActive` — the singleton authority that could name one —
|
|
26335
|
+
* throws for a collection cap by design. Naming CamStack here instead
|
|
26336
|
+
* would privilege one addon by id inside a surface whose premise is
|
|
26337
|
+
* that sources are peers, and would be wrong on the first camera with
|
|
26338
|
+
* no recorder binding. So absence is REFUSED, in the schema, where the
|
|
26339
|
+
* generated types make it unomittable rather than merely discouraged.
|
|
26340
|
+
*
|
|
26341
|
+
* The default belongs to the SURFACE, which has the `listSources` rows
|
|
26342
|
+
* and can say which one it picked (D569 § 1–3; the viewer already
|
|
26343
|
+
* always sends this).
|
|
26294
26344
|
*
|
|
26295
26345
|
* It replaced `sources?: string[]`, a VIEW filter over source ids that
|
|
26296
26346
|
* assumed the answer was a fan-out over everything a camera has. The
|
|
26297
|
-
* operator settled otherwise on 2026-09-20 — *"
|
|
26298
|
-
*
|
|
26299
|
-
*
|
|
26300
|
-
* at a time and there is nothing to filter out of it.
|
|
26347
|
+
* operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
|
|
26348
|
+
* solo"* — so the list is asked of one provider at a time and there is
|
|
26349
|
+
* nothing to filter out of it.
|
|
26301
26350
|
*/
|
|
26302
|
-
provider: zod.z.string().
|
|
26351
|
+
provider: zod.z.string().min(1)
|
|
26303
26352
|
}), zod.z.array(ClipSchema).readonly(), {
|
|
26304
26353
|
kind: "query",
|
|
26305
26354
|
auth: "protected"
|
|
@@ -43723,6 +43772,12 @@ var METHOD_ACCESS_MAP = Object.freeze({
|
|
|
43723
43772
|
addonId: null,
|
|
43724
43773
|
access: "view"
|
|
43725
43774
|
},
|
|
43775
|
+
"pipelineAnalytics.ownersWithMedia": {
|
|
43776
|
+
capName: "pipeline-analytics",
|
|
43777
|
+
capScope: "device",
|
|
43778
|
+
addonId: null,
|
|
43779
|
+
access: "view"
|
|
43780
|
+
},
|
|
43726
43781
|
"pipelineAnalytics.pauseForStorageMigration": {
|
|
43727
43782
|
capName: "pipeline-analytics",
|
|
43728
43783
|
capScope: "device",
|
|
@@ -47623,6 +47678,11 @@ Object.freeze({
|
|
|
47623
47678
|
form: "single",
|
|
47624
47679
|
optional: false
|
|
47625
47680
|
}],
|
|
47681
|
+
"pipelineAnalytics.ownersWithMedia": [{
|
|
47682
|
+
name: "deviceId",
|
|
47683
|
+
form: "single",
|
|
47684
|
+
optional: false
|
|
47685
|
+
}],
|
|
47626
47686
|
"pipelineAnalytics.proposeRetrainAnnotations": [{
|
|
47627
47687
|
name: "deviceId",
|
|
47628
47688
|
form: "single",
|
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-C6z4MoX5.js");
|
|
4
4
|
const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
|
|
5
5
|
require("./builtins/alerts/index.js");
|
|
6
6
|
const require_formatter = require("./formatter-DqAKDlvN.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 { An as parseJsonUnknown, F as addonSettingsCapability, Fn as EventCategory$1, Gt as scopesAllowDeviceCap, Ht as resolveMethodAuth, It as procedureAuthKey, Mn as resolveCapMount, Mt as objectInputDeclaresAddonId, Nn as scopeKey, Nt as objectInputDeclaresRequiredDeviceId, S as RUNTIME_DEFAULTS, Sn as emitDownForOwnedCaps, Tt as looseSchema, Wt as scopesAllowAddon, _t as isVoidInput, bn as asString$1, bt as lifecycleJobSchema, dn as DEVICE_STATUS_METHOD, dt as isArrayOutputSchema, ft as isCollectionArrayMethod, g as LOG_LEVEL_RANK, gn as ReadinessTimeoutError, hn as ReadinessRegistry, jn as readinessKey, kn as parseJsonObject, ln as DATAPLANE_SECRET_HEADER$1, mt as isObjectInput, on as errMsg$1, st as extractNestedAddonId, t as ALL_CAPABILITY_DEFINITIONS, un as DEVICE_SETTINGS_CONTRIBUTION_METHODS, vn as asJsonObject$1, vt as kebabToCamel, wn as expandCapMethods, wt as logLevelAtMost, xn as createEvent, y as METHOD_ACCESS_MAP, yn as asNumber } from "./dist-
|
|
2
|
+
import { An as parseJsonUnknown, F as addonSettingsCapability, Fn as EventCategory$1, Gt as scopesAllowDeviceCap, Ht as resolveMethodAuth, It as procedureAuthKey, Mn as resolveCapMount, Mt as objectInputDeclaresAddonId, Nn as scopeKey, Nt as objectInputDeclaresRequiredDeviceId, S as RUNTIME_DEFAULTS, Sn as emitDownForOwnedCaps, Tt as looseSchema, Wt as scopesAllowAddon, _t as isVoidInput, bn as asString$1, bt as lifecycleJobSchema, dn as DEVICE_STATUS_METHOD, dt as isArrayOutputSchema, ft as isCollectionArrayMethod, g as LOG_LEVEL_RANK, gn as ReadinessTimeoutError, hn as ReadinessRegistry, jn as readinessKey, kn as parseJsonObject, ln as DATAPLANE_SECRET_HEADER$1, mt as isObjectInput, on as errMsg$1, st as extractNestedAddonId, t as ALL_CAPABILITY_DEFINITIONS, un as DEVICE_SETTINGS_CONTRIBUTION_METHODS, vn as asJsonObject$1, vt as kebabToCamel, wn as expandCapMethods, wt as logLevelAtMost, xn as createEvent, y as METHOD_ACCESS_MAP, yn as asNumber } from "./dist-BLHDOV8o.mjs";
|
|
3
3
|
import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
|
|
4
4
|
import "./builtins/alerts/index.mjs";
|
|
5
5
|
import { t as formatLogLine } from "./formatter-B7qW8bPJ.mjs";
|