@camstack/system 1.2.375 → 1.2.376
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon-runner.js +1 -1
- package/dist/addon-runner.mjs +1 -1
- package/dist/addon-utils.js +1 -1
- package/dist/addon-utils.mjs +1 -1
- package/dist/auth/external-identity-manager.d.ts +43 -0
- 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/calendars/calendars.addon.js +1 -1
- package/dist/builtins/calendars/calendars.addon.mjs +1 -1
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- package/dist/builtins/device-manager/device-manager.addon.d.ts +2 -0
- package/dist/builtins/device-manager/device-manager.addon.js +36 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +36 -2
- package/dist/builtins/device-manager/device-projection.d.ts +2 -1
- package/dist/builtins/device-manager/device-provider-context.d.ts +3 -0
- package/dist/builtins/device-manager/secret-config-paths.d.ts +24 -0
- 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/auth-schema.d.ts +14 -0
- package/dist/builtins/local-auth/local-auth.addon.d.ts +1 -0
- package/dist/builtins/local-auth/local-auth.addon.js +1343 -1131
- package/dist/builtins/local-auth/local-auth.addon.mjs +1343 -1131
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{child-cap-dispatch-B9kziY4L.mjs → child-cap-dispatch-8qMgog1O.mjs} +16 -4
- package/dist/{child-cap-dispatch-Bfdgkbq3.js → child-cap-dispatch-BWtaSmWf.js} +15 -3
- package/dist/{composition-sources-DYlXX2qW.js → composition-sources-DW7CgMsg.js} +1 -1
- package/dist/{composition-sources-BfZgiTYD.mjs → composition-sources-zxQPPtP_.mjs} +1 -1
- package/dist/{dist-CNbnikIh.js → dist-BcUWQGr9.js} +268 -6
- package/dist/{dist-ZdSg09GJ.mjs → dist-D732NygW.mjs} +263 -7
- package/dist/{event-loop-stall-monitor-DKcYBHdH.mjs → event-loop-stall-monitor-8W4yWNVW.mjs} +1 -1
- package/dist/{event-loop-stall-monitor-CpEH3CoV.js → event-loop-stall-monitor-QX4RjNe7.js} +1 -1
- package/dist/index.js +3 -3
- package/dist/index.mjs +3 -3
- package/dist/{retired-settings-keys-B4ZeKrbR.mjs → retired-settings-keys-CxPOg7BF.mjs} +1 -1
- package/dist/{retired-settings-keys-CcWvdy6u.js → retired-settings-keys-MaESpO18.js} +1 -1
- package/package.json +1 -1
package/dist/addon-runner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_chunk = require("./chunk-Cek0wNdY.js");
|
|
2
|
-
const require_child_cap_dispatch = require("./child-cap-dispatch-
|
|
2
|
+
const require_child_cap_dispatch = require("./child-cap-dispatch-BWtaSmWf.js");
|
|
3
3
|
const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
|
|
4
4
|
let node_path = require("node:path");
|
|
5
5
|
node_path = require_chunk.__toESM(node_path);
|
package/dist/addon-runner.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $t as RUNNER_RSS_BUDGET_ENV, Ft as resolveAddonClass, H as createUdsLoggerWithControl, Pt as installManifestNativeDeps, U as LocalChildClient, _t as getWorkerNativeCapSnapshot, f as installManifestSystemDeps, fn as startRunnerHeapWatch, g as createUdsAddonContext, gt as getWorkerNativeCapProvider, i as killOwnRunnerGroupAfterParentLoss, n as createChildCapDispatch, p as installManifestPythonDeps, u as startRunnerParentDeathWatchdog, wn as emitHeapDiagnosticReport, xt as validateProviderRegistrations, yt as setWorkerNativeCapsChangeListener } from "./child-cap-dispatch-
|
|
1
|
+
import { $t as RUNNER_RSS_BUDGET_ENV, Ft as resolveAddonClass, H as createUdsLoggerWithControl, Pt as installManifestNativeDeps, U as LocalChildClient, _t as getWorkerNativeCapSnapshot, f as installManifestSystemDeps, fn as startRunnerHeapWatch, g as createUdsAddonContext, gt as getWorkerNativeCapProvider, i as killOwnRunnerGroupAfterParentLoss, n as createChildCapDispatch, p as installManifestPythonDeps, u as startRunnerParentDeathWatchdog, wn as emitHeapDiagnosticReport, xt as validateProviderRegistrations, yt as setWorkerNativeCapsChangeListener } from "./child-cap-dispatch-8qMgog1O.mjs";
|
|
2
2
|
import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
|
|
3
3
|
import { register } from "node:module";
|
|
4
4
|
import * as path$1 from "node:path";
|
package/dist/addon-utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("./chunk-Cek0wNdY.js");
|
|
3
|
-
const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-
|
|
3
|
+
const require_event_loop_stall_monitor = require("./event-loop-stall-monitor-QX4RjNe7.js");
|
|
4
4
|
const require_custom_action_registry = require("./custom-action-registry-acBY3mHA.js");
|
|
5
5
|
const require_snapshot_courtesy = require("./snapshot-courtesy-D_C5-nC0.js");
|
|
6
6
|
exports.COURTESY_DEFAULT_WIDTH = require_snapshot_courtesy.COURTESY_DEFAULT_WIDTH;
|
package/dist/addon-utils.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as resolveFormatRevision, S as isModelDownloaded, a as createFileDataPlaneHandler, b as getModelFilePath, c as parseRangeHeader, d as ModelDownloadService, f as ModelDownloadHttpError, g as downloadFile, h as deleteModelFromDisk, i as startEventLoopStallMonitor, m as collectModelFiles, n as STALL_TICK_MS, o as contentTypeFor, p as adoptModelRevisions, r as attributeStall, t as STALL_REPORT_MS, v as ensureModel, x as isModelDownloadHttpError } from "./event-loop-stall-monitor-
|
|
1
|
+
import { C as resolveFormatRevision, S as isModelDownloaded, a as createFileDataPlaneHandler, b as getModelFilePath, c as parseRangeHeader, d as ModelDownloadService, f as ModelDownloadHttpError, g as downloadFile, h as deleteModelFromDisk, i as startEventLoopStallMonitor, m as collectModelFiles, n as STALL_TICK_MS, o as contentTypeFor, p as adoptModelRevisions, r as attributeStall, t as STALL_REPORT_MS, v as ensureModel, x as isModelDownloadHttpError } from "./event-loop-stall-monitor-8W4yWNVW.mjs";
|
|
2
2
|
import { t as CustomActionRegistry } from "./custom-action-registry-B4Cf4O_X.mjs";
|
|
3
3
|
import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg, t as COURTESY_DEFAULT_WIDTH } from "./snapshot-courtesy-CyFs1M3I.mjs";
|
|
4
4
|
export { COURTESY_DEFAULT_WIDTH, CustomActionRegistry, ModelDownloadHttpError, ModelDownloadService, STALL_REPORT_MS, STALL_TICK_MS, adoptModelRevisions, attributeStall, collectModelFiles, contentTypeFor, courtesyCacheKey, createFileDataPlaneHandler, deleteModelFromDisk, downloadFile, ensureModel, getModelFilePath, isModelDownloadHttpError, isModelDownloaded, parseRangeHeader, renderCourtesyJpeg, renderCourtesyOverlayJpeg, resolveFormatRevision, startEventLoopStallMonitor };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SettingsStoreClient } from '@camstack/types';
|
|
2
|
+
export interface ExternalIdentityRecord {
|
|
3
|
+
readonly provider: string;
|
|
4
|
+
readonly subject: string;
|
|
5
|
+
/** Verified `iss` the identity was linked under. */
|
|
6
|
+
readonly issuer: string;
|
|
7
|
+
readonly userId: string;
|
|
8
|
+
readonly label?: string;
|
|
9
|
+
readonly linkedAt: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ExternalIdentityKey {
|
|
12
|
+
readonly provider: string;
|
|
13
|
+
readonly subject: string;
|
|
14
|
+
}
|
|
15
|
+
/** The identity is already linked to a different user. */
|
|
16
|
+
export declare class ExternalIdentityConflictError extends Error {
|
|
17
|
+
constructor();
|
|
18
|
+
}
|
|
19
|
+
export declare class ExternalIdentityManager {
|
|
20
|
+
private readonly store;
|
|
21
|
+
constructor(store: SettingsStoreClient);
|
|
22
|
+
private find;
|
|
23
|
+
/** The link of `(provider, subject)`, or `null`. */
|
|
24
|
+
findLink(provider: string, subject: string): Promise<ExternalIdentityRecord | null>;
|
|
25
|
+
/** The user `(provider, subject)` is linked to, or `null`. */
|
|
26
|
+
findUser(provider: string, subject: string): Promise<string | null>;
|
|
27
|
+
listForUser(userId: string): Promise<readonly ExternalIdentityRecord[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Link `(provider, subject)` to `userId`. Idempotent for the same user;
|
|
30
|
+
* {@link ExternalIdentityConflictError} when another user holds it.
|
|
31
|
+
*/
|
|
32
|
+
link(input: ExternalIdentityKey & {
|
|
33
|
+
userId: string;
|
|
34
|
+
issuer: string;
|
|
35
|
+
label?: string;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
/** Remove one link of `userId`; `false` when that user did not hold it. */
|
|
38
|
+
unlink(input: ExternalIdentityKey & {
|
|
39
|
+
userId: string;
|
|
40
|
+
}): Promise<boolean>;
|
|
41
|
+
/** Delete every link of a user being deleted. Returns how many were removed. */
|
|
42
|
+
removeAllForUser(userId: string): Promise<number>;
|
|
43
|
+
}
|
|
@@ -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-BcUWQGr9.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 { G as addonPagesCapability,
|
|
1
|
+
import { G as addonPagesCapability, Pr as EventCategory, cr as BaseAddon, sr as errMsg } from "../../dist-D732NygW.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-BcUWQGr9.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 { Pr as EventCategory, cr as BaseAddon, q as addonWidgetsCapability, sr as errMsg } from "../../dist-D732NygW.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-BcUWQGr9.js");
|
|
7
7
|
//#region src/builtins/alerts/device-label.ts
|
|
8
8
|
/**
|
|
9
9
|
* Operator-facing device label for alert messages.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { J as alertsCapability,
|
|
1
|
+
import { J as alertsCapability, Pr as EventCategory, cr as BaseAddon, n as AlertSchema, sr as errMsg, yr as createEvent } from "../../dist-D732NygW.mjs";
|
|
2
2
|
//#region src/builtins/alerts/device-label.ts
|
|
3
3
|
/**
|
|
4
4
|
* Operator-facing device label for alert messages.
|
|
@@ -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-BcUWQGr9.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 { Pr as EventCategory, S as FIRST_LEVEL_MACRO_CLASSES, Tr as isEvent, Z as bareAddonId, cr as BaseAddon, hn as ptzAutotrackCapability, sr as errMsg } from "../../dist-D732NygW.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-BcUWQGr9.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 { Er as nodePin, Fn as storageOccupancyCapability, Nr as toNodeId, Pr as EventCategory, X as backupCapability, cr as BaseAddon, g as DATABASE_SNAPSHOT_SUFFIX, tn as mayWriteToLocation } from "../../dist-D732NygW.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-BcUWQGr9.js");
|
|
7
7
|
const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
//#region src/builtins/calendars/calendar-color.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cr as BaseAddon, p as CalendarPreferencesSchema, tt as calendarsCapability } from "../../dist-
|
|
1
|
+
import { cr as BaseAddon, p as CalendarPreferencesSchema, tt as calendarsCapability } from "../../dist-D732NygW.mjs";
|
|
2
2
|
import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/builtins/calendars/calendar-color.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-BcUWQGr9.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 { Ln as streamCatalogCapability, M as MOTION_CLOSE_AFTER_MS, Mn as snapshotCapability,
|
|
1
|
+
import { Cr as hydrateSchema, Ln as streamCatalogCapability, M as MOTION_CLOSE_AFTER_MS, Mn as snapshotCapability, Pr as EventCategory, an as motionCapability, b as DeclaredDevices, cr as BaseAddon, gt as declarationOwnerNodeId, i as BaseDevice, ir as DeviceFeature, nn as memoizePinnedFfmpeg, nt as cameraGridLayoutCapability, or as DeviceType, qn as buildFfmpegArgs, sr as errMsg, y as DERIVED_CAMERA_SILENCED_CAP_NAMES, yr as createEvent } from "../../dist-D732NygW.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { FfmpegProcess } from "@camstack/types/node";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
7
|
-
const require_composition_sources = require("../../composition-sources-
|
|
6
|
+
const require_dist = require("../../dist-BcUWQGr9.js");
|
|
7
|
+
const require_composition_sources = require("../../composition-sources-DW7CgMsg.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
//#region src/builtins/shared/device-state-changed.ts
|
|
10
10
|
/** Structural narrowing helper for untrusted bus payloads. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as buildCapabilityLookup, $n as compositionSliceKey, Jn as cloneStatefulExpressionMemory, Kn as COMPOSER_ADDON_ID,
|
|
2
|
-
import { n as normalizedNativeOwner } from "../../composition-sources-
|
|
1
|
+
import { $ as buildCapabilityLookup, $n as compositionSliceKey, Jn as cloneStatefulExpressionMemory, Kn as COMPOSER_ADDON_ID, Ot as evaluateCompositionField, Pr as EventCategory, Qn as compositionItemFieldPath, Xn as composedDeviceStableId, Yn as composedDeviceRef, Zn as compositionFeatureEnabled, at as composerCapability, b as DeclaredDevices, cr as BaseAddon, er as compositionSourceKey, fn as planComposition, i as BaseDevice, jt as expressionContainsBuiltinCall, l as COMPOSED_ITEM_FIXED_FIELDS, nr as disarmRoseMemory, or as DeviceType, ot as compositionFieldKey, rr as toExpressionValue, sr as errMsg, t as ALL_CAPABILITY_DEFINITIONS, tr as createStatefulExpressionMemory, yr as createEvent } from "../../dist-D732NygW.mjs";
|
|
2
|
+
import { n as normalizedNativeOwner } from "../../composition-sources-zxQPPtP_.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/builtins/shared/device-state-changed.ts
|
|
5
5
|
/** Structural narrowing helper for untrusted bus payloads. */
|
|
@@ -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-BcUWQGr9.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 { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-
|
|
1
|
+
import { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-D732NygW.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,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-BcUWQGr9.js");
|
|
4
|
+
const require_composition_sources = require("../../composition-sources-DW7CgMsg.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");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as buildCapabilityLookup, Bn as validateComposition,
|
|
2
|
-
import { t as describeCompositionSources } from "../../composition-sources-
|
|
1
|
+
import { $ as buildCapabilityLookup, Bn as validateComposition, Cr as hydrateSchema, Yn as composedDeviceRef, _n as replacedFieldKeys, b as DeclaredDevices, bn as resolveCoreBlockEntry, bt as describeComposableCaps, cr as BaseAddon, ct as coreBlockAddonId, d as CORE_BLOCKS_ADDON_ID, dt as coreBlockSourceKind, er as compositionSourceKey, f as CORE_BLOCK_ADDON_PREFIX, fn as planComposition, ft as coreBlocksCapability, lt as coreBlockComposition, m as CoreBlockSchema, on as normalizeCoreBlockWrite, sr as errMsg, st as compositionSourceRefs, t as ALL_CAPABILITY_DEFINITIONS, u as COMPOSER_RUNNER_ID, ut as coreBlockIdFromAddonId, xn as resolveCoreBlockFiles } from "../../dist-D732NygW.mjs";
|
|
2
|
+
import { t as describeCompositionSources } from "../../composition-sources-zxQPPtP_.mjs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { customizationBlockName } from "@camstack/types/node";
|
|
@@ -69,6 +69,8 @@ export declare class DeviceManagerAddon extends BaseAddon {
|
|
|
69
69
|
* `allocateDeviceId` never consults.
|
|
70
70
|
*/
|
|
71
71
|
private readonly removalFence;
|
|
72
|
+
/** Declared secret config paths per device, as last registered (D783). */
|
|
73
|
+
private readonly secretConfigPaths;
|
|
72
74
|
/** The runtime-state mirror, asserted present (constructed in onInitialize). */
|
|
73
75
|
private get stateMirror();
|
|
74
76
|
/**
|
|
@@ -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-BcUWQGr9.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-MaESpO18.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");
|
|
@@ -396,6 +396,13 @@ function isDeviceRole(value) {
|
|
|
396
396
|
function toDeviceRole(value) {
|
|
397
397
|
return value != null && isDeviceRole(value) ? value : null;
|
|
398
398
|
}
|
|
399
|
+
/** The secret paths a live device's config schema declares (D783), as a spreadable field. */
|
|
400
|
+
function liveSecretConfigPaths(device) {
|
|
401
|
+
const schema = device.config?.schema;
|
|
402
|
+
if (schema === void 0 || schema === null || typeof schema !== "object") return {};
|
|
403
|
+
const paths = require_dist.collectZodSecretPaths(schema);
|
|
404
|
+
return paths.length > 0 ? { secretConfigPaths: [...paths] } : {};
|
|
405
|
+
}
|
|
399
406
|
function toDeviceInfo(addonId, device, metadata = null, metaRow = null) {
|
|
400
407
|
const configValues = {};
|
|
401
408
|
for (const entry of device.config.entries()) configValues[entry.key] = entry.value;
|
|
@@ -419,6 +426,7 @@ function toDeviceInfo(addonId, device, metadata = null, metaRow = null) {
|
|
|
419
426
|
features: device.features.length > 0 ? [...device.features] : persistedFeatures(metaRow?.features),
|
|
420
427
|
isCamera: isCameraDevice(device),
|
|
421
428
|
config: configValues,
|
|
429
|
+
...liveSecretConfigPaths(device),
|
|
422
430
|
metadata,
|
|
423
431
|
...metaRow?.integrationId !== void 0 ? { integrationId: metaRow.integrationId } : {},
|
|
424
432
|
...metaRow?.linkDeviceId !== void 0 ? { linkDeviceId: metaRow.linkDeviceId } : {},
|
|
@@ -2491,6 +2499,24 @@ function persistedOnlineFallback(input) {
|
|
|
2491
2499
|
return Object.keys(input.config ?? {}).length > 0;
|
|
2492
2500
|
}
|
|
2493
2501
|
//#endregion
|
|
2502
|
+
//#region src/builtins/device-manager/secret-config-paths.ts
|
|
2503
|
+
function createSecretConfigPathRegistry() {
|
|
2504
|
+
const byDevice = /* @__PURE__ */ new Map();
|
|
2505
|
+
return {
|
|
2506
|
+
get: (deviceId) => byDevice.get(deviceId),
|
|
2507
|
+
set: (deviceId, paths) => {
|
|
2508
|
+
byDevice.set(deviceId, Object.freeze([...new Set(paths)]));
|
|
2509
|
+
},
|
|
2510
|
+
delete: (deviceId) => {
|
|
2511
|
+
byDevice.delete(deviceId);
|
|
2512
|
+
}
|
|
2513
|
+
};
|
|
2514
|
+
}
|
|
2515
|
+
/** `{ secretConfigPaths }` when any are known, `{}` otherwise — spread into a `DeviceInfo`. */
|
|
2516
|
+
function secretConfigPathsField(paths) {
|
|
2517
|
+
return paths !== void 0 && paths.length > 0 ? { secretConfigPaths: [...paths] } : {};
|
|
2518
|
+
}
|
|
2519
|
+
//#endregion
|
|
2494
2520
|
//#region src/builtins/device-manager/device-queries.ts
|
|
2495
2521
|
/**
|
|
2496
2522
|
* The ORIGINATING addon id off a cap-channel call's `args`, or `undefined`.
|
|
@@ -2629,6 +2655,7 @@ async function listAll(pctx, input) {
|
|
|
2629
2655
|
features: persistedFeatures(m.features),
|
|
2630
2656
|
isCamera: persistedIsCamera(persistedType),
|
|
2631
2657
|
config: persistedConfig ?? {},
|
|
2658
|
+
...secretConfigPathsField(pctx.secretConfigPaths.get(m.id)),
|
|
2632
2659
|
metadata,
|
|
2633
2660
|
...m.integrationId !== void 0 ? { integrationId: m.integrationId } : {},
|
|
2634
2661
|
...m.linkDeviceId !== void 0 ? { linkDeviceId: m.linkDeviceId } : {},
|
|
@@ -2678,6 +2705,7 @@ async function getDevice(pctx, input) {
|
|
|
2678
2705
|
features: persistedFeatures(m.features),
|
|
2679
2706
|
isCamera: persistedIsCamera(m.type),
|
|
2680
2707
|
config: persistedConfig ?? {},
|
|
2708
|
+
...secretConfigPathsField(pctx.secretConfigPaths.get(deviceId)),
|
|
2681
2709
|
metadata,
|
|
2682
2710
|
...m.integrationId !== void 0 ? { integrationId: m.integrationId } : {},
|
|
2683
2711
|
...m.linkDeviceId !== void 0 ? { linkDeviceId: m.linkDeviceId } : {},
|
|
@@ -2754,6 +2782,7 @@ function projectChildren(pctx, parentDeviceId, ownerAddonId, childRows, liveChil
|
|
|
2754
2782
|
features: persistedFeatures(m.features),
|
|
2755
2783
|
isCamera: persistedIsCamera(m.type),
|
|
2756
2784
|
config: persistedConfig,
|
|
2785
|
+
...secretConfigPathsField(pctx.secretConfigPaths.get(m.id)),
|
|
2757
2786
|
metadata,
|
|
2758
2787
|
...m.integrationId !== void 0 ? { integrationId: m.integrationId } : {},
|
|
2759
2788
|
...m.linkDeviceId !== void 0 ? { linkDeviceId: m.linkDeviceId } : {},
|
|
@@ -5547,6 +5576,7 @@ async function registerDevice(pctx, input) {
|
|
|
5547
5576
|
});
|
|
5548
5577
|
throw new Error(`[device-manager] registerDevice: device ${id} (${addonId}/${stableId}) was removed — refusing to resurrect it`);
|
|
5549
5578
|
}
|
|
5579
|
+
if (Array.isArray(input.secretConfigPaths)) pctx.secretConfigPaths.set(id, input.secretConfigPaths);
|
|
5550
5580
|
const { isFirstRegistration, exportFingerprint, fingerprintChanged, inheritedLocation, inheritedDescendantIds, inheritFailed } = await pctx.metaStore.withMetaWriteLock(async () => {
|
|
5551
5581
|
const existingRow = await pctx.metaStore.rows.get(id);
|
|
5552
5582
|
const existingMeta = existingRow?.meta;
|
|
@@ -5693,6 +5723,7 @@ async function removeDevice(pctx, input) {
|
|
|
5693
5723
|
stableId
|
|
5694
5724
|
});
|
|
5695
5725
|
});
|
|
5726
|
+
pctx.secretConfigPaths.delete(deviceId);
|
|
5696
5727
|
await pctx.settings.clearDeviceStore(deviceId);
|
|
5697
5728
|
await pctx.host.forgetMirrorDevice(deviceId);
|
|
5698
5729
|
await pctx.settings.clearDeviceRuntimeState(deviceId);
|
|
@@ -9605,6 +9636,8 @@ var DeviceManagerAddon = class extends require_dist.BaseAddon {
|
|
|
9605
9636
|
* `allocateDeviceId` never consults.
|
|
9606
9637
|
*/
|
|
9607
9638
|
removalFence = createRemovalFence();
|
|
9639
|
+
/** Declared secret config paths per device, as last registered (D783). */
|
|
9640
|
+
secretConfigPaths = createSecretConfigPathRegistry();
|
|
9608
9641
|
/** The runtime-state mirror, asserted present (constructed in onInitialize). */
|
|
9609
9642
|
get stateMirror() {
|
|
9610
9643
|
if (!this.stateMirrorImpl) throw new Error("DeviceManagerAddon: state mirror accessed before onInitialize");
|
|
@@ -9846,6 +9879,7 @@ var DeviceManagerAddon = class extends require_dist.BaseAddon {
|
|
|
9846
9879
|
bindingsDeps: this.bindingsDeps,
|
|
9847
9880
|
migrationGuard: createMigrationGuard(),
|
|
9848
9881
|
removalFence: this.removalFence,
|
|
9882
|
+
secretConfigPaths: this.secretConfigPaths,
|
|
9849
9883
|
requireDeviceOps,
|
|
9850
9884
|
stampIntegrationId: stampIntegrationId$1,
|
|
9851
9885
|
get provider() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as MINUTES_PER_DAY, At as expandContainer, C as FieldClaimModeSchema,
|
|
2
|
-
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-
|
|
1
|
+
import { A as MINUTES_PER_DAY, At as expandContainer, C as FieldClaimModeSchema, Ct as deviceStateCapability, Dt as enumerateSchemaFields, En as runtimeStatePolicyFor, Et as enumerateItemArrayFields, Ft as formatMinutes, Kt as legacyAutoLinkIds, Mr as sleep$1, O as LocationIconIdSchema, Pr as EventCategory, R as STREAM_PROFILE_META, St as deviceManagerCapability, Xt as locationIconKey, ar as DeviceRole, c as CAP_NAMES_WITH_STATUS, cr as BaseAddon, et as buildStreamParamsConfigSchema, ir as DeviceFeature, jn as siteZoneKey, mr as WELL_KNOWN_TAB_MAP, o as CAMERA_SWITCH_ORDER, or as DeviceType, pt as createDeviceExtensionProvider, sn as normalizeUnit, sr as errMsg, t as ALL_CAPABILITY_DEFINITIONS, un as parseStreamParamsFormPatch, v as DAY_NAMES, vr as collectZodSecretPaths, vt as defineExtensionSlotProvider, w as FieldClaimSchema, wr as isDeviceConfigCap, wt as deviceStatusCapability, x as DeviceStatusSchema, xt as deviceExtensionCapability } from "../../dist-D732NygW.mjs";
|
|
2
|
+
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-CxPOg7BF.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { canonicalDeviceFingerprint } from "@camstack/types/node";
|
|
@@ -391,6 +391,13 @@ function isDeviceRole(value) {
|
|
|
391
391
|
function toDeviceRole(value) {
|
|
392
392
|
return value != null && isDeviceRole(value) ? value : null;
|
|
393
393
|
}
|
|
394
|
+
/** The secret paths a live device's config schema declares (D783), as a spreadable field. */
|
|
395
|
+
function liveSecretConfigPaths(device) {
|
|
396
|
+
const schema = device.config?.schema;
|
|
397
|
+
if (schema === void 0 || schema === null || typeof schema !== "object") return {};
|
|
398
|
+
const paths = collectZodSecretPaths(schema);
|
|
399
|
+
return paths.length > 0 ? { secretConfigPaths: [...paths] } : {};
|
|
400
|
+
}
|
|
394
401
|
function toDeviceInfo(addonId, device, metadata = null, metaRow = null) {
|
|
395
402
|
const configValues = {};
|
|
396
403
|
for (const entry of device.config.entries()) configValues[entry.key] = entry.value;
|
|
@@ -414,6 +421,7 @@ function toDeviceInfo(addonId, device, metadata = null, metaRow = null) {
|
|
|
414
421
|
features: device.features.length > 0 ? [...device.features] : persistedFeatures(metaRow?.features),
|
|
415
422
|
isCamera: isCameraDevice(device),
|
|
416
423
|
config: configValues,
|
|
424
|
+
...liveSecretConfigPaths(device),
|
|
417
425
|
metadata,
|
|
418
426
|
...metaRow?.integrationId !== void 0 ? { integrationId: metaRow.integrationId } : {},
|
|
419
427
|
...metaRow?.linkDeviceId !== void 0 ? { linkDeviceId: metaRow.linkDeviceId } : {},
|
|
@@ -2486,6 +2494,24 @@ function persistedOnlineFallback(input) {
|
|
|
2486
2494
|
return Object.keys(input.config ?? {}).length > 0;
|
|
2487
2495
|
}
|
|
2488
2496
|
//#endregion
|
|
2497
|
+
//#region src/builtins/device-manager/secret-config-paths.ts
|
|
2498
|
+
function createSecretConfigPathRegistry() {
|
|
2499
|
+
const byDevice = /* @__PURE__ */ new Map();
|
|
2500
|
+
return {
|
|
2501
|
+
get: (deviceId) => byDevice.get(deviceId),
|
|
2502
|
+
set: (deviceId, paths) => {
|
|
2503
|
+
byDevice.set(deviceId, Object.freeze([...new Set(paths)]));
|
|
2504
|
+
},
|
|
2505
|
+
delete: (deviceId) => {
|
|
2506
|
+
byDevice.delete(deviceId);
|
|
2507
|
+
}
|
|
2508
|
+
};
|
|
2509
|
+
}
|
|
2510
|
+
/** `{ secretConfigPaths }` when any are known, `{}` otherwise — spread into a `DeviceInfo`. */
|
|
2511
|
+
function secretConfigPathsField(paths) {
|
|
2512
|
+
return paths !== void 0 && paths.length > 0 ? { secretConfigPaths: [...paths] } : {};
|
|
2513
|
+
}
|
|
2514
|
+
//#endregion
|
|
2489
2515
|
//#region src/builtins/device-manager/device-queries.ts
|
|
2490
2516
|
/**
|
|
2491
2517
|
* The ORIGINATING addon id off a cap-channel call's `args`, or `undefined`.
|
|
@@ -2624,6 +2650,7 @@ async function listAll(pctx, input) {
|
|
|
2624
2650
|
features: persistedFeatures(m.features),
|
|
2625
2651
|
isCamera: persistedIsCamera(persistedType),
|
|
2626
2652
|
config: persistedConfig ?? {},
|
|
2653
|
+
...secretConfigPathsField(pctx.secretConfigPaths.get(m.id)),
|
|
2627
2654
|
metadata,
|
|
2628
2655
|
...m.integrationId !== void 0 ? { integrationId: m.integrationId } : {},
|
|
2629
2656
|
...m.linkDeviceId !== void 0 ? { linkDeviceId: m.linkDeviceId } : {},
|
|
@@ -2673,6 +2700,7 @@ async function getDevice(pctx, input) {
|
|
|
2673
2700
|
features: persistedFeatures(m.features),
|
|
2674
2701
|
isCamera: persistedIsCamera(m.type),
|
|
2675
2702
|
config: persistedConfig ?? {},
|
|
2703
|
+
...secretConfigPathsField(pctx.secretConfigPaths.get(deviceId)),
|
|
2676
2704
|
metadata,
|
|
2677
2705
|
...m.integrationId !== void 0 ? { integrationId: m.integrationId } : {},
|
|
2678
2706
|
...m.linkDeviceId !== void 0 ? { linkDeviceId: m.linkDeviceId } : {},
|
|
@@ -2749,6 +2777,7 @@ function projectChildren(pctx, parentDeviceId, ownerAddonId, childRows, liveChil
|
|
|
2749
2777
|
features: persistedFeatures(m.features),
|
|
2750
2778
|
isCamera: persistedIsCamera(m.type),
|
|
2751
2779
|
config: persistedConfig,
|
|
2780
|
+
...secretConfigPathsField(pctx.secretConfigPaths.get(m.id)),
|
|
2752
2781
|
metadata,
|
|
2753
2782
|
...m.integrationId !== void 0 ? { integrationId: m.integrationId } : {},
|
|
2754
2783
|
...m.linkDeviceId !== void 0 ? { linkDeviceId: m.linkDeviceId } : {},
|
|
@@ -5542,6 +5571,7 @@ async function registerDevice(pctx, input) {
|
|
|
5542
5571
|
});
|
|
5543
5572
|
throw new Error(`[device-manager] registerDevice: device ${id} (${addonId}/${stableId}) was removed — refusing to resurrect it`);
|
|
5544
5573
|
}
|
|
5574
|
+
if (Array.isArray(input.secretConfigPaths)) pctx.secretConfigPaths.set(id, input.secretConfigPaths);
|
|
5545
5575
|
const { isFirstRegistration, exportFingerprint, fingerprintChanged, inheritedLocation, inheritedDescendantIds, inheritFailed } = await pctx.metaStore.withMetaWriteLock(async () => {
|
|
5546
5576
|
const existingRow = await pctx.metaStore.rows.get(id);
|
|
5547
5577
|
const existingMeta = existingRow?.meta;
|
|
@@ -5688,6 +5718,7 @@ async function removeDevice(pctx, input) {
|
|
|
5688
5718
|
stableId
|
|
5689
5719
|
});
|
|
5690
5720
|
});
|
|
5721
|
+
pctx.secretConfigPaths.delete(deviceId);
|
|
5691
5722
|
await pctx.settings.clearDeviceStore(deviceId);
|
|
5692
5723
|
await pctx.host.forgetMirrorDevice(deviceId);
|
|
5693
5724
|
await pctx.settings.clearDeviceRuntimeState(deviceId);
|
|
@@ -9600,6 +9631,8 @@ var DeviceManagerAddon = class extends BaseAddon {
|
|
|
9600
9631
|
* `allocateDeviceId` never consults.
|
|
9601
9632
|
*/
|
|
9602
9633
|
removalFence = createRemovalFence();
|
|
9634
|
+
/** Declared secret config paths per device, as last registered (D783). */
|
|
9635
|
+
secretConfigPaths = createSecretConfigPathRegistry();
|
|
9603
9636
|
/** The runtime-state mirror, asserted present (constructed in onInitialize). */
|
|
9604
9637
|
get stateMirror() {
|
|
9605
9638
|
if (!this.stateMirrorImpl) throw new Error("DeviceManagerAddon: state mirror accessed before onInitialize");
|
|
@@ -9841,6 +9874,7 @@ var DeviceManagerAddon = class extends BaseAddon {
|
|
|
9841
9874
|
bindingsDeps: this.bindingsDeps,
|
|
9842
9875
|
migrationGuard: createMigrationGuard(),
|
|
9843
9876
|
removalFence: this.removalFence,
|
|
9877
|
+
secretConfigPaths: this.secretConfigPaths,
|
|
9844
9878
|
requireDeviceOps,
|
|
9845
9879
|
stampIntegrationId: stampIntegrationId$1,
|
|
9846
9880
|
get provider() {
|
|
@@ -62,6 +62,8 @@ export declare function toDeviceInfo(addonId: string, device: IDevice, metadata?
|
|
|
62
62
|
primaryChildEntityId?: string | null | undefined;
|
|
63
63
|
linkDeviceId?: number | null | undefined;
|
|
64
64
|
integrationId?: string | undefined;
|
|
65
|
+
metadata: Record<string, unknown> | null;
|
|
66
|
+
secretConfigPaths?: string[];
|
|
65
67
|
id: number;
|
|
66
68
|
stableId: string;
|
|
67
69
|
addonId: string;
|
|
@@ -76,7 +78,6 @@ export declare function toDeviceInfo(addonId: string, device: IDevice, metadata?
|
|
|
76
78
|
features: DeviceFeature[];
|
|
77
79
|
isCamera: boolean;
|
|
78
80
|
config: Record<string, unknown>;
|
|
79
|
-
metadata: Record<string, unknown> | null;
|
|
80
81
|
};
|
|
81
82
|
export declare function resolveDeviceById(registry: IDeviceRegistry, deviceId: number): {
|
|
82
83
|
addonId: string;
|
|
@@ -6,6 +6,7 @@ import { FieldClaimsIndex } from './field-claims-index.js';
|
|
|
6
6
|
import { OwnedCaps } from './field-ownership.js';
|
|
7
7
|
import { MigrationGuard } from './migrate-guard.js';
|
|
8
8
|
import { RemovalFence } from './removal-fence.js';
|
|
9
|
+
import { SecretConfigPathRegistry } from './secret-config-paths.js';
|
|
9
10
|
import { SeedMode } from './device-state-mirror.js';
|
|
10
11
|
import { MirrorWriteHold } from './mirror-row-writer.js';
|
|
11
12
|
type IDeviceProviderCap = InferProvider<typeof deviceProviderCapability>;
|
|
@@ -85,6 +86,8 @@ export interface ProviderContext {
|
|
|
85
86
|
* tears down, which is how a deleted camera came back as a config-less
|
|
86
87
|
* shell (D376). */
|
|
87
88
|
readonly removalFence: RemovalFence;
|
|
89
|
+
/** The secret config paths each device declared at `registerDevice` (D783). */
|
|
90
|
+
readonly secretConfigPaths: SecretConfigPathRegistry;
|
|
88
91
|
/** Resolve the per-device `device-ops` native provider (throws when absent). */
|
|
89
92
|
requireDeviceOps(deviceId: number): IDeviceOpsProvider;
|
|
90
93
|
/** Stamp an integration id onto a device's meta row + emit DeviceMetaChanged. */
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The secret config paths each device DECLARES (D783) — `connection.password`,
|
|
3
|
+
* `localKey`, `rows[].token` — as its runner last reported them at
|
|
4
|
+
* `registerDevice`.
|
|
5
|
+
*
|
|
6
|
+
* In memory on purpose: a runner re-registers every device it owns whenever it
|
|
7
|
+
* (re)starts, and a hub-main restart restarts every runner, so the map refills
|
|
8
|
+
* on its own. Until a device has registered, its `DeviceInfo` carries no paths
|
|
9
|
+
* and the non-admin redaction falls back to its keyword backstop — never to
|
|
10
|
+
* "no redaction". Paths only; never a value.
|
|
11
|
+
*/
|
|
12
|
+
export interface SecretConfigPathRegistry {
|
|
13
|
+
/** The paths last reported for `deviceId`, or `undefined` when none were. */
|
|
14
|
+
get(deviceId: number): readonly string[] | undefined;
|
|
15
|
+
/** Replace the paths for `deviceId` with the runner's latest report. */
|
|
16
|
+
set(deviceId: number, paths: readonly string[]): void;
|
|
17
|
+
/** Forget a removed device. */
|
|
18
|
+
delete(deviceId: number): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function createSecretConfigPathRegistry(): SecretConfigPathRegistry;
|
|
21
|
+
/** `{ secretConfigPaths }` when any are known, `{}` otherwise — spread into a `DeviceInfo`. */
|
|
22
|
+
export declare function secretConfigPathsField(paths: readonly string[] | undefined): {
|
|
23
|
+
secretConfigPaths?: string[];
|
|
24
|
+
};
|
|
@@ -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-BcUWQGr9.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 { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-
|
|
1
|
+
import { Zt as logDestinationCapability, cr as BaseAddon } from "../../dist-D732NygW.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-BcUWQGr9.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 { I as RecordingStatusSchema, N as RECORDING_SOURCE_CAMSTACK_ADDON,
|
|
1
|
+
import { I as RecordingStatusSchema, N as RECORDING_SOURCE_CAMSTACK_ADDON, Pr as EventCategory, cr as BaseAddon, sr as errMsg, yr as createEvent } from "../../dist-D732NygW.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";
|
|
@@ -60,6 +60,20 @@ export declare const OAUTH_SESSIONS_COLLECTION = "oauth_sessions";
|
|
|
60
60
|
* enrollment row outlives the account."
|
|
61
61
|
*/
|
|
62
62
|
export declare const USER_TOTP_COLLECTION = "user_totp";
|
|
63
|
+
/**
|
|
64
|
+
* External sign-in identities linked to local users (D782): one row per
|
|
65
|
+
* `(provider, subject)` — the row id IS the identity, so one identity maps to
|
|
66
|
+
* one user by primary key. Written only by the identity's owner completing a
|
|
67
|
+
* "Link" flow from their profile (bound to their session).
|
|
68
|
+
*
|
|
69
|
+
* @durable class=config owner=local-auth
|
|
70
|
+
* write="`ExternalIdentityManager.link` when a signed-in user completes a
|
|
71
|
+
* link flow; `unlink` from the profile or the Users page"
|
|
72
|
+
* retention="`unlink` deletes one row; deleting the user deletes all of its
|
|
73
|
+
* rows (`deleteUser` → `removeAllForUser`). A row whose provider instance
|
|
74
|
+
* was renamed or removed stays, inert, until someone unlinks it."
|
|
75
|
+
*/
|
|
76
|
+
export declare const USER_EXTERNAL_IDENTITIES_COLLECTION = "user_external_identities";
|
|
63
77
|
/**
|
|
64
78
|
* Declare every auth collection with the typed schema. Called by
|
|
65
79
|
* `LocalAuthAddon.onInitialize` before constructing the per-collection
|