@camstack/system 1.2.322 → 1.2.324
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/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/composition-api.d.ts +4 -2
- package/dist/builtins/core-blocks/core-blocks.addon.js +6 -4
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +6 -4
- 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/doorbell-composition-migration.d.ts +1 -13
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +6 -64
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +5 -63
- 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/{composition-sources-CB_xQieM.js → composition-sources-BMyxu0Gs.js} +1 -1
- package/dist/{composition-sources-RzhpNlEu.mjs → composition-sources-C7tZE1JO.mjs} +1 -1
- package/dist/{dist-DENeGKrn.mjs → dist-BjwcGX3O.mjs} +2083 -1474
- package/dist/{dist-D25eq33W.js → dist-DZtw79V-.js} +2100 -1485
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{retired-settings-keys-iFdgpbfM.mjs → retired-settings-keys-B3mGdOSU.mjs} +1 -1
- package/dist/{retired-settings-keys-BH9LRNsg.js → retired-settings-keys-DkLVDf0-.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-DZtw79V-.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 { Kn as errMsg, R as addonPagesCapability, _r as EventCategory, qn as BaseAddon } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { B as addonWidgetsCapability,
|
|
1
|
+
import { B as addonWidgetsCapability, Kn as errMsg, _r as EventCategory, qn as BaseAddon } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { Kn as errMsg, V as alertsCapability, _r as EventCategory, n as AlertSchema, qn as BaseAddon, rr as createEvent } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { Kn as errMsg, W as bareAddonId, _ as FIRST_LEVEL_MACRO_CLASSES, _r as EventCategory, lr as isEvent, qn as BaseAddon, rn as ptzAutotrackCapability } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { Gt as mayWriteToLocation, U as backupCapability, _r as EventCategory, qn as BaseAddon, vn as storageOccupancyCapability } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { Gn as DeviceType, Kn as errMsg, Kt as memoizePinnedFfmpeg, T as MOTION_CLOSE_AFTER_MS, Un as DeviceFeature, Y as cameraGridLayoutCapability, Yt as motionCapability, _r as EventCategory, bn as streamCatalogCapability, h as DeclaredDevices, hn as snapshotCapability, i as BaseDevice, jn as buildFfmpegArgs, m as DERIVED_CAMERA_SILENCED_CAP_NAMES, qn as BaseAddon, rr as createEvent, sr as hydrateSchema, st as declarationOwnerNodeId } from "../../dist-BjwcGX3O.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { FfmpegProcess } from "@camstack/types/node";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -3,9 +3,9 @@ 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-DZtw79V-.js");
|
|
7
7
|
const require_device_state_changed = require("../../device-state-changed-Bk7cvTnz.js");
|
|
8
|
-
const require_composition_sources = require("../../composition-sources-
|
|
8
|
+
const require_composition_sources = require("../../composition-sources-BMyxu0Gs.js");
|
|
9
9
|
//#region src/builtins/composer/composed-device.ts
|
|
10
10
|
/**
|
|
11
11
|
* A composed device: an ordinary `BaseDevice` whose caps are served by the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Fn as
|
|
1
|
+
import { Fn as compositionFeatureEnabled, Gn as DeviceType, Hn as toExpressionValue, In as compositionItemFieldPath, K as buildCapabilityLookup, Kn as errMsg, Ln as compositionSliceKey, Mn as cloneStatefulExpressionMemory, Nn as composedDeviceRef, On as COMPOSER_ADDON_ID, Pn as composedDeviceStableId, Q as compositionFieldKey, Rn as compositionSourceKey, Z as composerCapability, _r as EventCategory, c as COMPOSED_ITEM_FIXED_FIELDS, en as planComposition, h as DeclaredDevices, i as BaseDevice, qn as BaseAddon, rr as createEvent, t as ALL_CAPABILITY_DEFINITIONS, xt as evaluateCompositionField, zn as createStatefulExpressionMemory } from "../../dist-BjwcGX3O.mjs";
|
|
2
2
|
import { n as parseDeviceStateChanged, t as isRecord$2 } from "../../device-state-changed-DoBbkyEI.mjs";
|
|
3
|
-
import { n as normalizedNativeOwner } from "../../composition-sources-
|
|
3
|
+
import { n as normalizedNativeOwner } from "../../composition-sources-C7tZE1JO.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
//#region src/builtins/composer/composed-device.ts
|
|
6
6
|
/**
|
|
@@ -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-DZtw79V-.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 { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-BjwcGX3O.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,4 +1,4 @@
|
|
|
1
|
-
import { CapabilityLookup, CompositionBlockPatch, CompositionBlockState, CompositionSourceRef, CoreBlock, ICoreBlocksProvider, IScopedLogger } from '@camstack/types';
|
|
1
|
+
import { CapabilityDefinition, CapabilityLookup, CompositionBlockPatch, CompositionBlockState, CompositionSourceRef, CoreBlock, ICoreBlocksProvider, IScopedLogger } from '@camstack/types';
|
|
2
2
|
import { NamedCompositionInput } from './core-block-store.js';
|
|
3
3
|
import { CompositionDescriptions } from './composition-sources.js';
|
|
4
4
|
export interface CompositionStoreView {
|
|
@@ -17,8 +17,10 @@ export interface CompositionApiDeps {
|
|
|
17
17
|
readonly composerStates: (blockIds: readonly string[]) => Promise<readonly CompositionBlockState[]>;
|
|
18
18
|
readonly convergeSoon: () => void;
|
|
19
19
|
readonly logger: IScopedLogger;
|
|
20
|
+
/** Every capability definition — the listing is derived from them, never from the registry's live state. */
|
|
21
|
+
readonly capabilityDefinitions: readonly CapabilityDefinition[];
|
|
20
22
|
}
|
|
21
|
-
export type CompositionApi = Pick<ICoreBlocksProvider, 'createComposition' | 'updateComposition' | 'getComposition' | 'listCompositions' | 'validateComposition' | 'getCustomization'>;
|
|
23
|
+
export type CompositionApi = Pick<ICoreBlocksProvider, 'createComposition' | 'updateComposition' | 'getComposition' | 'listCompositions' | 'validateComposition' | 'getCustomization' | 'listComposableCaps'>;
|
|
22
24
|
/**
|
|
23
25
|
* Every write runs validate-then-persist on ONE chain. Validation awaits a
|
|
24
26
|
* source read before the save lands; two unserialized saves (A reads B, B
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("../../dist-
|
|
4
|
-
const require_composition_sources = require("../../composition-sources-
|
|
3
|
+
const require_dist = require("../../dist-DZtw79V-.js");
|
|
4
|
+
const require_composition_sources = require("../../composition-sources-BMyxu0Gs.js");
|
|
5
5
|
let node_crypto = require("node:crypto");
|
|
6
6
|
let _camstack_types_node = require("@camstack/types/node");
|
|
7
7
|
let node_fs_promises = require("node:fs/promises");
|
|
@@ -1407,7 +1407,8 @@ function buildCompositionApi(deps) {
|
|
|
1407
1407
|
}
|
|
1408
1408
|
};
|
|
1409
1409
|
},
|
|
1410
|
-
validateComposition: async ({ composition, blockId }) => validateAgainstStore(deps, composition, blockId ?? null)
|
|
1410
|
+
validateComposition: async ({ composition, blockId }) => validateAgainstStore(deps, composition, blockId ?? null),
|
|
1411
|
+
listComposableCaps: async ({ deviceType }) => ({ caps: [...require_dist.describeComposableCaps(deps.capabilityDefinitions, deviceType)] })
|
|
1411
1412
|
};
|
|
1412
1413
|
}
|
|
1413
1414
|
//#endregion
|
|
@@ -1705,7 +1706,8 @@ var CoreBlocksAddon = class extends require_dist.BaseAddon {
|
|
|
1705
1706
|
lookupCap: require_dist.buildCapabilityLookup(require_dist.ALL_CAPABILITY_DEFINITIONS),
|
|
1706
1707
|
composerStates: async (blockIds) => (await requireApi().composer.getStates.query({ blockIds: [...blockIds] })).states,
|
|
1707
1708
|
convergeSoon: () => this.convergeSoon(),
|
|
1708
|
-
logger: this.ctx.logger.child("compositions")
|
|
1709
|
+
logger: this.ctx.logger.child("compositions"),
|
|
1710
|
+
capabilityDefinitions: require_dist.ALL_CAPABILITY_DEFINITIONS
|
|
1709
1711
|
});
|
|
1710
1712
|
}
|
|
1711
1713
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import { t as describeCompositionSources } from "../../composition-sources-
|
|
1
|
+
import { $ as compositionSourceRefs, Cn as validateComposition, K as buildCapabilityLookup, Kn as errMsg, Nn as composedDeviceRef, Rn as compositionSourceKey, an as replacedFieldKeys, d as CORE_BLOCK_ADDON_PREFIX, dt as describeComposableCaps, en as planComposition, et as coreBlockAddonId, f as CoreBlockSchema, h as DeclaredDevices, it as coreBlocksCapability, l as COMPOSER_RUNNER_ID, nt as coreBlockIdFromAddonId, qn as BaseAddon, rt as coreBlockSourceKind, t as ALL_CAPABILITY_DEFINITIONS, tt as coreBlockComposition, u as CORE_BLOCKS_ADDON_ID } from "../../dist-BjwcGX3O.mjs";
|
|
2
|
+
import { t as describeCompositionSources } from "../../composition-sources-C7tZE1JO.mjs";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { customizationBlockName } from "@camstack/types/node";
|
|
5
5
|
import * as fs from "node:fs/promises";
|
|
@@ -1403,7 +1403,8 @@ function buildCompositionApi(deps) {
|
|
|
1403
1403
|
}
|
|
1404
1404
|
};
|
|
1405
1405
|
},
|
|
1406
|
-
validateComposition: async ({ composition, blockId }) => validateAgainstStore(deps, composition, blockId ?? null)
|
|
1406
|
+
validateComposition: async ({ composition, blockId }) => validateAgainstStore(deps, composition, blockId ?? null),
|
|
1407
|
+
listComposableCaps: async ({ deviceType }) => ({ caps: [...describeComposableCaps(deps.capabilityDefinitions, deviceType)] })
|
|
1407
1408
|
};
|
|
1408
1409
|
}
|
|
1409
1410
|
//#endregion
|
|
@@ -1701,7 +1702,8 @@ var CoreBlocksAddon = class extends BaseAddon {
|
|
|
1701
1702
|
lookupCap: buildCapabilityLookup(ALL_CAPABILITY_DEFINITIONS),
|
|
1702
1703
|
composerStates: async (blockIds) => (await requireApi().composer.getStates.query({ blockIds: [...blockIds] })).states,
|
|
1703
1704
|
convergeSoon: () => this.convergeSoon(),
|
|
1704
|
-
logger: this.ctx.logger.child("compositions")
|
|
1705
|
+
logger: this.ctx.logger.child("compositions"),
|
|
1706
|
+
capabilityDefinitions: ALL_CAPABILITY_DEFINITIONS
|
|
1705
1707
|
});
|
|
1706
1708
|
}
|
|
1707
1709
|
};
|
|
@@ -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-DZtw79V-.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-DkLVDf0-.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
10
10
|
let _camstack_types_node = require("@camstack/types/node");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-
|
|
1
|
+
import { $n as WELL_KNOWN_TAB_MAP, $t as parseStreamParamsFormPatch, Bt as locationIconKey, Ct as expandContainer, Dt as formatMinutes, Gn as DeviceType, It as legacyAutoLinkIds, J as buildStreamParamsConfigSchema, Kn as errMsg, S as LocationIconIdSchema, Un as DeviceFeature, Wn as DeviceRole, Xt as normalizeUnit, _r as EventCategory, at as createDeviceExtensionProvider, bt as enumerateSchemaFields, cr as isDeviceConfigCap, ft as deviceExtensionCapability, g as DeviceStatusSchema, gr as sleep$1, ht as deviceStatusCapability, j as STREAM_PROFILE_META, ln as runtimeStatePolicyFor, lt as defineExtensionSlotProvider, mn as siteZoneKey, mt as deviceStateCapability, o as CAMERA_SWITCH_ORDER, p as DAY_NAMES, pt as deviceManagerCapability, qn as BaseAddon, s as CAP_NAMES_WITH_STATUS, t as ALL_CAPABILITY_DEFINITIONS, v as FieldClaimModeSchema, w as MINUTES_PER_DAY, y as FieldClaimSchema, yt as enumerateItemArrayFields } from "../../dist-BjwcGX3O.mjs";
|
|
2
|
+
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-B3mGdOSU.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { canonicalDeviceFingerprint } from "@camstack/types/node";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DeviceType, ICoreBlocksProvider, IScopedLogger } from '@camstack/types';
|
|
2
2
|
import { BindingEntryView } from './binding-mirror.js';
|
|
3
3
|
import { DoorbellSource } from './doorbell-settings.js';
|
|
4
4
|
export declare const DOORBELL_COMPOSITION_MIGRATION_STATE_KEY = "doorbell-source-composition-migration-v1";
|
|
@@ -32,17 +32,6 @@ export interface DoorbellCompositionMigrationDeps {
|
|
|
32
32
|
readonly isComplete: () => Promise<boolean>;
|
|
33
33
|
readonly markComplete: () => Promise<void>;
|
|
34
34
|
}
|
|
35
|
-
interface DoorbellFeatureSource {
|
|
36
|
-
readonly source: CompositionSourceRef;
|
|
37
|
-
readonly cap: string;
|
|
38
|
-
readonly activeField: string;
|
|
39
|
-
readonly changedAtField: string;
|
|
40
|
-
}
|
|
41
|
-
export declare function buildDoorbellCompositionFeature(input: {
|
|
42
|
-
readonly camera: CompositionSourceRef;
|
|
43
|
-
readonly sources: readonly DoorbellFeatureSource[];
|
|
44
|
-
readonly enabled: boolean;
|
|
45
|
-
}): CompositionFieldsFeature;
|
|
46
35
|
export declare class DoorbellCompositionMigration {
|
|
47
36
|
private readonly deps;
|
|
48
37
|
private rerunRequested;
|
|
@@ -56,4 +45,3 @@ export declare class DoorbellCompositionMigration {
|
|
|
56
45
|
private runAttempt;
|
|
57
46
|
private warnCamera;
|
|
58
47
|
}
|
|
59
|
-
export {};
|
|
@@ -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-DZtw79V-.js");
|
|
7
7
|
const require_device_state_changed = require("../../device-state-changed-Bk7cvTnz.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
//#region src/builtins/doorbell/trigger-engine.ts
|
|
@@ -612,50 +612,6 @@ var DOORBELL_COMPOSITION_MIGRATION_CALLER = {
|
|
|
612
612
|
userId: "system:doorbell-source-migration",
|
|
613
613
|
isAdmin: true
|
|
614
614
|
};
|
|
615
|
-
function buildDoorbellCompositionFeature(input) {
|
|
616
|
-
const sources = [...input.sources].toSorted((a, b) => `${a.source.addonId}/${a.source.stableId}#${a.cap}`.localeCompare(`${b.source.addonId}/${b.source.stableId}#${b.cap}`));
|
|
617
|
-
if (sources.length === 0) throw new Error("doorbell composition needs at least one source");
|
|
618
|
-
const edgeBindings = {};
|
|
619
|
-
sources.forEach((entry, index) => {
|
|
620
|
-
edgeBindings[`active${index}`] = {
|
|
621
|
-
kind: "from",
|
|
622
|
-
source: entry.source,
|
|
623
|
-
cap: entry.cap,
|
|
624
|
-
fieldPath: entry.activeField
|
|
625
|
-
};
|
|
626
|
-
edgeBindings[`changed${index}`] = {
|
|
627
|
-
kind: "from",
|
|
628
|
-
source: entry.source,
|
|
629
|
-
cap: entry.cap,
|
|
630
|
-
fieldPath: entry.changedAtField
|
|
631
|
-
};
|
|
632
|
-
});
|
|
633
|
-
return {
|
|
634
|
-
kind: "fields",
|
|
635
|
-
cap: "doorbell",
|
|
636
|
-
enabled: input.enabled,
|
|
637
|
-
fields: {
|
|
638
|
-
lastPressedAt: {
|
|
639
|
-
kind: "expression",
|
|
640
|
-
expr: `latest(${sources.map((_, index) => `rose(active${index}, changed${index}, 2000)`).join(", ")})`,
|
|
641
|
-
bindings: edgeBindings
|
|
642
|
-
},
|
|
643
|
-
pressCountSinceStart: {
|
|
644
|
-
kind: "expression",
|
|
645
|
-
expr: "count(lastPressedAt)",
|
|
646
|
-
bindings: { lastPressedAt: {
|
|
647
|
-
kind: "from",
|
|
648
|
-
source: {
|
|
649
|
-
addonId: input.camera.addonId,
|
|
650
|
-
stableId: input.camera.stableId
|
|
651
|
-
},
|
|
652
|
-
cap: "doorbell",
|
|
653
|
-
fieldPath: "lastPressedAt"
|
|
654
|
-
} }
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
};
|
|
658
|
-
}
|
|
659
615
|
function isRecord(value) {
|
|
660
616
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
661
617
|
}
|
|
@@ -671,32 +627,18 @@ function withoutEnabled(feature) {
|
|
|
671
627
|
const { enabled: _enabled, ...rest } = feature;
|
|
672
628
|
return rest;
|
|
673
629
|
}
|
|
674
|
-
function bindingHasCap(entries, cap) {
|
|
675
|
-
return entries.some((entry) => entry.capName === cap);
|
|
676
|
-
}
|
|
677
630
|
function migrationSources(camera, configured, devicesById, bindingsById) {
|
|
678
631
|
const sources = [];
|
|
679
632
|
for (const configuredSource of configured) {
|
|
680
633
|
const device = devicesById.get(configuredSource.deviceId);
|
|
681
634
|
const entries = bindingsById.get(configuredSource.deviceId);
|
|
682
635
|
if (device === void 0 || entries === void 0) throw new Error(`source device ${configuredSource.deviceId} could not be resolved and read`);
|
|
683
|
-
const
|
|
636
|
+
const found = require_dist.doorbellFeatureSources({
|
|
684
637
|
addonId: device.addonId,
|
|
685
638
|
stableId: device.stableId
|
|
686
|
-
};
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
for (const cap of supportedCaps) {
|
|
690
|
-
const activeField = require_dist.SOURCE_CAP_ACTIVE_FIELD[cap];
|
|
691
|
-
const changedAtField = require_dist.SOURCE_CAP_CHANGED_AT_FIELD[cap];
|
|
692
|
-
if (activeField === void 0 || changedAtField === void 0) throw new Error(`source capability ${cap} has no transition field mapping`);
|
|
693
|
-
sources.push({
|
|
694
|
-
source: ref,
|
|
695
|
-
cap,
|
|
696
|
-
activeField,
|
|
697
|
-
changedAtField
|
|
698
|
-
});
|
|
699
|
-
}
|
|
639
|
+
}, entries.map((entry) => entry.capName));
|
|
640
|
+
if (found.length === 0) throw new Error(`source device ${configuredSource.deviceId} has no supported source capability`);
|
|
641
|
+
sources.push(...found);
|
|
700
642
|
}
|
|
701
643
|
if (sources.length === 0) throw new Error(`camera ${camera.id} has no resolvable doorbell sources`);
|
|
702
644
|
return sources;
|
|
@@ -803,7 +745,7 @@ var DoorbellCompositionMigration = class {
|
|
|
803
745
|
const composerBound = composerIsBound(entries);
|
|
804
746
|
const crashRecovery = !wrapperActive && composerBound && existingDoorbell?.kind === "fields" && existingDoorbell.enabled === true;
|
|
805
747
|
const enabled = wrapperActive || crashRecovery;
|
|
806
|
-
const canonical = buildDoorbellCompositionFeature({
|
|
748
|
+
const canonical = require_dist.buildDoorbellCompositionFeature({
|
|
807
749
|
camera: cameraRef,
|
|
808
750
|
sources,
|
|
809
751
|
enabled
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { An as SOURCE_CAPS, Bn as evaluateSensorEdge, Gn as DeviceType, Kn as errMsg, Nt as isSameAddonId, Vn as isSourceCap, W as bareAddonId, _r as EventCategory, _t as doorbellFeatureSources, at as createDeviceExtensionProvider, ft as deviceExtensionCapability, gt as doorbellCapability, lt as defineExtensionSlotProvider, q as buildDoorbellCompositionFeature, qn as BaseAddon, rr as createEvent } from "../../dist-BjwcGX3O.mjs";
|
|
2
2
|
import { n as parseDeviceStateChanged } from "../../device-state-changed-DoBbkyEI.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/builtins/doorbell/trigger-engine.ts
|
|
@@ -607,50 +607,6 @@ var DOORBELL_COMPOSITION_MIGRATION_CALLER = {
|
|
|
607
607
|
userId: "system:doorbell-source-migration",
|
|
608
608
|
isAdmin: true
|
|
609
609
|
};
|
|
610
|
-
function buildDoorbellCompositionFeature(input) {
|
|
611
|
-
const sources = [...input.sources].toSorted((a, b) => `${a.source.addonId}/${a.source.stableId}#${a.cap}`.localeCompare(`${b.source.addonId}/${b.source.stableId}#${b.cap}`));
|
|
612
|
-
if (sources.length === 0) throw new Error("doorbell composition needs at least one source");
|
|
613
|
-
const edgeBindings = {};
|
|
614
|
-
sources.forEach((entry, index) => {
|
|
615
|
-
edgeBindings[`active${index}`] = {
|
|
616
|
-
kind: "from",
|
|
617
|
-
source: entry.source,
|
|
618
|
-
cap: entry.cap,
|
|
619
|
-
fieldPath: entry.activeField
|
|
620
|
-
};
|
|
621
|
-
edgeBindings[`changed${index}`] = {
|
|
622
|
-
kind: "from",
|
|
623
|
-
source: entry.source,
|
|
624
|
-
cap: entry.cap,
|
|
625
|
-
fieldPath: entry.changedAtField
|
|
626
|
-
};
|
|
627
|
-
});
|
|
628
|
-
return {
|
|
629
|
-
kind: "fields",
|
|
630
|
-
cap: "doorbell",
|
|
631
|
-
enabled: input.enabled,
|
|
632
|
-
fields: {
|
|
633
|
-
lastPressedAt: {
|
|
634
|
-
kind: "expression",
|
|
635
|
-
expr: `latest(${sources.map((_, index) => `rose(active${index}, changed${index}, 2000)`).join(", ")})`,
|
|
636
|
-
bindings: edgeBindings
|
|
637
|
-
},
|
|
638
|
-
pressCountSinceStart: {
|
|
639
|
-
kind: "expression",
|
|
640
|
-
expr: "count(lastPressedAt)",
|
|
641
|
-
bindings: { lastPressedAt: {
|
|
642
|
-
kind: "from",
|
|
643
|
-
source: {
|
|
644
|
-
addonId: input.camera.addonId,
|
|
645
|
-
stableId: input.camera.stableId
|
|
646
|
-
},
|
|
647
|
-
cap: "doorbell",
|
|
648
|
-
fieldPath: "lastPressedAt"
|
|
649
|
-
} }
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
};
|
|
653
|
-
}
|
|
654
610
|
function isRecord(value) {
|
|
655
611
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
656
612
|
}
|
|
@@ -666,32 +622,18 @@ function withoutEnabled(feature) {
|
|
|
666
622
|
const { enabled: _enabled, ...rest } = feature;
|
|
667
623
|
return rest;
|
|
668
624
|
}
|
|
669
|
-
function bindingHasCap(entries, cap) {
|
|
670
|
-
return entries.some((entry) => entry.capName === cap);
|
|
671
|
-
}
|
|
672
625
|
function migrationSources(camera, configured, devicesById, bindingsById) {
|
|
673
626
|
const sources = [];
|
|
674
627
|
for (const configuredSource of configured) {
|
|
675
628
|
const device = devicesById.get(configuredSource.deviceId);
|
|
676
629
|
const entries = bindingsById.get(configuredSource.deviceId);
|
|
677
630
|
if (device === void 0 || entries === void 0) throw new Error(`source device ${configuredSource.deviceId} could not be resolved and read`);
|
|
678
|
-
const
|
|
631
|
+
const found = doorbellFeatureSources({
|
|
679
632
|
addonId: device.addonId,
|
|
680
633
|
stableId: device.stableId
|
|
681
|
-
};
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
for (const cap of supportedCaps) {
|
|
685
|
-
const activeField = SOURCE_CAP_ACTIVE_FIELD[cap];
|
|
686
|
-
const changedAtField = SOURCE_CAP_CHANGED_AT_FIELD[cap];
|
|
687
|
-
if (activeField === void 0 || changedAtField === void 0) throw new Error(`source capability ${cap} has no transition field mapping`);
|
|
688
|
-
sources.push({
|
|
689
|
-
source: ref,
|
|
690
|
-
cap,
|
|
691
|
-
activeField,
|
|
692
|
-
changedAtField
|
|
693
|
-
});
|
|
694
|
-
}
|
|
634
|
+
}, entries.map((entry) => entry.capName));
|
|
635
|
+
if (found.length === 0) throw new Error(`source device ${configuredSource.deviceId} has no supported source capability`);
|
|
636
|
+
sources.push(...found);
|
|
695
637
|
}
|
|
696
638
|
if (sources.length === 0) throw new Error(`camera ${camera.id} has no resolvable doorbell sources`);
|
|
697
639
|
return sources;
|
|
@@ -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-DZtw79V-.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 { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { E as RECORDING_SOURCE_CAMSTACK_ADDON,
|
|
1
|
+
import { E as RECORDING_SOURCE_CAMSTACK_ADDON, Kn as errMsg, _r as EventCategory, k as RecordingStatusSchema, qn as BaseAddon, rr as createEvent } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { H as authProviderCapability,
|
|
2
|
+
import { H as authProviderCapability, L as UserRecordSchema, M as ScopedTokenSchema, Sn as userManagementCapability, qn as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { _r as EventCategory, qn as BaseAddon, zt as localNetworkCapability } from "../../dist-BjwcGX3O.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-DZtw79V-.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 { Vt as logDestinationCapability, qn as BaseAddon } from "../../dist-BjwcGX3O.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-DZtw79V-.js");
|
|
7
7
|
const require_proc_stat = require("../../proc-stat-DL-WUOhl.js");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Et as foldSnapshotByFunction, Kn as errMsg, _r as EventCategory, in as reducePoints, on as resolveBucketMs, qn as BaseAddon, qt as metricsProviderCapability, rr as createEvent } from "../../dist-BjwcGX3O.mjs";
|
|
2
2
|
import { a as parseProcStat, i as nodeProcReader, n as elapsedSecSince, o as parseProcStatusRss, r as lifetimeCpuPercent, t as commandFromCmdline } from "../../proc-stat-CbC55Kqi.mjs";
|
|
3
3
|
import { access, readFile, readdir } from "node:fs/promises";
|
|
4
4
|
import * as fs 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-DZtw79V-.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 { Kn as errMsg, _r as EventCategory, ar as emitReadiness, fn as scoreRuntimes, qn as BaseAddon, tn as platformProbeCapability, vt as enumerateInferenceDevices } from "../../dist-BjwcGX3O.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";
|