@camstack/system 1.2.330 → 1.2.331
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon-runner.js +1 -1
- package/dist/addon-runner.mjs +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +3 -3
- package/dist/builtins/autotrack/index.mjs +3 -3
- 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 +27 -8
- package/dist/builtins/composer/composer.addon.mjs +21 -3
- 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-bindings-store.d.ts +7 -0
- package/dist/builtins/device-manager/device-manager.addon.d.ts +3 -0
- package/dist/builtins/device-manager/device-manager.addon.js +130 -3
- package/dist/builtins/device-manager/device-manager.addon.mjs +130 -3
- package/dist/builtins/device-manager/stale-wrapper-activations.d.ts +26 -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/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/shared/device-state-changed.d.ts +3 -4
- 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-C8uts1P4.js → child-cap-dispatch-93MfsaZL.js} +1 -0
- package/dist/{child-cap-dispatch-C2VINHu1.mjs → child-cap-dispatch-kLIiU1CG.mjs} +1 -0
- package/dist/{composition-sources-2XxNEet3.js → composition-sources-BXZorHDO.js} +1 -1
- package/dist/{composition-sources-Wj2kWund.mjs → composition-sources-aEEer5gE.mjs} +1 -1
- package/dist/{dist-Dp043AI0.mjs → dist-CoG8lY6H.mjs} +222 -374
- package/dist/{dist-Bx4zxM9N.js → dist-DRUzy1SF.js} +221 -421
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{retired-settings-keys-DR2WMe5d.js → retired-settings-keys-BY9H1I2b.js} +1 -1
- package/dist/{retired-settings-keys-Dxf9vELs.mjs → retired-settings-keys-BcJDpASY.mjs} +1 -1
- package/package.json +1 -16
- package/dist/builtins/doorbell/binding-mirror.d.ts +0 -110
- package/dist/builtins/doorbell/doorbell-composition-migration.d.ts +0 -47
- package/dist/builtins/doorbell/doorbell-extension-slot.d.ts +0 -67
- package/dist/builtins/doorbell/doorbell-settings.d.ts +0 -58
- package/dist/builtins/doorbell/index.d.ts +0 -2
- package/dist/builtins/doorbell/index.js +0 -8
- package/dist/builtins/doorbell/index.mjs +0 -2
- package/dist/builtins/doorbell/trigger-engine.d.ts +0 -92
- package/dist/builtins/doorbell/virtual-doorbell.addon.d.ts +0 -218
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +0 -1413
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +0 -1407
- package/dist/device-state-changed-Bk7cvTnz.js +0 -31
- package/dist/device-state-changed-DoBbkyEI.mjs +0 -20
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-
|
|
1
|
+
import { $t as parseStreamParamsFormPatch, Bn as DeviceRole, Bt as locationIconKey, D as MINUTES_PER_DAY, Hn as errMsg, It as legacyAutoLinkIds, Ot as formatMinutes, P as STREAM_PROFILE_META, S as FieldClaimSchema, T as LocationIconIdSchema, Un as BaseAddon, Vn as DeviceType, X as buildStreamParamsConfigSchema, Xt as normalizeUnit, Yn as WELL_KNOWN_TAB_MAP, _t as deviceStateCapability, bt as enumerateItemArrayFields, fr as sleep$1, ft as defineExtensionSlotProvider, g as DAY_NAMES, gt as deviceManagerCapability, ht as deviceExtensionCapability, ir as isDeviceConfigCap, ln as runtimeStatePolicyFor, mn as siteZoneKey, mr as EventCategory, o as CAMERA_SWITCH_ORDER, s as CAP_NAMES_WITH_STATUS, st as createDeviceExtensionProvider, t as ALL_CAPABILITY_DEFINITIONS, vt as deviceStatusCapability, wt as expandContainer, x as FieldClaimModeSchema, xt as enumerateSchemaFields, y as DeviceStatusSchema, zn as DeviceFeature } from "../../dist-CoG8lY6H.mjs";
|
|
2
|
+
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-BcJDpASY.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { canonicalDeviceFingerprint } from "@camstack/types/node";
|
|
@@ -1020,6 +1020,118 @@ function mergeAggregates(parts) {
|
|
|
1020
1020
|
return out;
|
|
1021
1021
|
}
|
|
1022
1022
|
//#endregion
|
|
1023
|
+
//#region src/builtins/device-manager/stale-wrapper-activations.ts
|
|
1024
|
+
/**
|
|
1025
|
+
* A stored wrapper activation that names a cap with NO wrapper any more.
|
|
1026
|
+
*
|
|
1027
|
+
* `deviceBindings[device][cap].wrapperAddonId` is the operator's choice of a
|
|
1028
|
+
* wrapper. When a wrapper is RETIRED (the `virtual-doorbell` on `doorbell`,
|
|
1029
|
+
* slice 6, D671), its rows outlive it: nothing deletes them (spec S1 — the
|
|
1030
|
+
* cluster is not written by code), and the admin UI no longer offers a toggle
|
|
1031
|
+
* for a cap that is not a wrapper cap. Routed as before, such a row shadows
|
|
1032
|
+
* the device's native (a composed doorbell) behind an addon that no longer
|
|
1033
|
+
* exists, keeps the cap advertised to HA / HAP / Alexa, and refuses every
|
|
1034
|
+
* call — without a line (task 17 review M1, D391).
|
|
1035
|
+
*
|
|
1036
|
+
* So the row is judged against the cap's DECLARED definition — static at boot,
|
|
1037
|
+
* never the live registry, because a wrapper runner that is still starting must
|
|
1038
|
+
* not read as stale. A string `wrapperAddonId` on a cap that is declared and is
|
|
1039
|
+
* not `kind: 'wrapper'` is treated as ABSENT: the cap resolves to its native
|
|
1040
|
+
* (or to nothing), exactly as if the row were not there. That loses no
|
|
1041
|
+
* doorbell: with a native, the native serves it; without one, the retired
|
|
1042
|
+
* addon could not serve it either. A cap this build does not declare is NOT
|
|
1043
|
+
* judged (unknown is not stale).
|
|
1044
|
+
*
|
|
1045
|
+
* It is said once per (device, cap) per process, by name, with the call that
|
|
1046
|
+
* clears the row. The whole store is checked once per process, read-only, so a
|
|
1047
|
+
* device nobody asks about is still named; a read that fails changes nothing,
|
|
1048
|
+
* says it could not check, and the next answered read checks instead (D49).
|
|
1049
|
+
* Generic on purpose: the next wrapper retirement gets the same backstop.
|
|
1050
|
+
*/
|
|
1051
|
+
var STALE_MESSAGE = "bindings: a stored wrapper activation names a cap with no wrapper — ignored, the cap resolves to its native";
|
|
1052
|
+
var UNCHECKED_MESSAGE = "bindings: could not read the stored wrapper activations — retired-wrapper rows not checked";
|
|
1053
|
+
var RECOVERY = "deviceManager.setWrapperActive({ deviceId, capName, wrapperAddonId, active: false })";
|
|
1054
|
+
/**
|
|
1055
|
+
* Every cap this build declares that is NOT a wrapper cap — built once from
|
|
1056
|
+
* the static table: `getAllBindings` is a scheduled hot path, and step 1 asks
|
|
1057
|
+
* this for every stored string activation (re-review N2).
|
|
1058
|
+
*/
|
|
1059
|
+
var DECLARED_NON_WRAPPER_CAPS = new Set(ALL_CAPABILITY_DEFINITIONS.filter((cap) => cap.kind !== "wrapper").map((cap) => cap.name));
|
|
1060
|
+
/** True when `capName` is declared by this build and is NOT a wrapper cap. */
|
|
1061
|
+
function isDeclaredNonWrapperCap(capName) {
|
|
1062
|
+
return DECLARED_NON_WRAPPER_CAPS.has(capName);
|
|
1063
|
+
}
|
|
1064
|
+
function isRecord$1(value) {
|
|
1065
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1066
|
+
}
|
|
1067
|
+
/** A persisted activation of a wrapper on a cap that has none (see module docblock). */
|
|
1068
|
+
function isRetiredWrapperActivation(capName, wrapperAddonId) {
|
|
1069
|
+
return typeof wrapperAddonId === "string" && isDeclaredNonWrapperCap(capName);
|
|
1070
|
+
}
|
|
1071
|
+
/**
|
|
1072
|
+
* The per-process memory: which (device, cap) rows have been said, and whether
|
|
1073
|
+
* the whole store has been checked once. Owned by the device-manager instance.
|
|
1074
|
+
*/
|
|
1075
|
+
var StaleWrapperActivations = class {
|
|
1076
|
+
logger;
|
|
1077
|
+
said = /* @__PURE__ */ new Set();
|
|
1078
|
+
checked = false;
|
|
1079
|
+
constructor(logger) {
|
|
1080
|
+
this.logger = logger;
|
|
1081
|
+
}
|
|
1082
|
+
/** Say one row, once per process. */
|
|
1083
|
+
report(deviceId, capName, wrapperAddonId) {
|
|
1084
|
+
const key = `${deviceId}\u0000${capName}`;
|
|
1085
|
+
if (this.said.has(key)) return;
|
|
1086
|
+
this.said.add(key);
|
|
1087
|
+
this.logger.warn(STALE_MESSAGE, {
|
|
1088
|
+
tags: { deviceId },
|
|
1089
|
+
meta: {
|
|
1090
|
+
capName,
|
|
1091
|
+
wrapperAddonId,
|
|
1092
|
+
recovery: RECOVERY
|
|
1093
|
+
}
|
|
1094
|
+
});
|
|
1095
|
+
}
|
|
1096
|
+
/**
|
|
1097
|
+
* Check a store that was already READ (by a bindings pass) — once per
|
|
1098
|
+
* process. It never throws: it runs inside every bindings pass and under the
|
|
1099
|
+
* boot `void` promise, so a corrupt entry (a null device or row, a hand edit,
|
|
1100
|
+
* a partial write) is skipped — a row it cannot read is not one it can judge
|
|
1101
|
+
* (re-review N1).
|
|
1102
|
+
*/
|
|
1103
|
+
checkStore(store) {
|
|
1104
|
+
if (this.checked) return;
|
|
1105
|
+
this.checked = true;
|
|
1106
|
+
const devices = store.deviceBindings;
|
|
1107
|
+
if (!isRecord$1(devices)) return;
|
|
1108
|
+
for (const [deviceKey, perDevice] of Object.entries(devices)) {
|
|
1109
|
+
const deviceId = Number(deviceKey);
|
|
1110
|
+
if (!Number.isInteger(deviceId) || !isRecord$1(perDevice)) continue;
|
|
1111
|
+
for (const [capName, row] of Object.entries(perDevice)) {
|
|
1112
|
+
const wrapperAddonId = isRecord$1(row) ? row["wrapperAddonId"] : void 0;
|
|
1113
|
+
if (typeof wrapperAddonId === "string" && isDeclaredNonWrapperCap(capName)) this.report(deviceId, capName, wrapperAddonId);
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
/** Read the store (read-only) and check it; a failed read changes nothing. */
|
|
1118
|
+
async checkOnce(read) {
|
|
1119
|
+
if (this.checked) return;
|
|
1120
|
+
let store;
|
|
1121
|
+
try {
|
|
1122
|
+
store = await read();
|
|
1123
|
+
} catch (err) {
|
|
1124
|
+
this.logger.warn(UNCHECKED_MESSAGE, { meta: { error: err instanceof Error ? err.message : String(err) } });
|
|
1125
|
+
return;
|
|
1126
|
+
}
|
|
1127
|
+
try {
|
|
1128
|
+
this.checkStore(store);
|
|
1129
|
+
} catch (err) {
|
|
1130
|
+
this.logger.warn(UNCHECKED_MESSAGE, { meta: { error: err instanceof Error ? err.message : String(err) } });
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
};
|
|
1134
|
+
//#endregion
|
|
1023
1135
|
//#region src/builtins/device-manager/device-bindings-store.ts
|
|
1024
1136
|
/**
|
|
1025
1137
|
* Wire the push-fed cross-process native-cap cache (`remoteNativeCaps`).
|
|
@@ -1260,6 +1372,7 @@ function collectionBindings(deps, deviceId, deviceType) {
|
|
|
1260
1372
|
}
|
|
1261
1373
|
async function getBindings(deps, input) {
|
|
1262
1374
|
const [row, store] = await Promise.all([deps.rows.get(input.deviceId), readBindingsStore(deps)]);
|
|
1375
|
+
deps.staleWrapperActivations.checkStore(store);
|
|
1263
1376
|
return resolveBindingsForDevice(deps, input.deviceId, row, {
|
|
1264
1377
|
store,
|
|
1265
1378
|
ledgerNonEmpty: onceLedgerNonEmpty(deps)
|
|
@@ -1304,6 +1417,10 @@ async function resolveBindingsForDevice(deps, deviceId, row, pass) {
|
|
|
1304
1417
|
const resolveRemote = (capName) => deps.remoteNativeCaps.get(deviceId)?.get(capName) ?? resolveRemoteNativeCapFromRegistry(deps, capName, deviceId);
|
|
1305
1418
|
for (const [capName, { wrapperAddonId }] of Object.entries(perDevice)) {
|
|
1306
1419
|
if (wrapperAddonId === void 0) continue;
|
|
1420
|
+
if (isRetiredWrapperActivation(capName, wrapperAddonId)) {
|
|
1421
|
+
deps.staleWrapperActivations.report(deviceId, capName, wrapperAddonId);
|
|
1422
|
+
continue;
|
|
1423
|
+
}
|
|
1307
1424
|
const hubLocalNative = deps.capabilityRegistry?.getNativeAddonId(capName, deviceId) ?? null;
|
|
1308
1425
|
const remoteNative = resolveRemote(capName);
|
|
1309
1426
|
const nativeAddonId = hubLocalNative ?? remoteNative?.addonId ?? "";
|
|
@@ -1428,6 +1545,7 @@ async function resolveBindingsForDevice(deps, deviceId, row, pass) {
|
|
|
1428
1545
|
async function getBindingsBatch(deps, input) {
|
|
1429
1546
|
const ids = [...new Set(input.deviceIds)];
|
|
1430
1547
|
const [rows, store] = await Promise.all([deps.rows.getMany(ids), readBindingsStore(deps)]);
|
|
1548
|
+
deps.staleWrapperActivations.checkStore(store);
|
|
1431
1549
|
const pass = {
|
|
1432
1550
|
store,
|
|
1433
1551
|
ledgerNonEmpty: onceLedgerNonEmpty(deps)
|
|
@@ -1458,6 +1576,7 @@ async function getBindingsBatch(deps, input) {
|
|
|
1458
1576
|
*/
|
|
1459
1577
|
async function getAllBindings(deps) {
|
|
1460
1578
|
const [fleet, store] = await Promise.all([deps.rows.listAll(), readBindingsStore(deps)]);
|
|
1579
|
+
deps.staleWrapperActivations.checkStore(store);
|
|
1461
1580
|
const rowById = /* @__PURE__ */ new Map();
|
|
1462
1581
|
const ids = /* @__PURE__ */ new Set();
|
|
1463
1582
|
for (const row of fleet) {
|
|
@@ -9633,6 +9752,12 @@ var DeviceManagerAddon = class extends BaseAddon {
|
|
|
9633
9752
|
* one key range is the same defect one level up. Handed to both.
|
|
9634
9753
|
*/
|
|
9635
9754
|
addonStoreWriteLock = createWriteLock();
|
|
9755
|
+
/** Stored activations of RETIRED wrappers, said once per process (task 17 review M1). */
|
|
9756
|
+
staleWrapperActivationsImpl = null;
|
|
9757
|
+
get staleWrapperActivations() {
|
|
9758
|
+
this.staleWrapperActivationsImpl ??= new StaleWrapperActivations(this.ctx.logger);
|
|
9759
|
+
return this.staleWrapperActivationsImpl;
|
|
9760
|
+
}
|
|
9636
9761
|
/** Build the dependency context the extracted binding resolvers consume. */
|
|
9637
9762
|
get bindingsDeps() {
|
|
9638
9763
|
const rows = this.deviceRows;
|
|
@@ -9642,7 +9767,8 @@ var DeviceManagerAddon = class extends BaseAddon {
|
|
|
9642
9767
|
capabilityRegistry: this.capabilityRegistry,
|
|
9643
9768
|
remoteNativeCaps: this.remoteNativeCaps,
|
|
9644
9769
|
rows,
|
|
9645
|
-
withAddonStoreWriteLock: this.addonStoreWriteLock
|
|
9770
|
+
withAddonStoreWriteLock: this.addonStoreWriteLock,
|
|
9771
|
+
staleWrapperActivations: this.staleWrapperActivations
|
|
9646
9772
|
};
|
|
9647
9773
|
}
|
|
9648
9774
|
async getBindings(input) {
|
|
@@ -9717,6 +9843,7 @@ var DeviceManagerAddon = class extends BaseAddon {
|
|
|
9717
9843
|
const deviceRows = new DeviceRowStore(deviceRowBackendOf(settingsStoreApi), this.ctx.logger.child("rows"));
|
|
9718
9844
|
await deviceRows.declare();
|
|
9719
9845
|
this.deviceRows = deviceRows;
|
|
9846
|
+
this.staleWrapperActivations.checkOnce(() => readBindingsStore(this.bindingsDeps));
|
|
9720
9847
|
try {
|
|
9721
9848
|
await purgeRetiredSettingsRows(deviceRows.retiredRowStore(), this.ctx.logger.child("RetiredRows"));
|
|
9722
9849
|
} catch (err) {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IScopedLogger } from '@camstack/types';
|
|
2
|
+
import { DeviceBindingsStore } from './device-meta-types.js';
|
|
3
|
+
/** A persisted activation of a wrapper on a cap that has none (see module docblock). */
|
|
4
|
+
export declare function isRetiredWrapperActivation(capName: string, wrapperAddonId: string | null | undefined): wrapperAddonId is string;
|
|
5
|
+
/**
|
|
6
|
+
* The per-process memory: which (device, cap) rows have been said, and whether
|
|
7
|
+
* the whole store has been checked once. Owned by the device-manager instance.
|
|
8
|
+
*/
|
|
9
|
+
export declare class StaleWrapperActivations {
|
|
10
|
+
private readonly logger;
|
|
11
|
+
private readonly said;
|
|
12
|
+
private checked;
|
|
13
|
+
constructor(logger: IScopedLogger);
|
|
14
|
+
/** Say one row, once per process. */
|
|
15
|
+
report(deviceId: number, capName: string, wrapperAddonId: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Check a store that was already READ (by a bindings pass) — once per
|
|
18
|
+
* process. It never throws: it runs inside every bindings pass and under the
|
|
19
|
+
* boot `void` promise, so a corrupt entry (a null device or row, a hand edit,
|
|
20
|
+
* a partial write) is skipped — a row it cannot read is not one it can judge
|
|
21
|
+
* (re-review N1).
|
|
22
|
+
*/
|
|
23
|
+
checkStore(store: DeviceBindingsStore): void;
|
|
24
|
+
/** Read the store (read-only) and check it; a failed read changes nothing. */
|
|
25
|
+
checkOnce(read: () => Promise<DeviceBindingsStore>): Promise<void>;
|
|
26
|
+
}
|
|
@@ -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-DRUzy1SF.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 { Un as BaseAddon, Vt as logDestinationCapability } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 {
|
|
1
|
+
import { $n as createEvent, Hn as errMsg, M as RecordingStatusSchema, Un as BaseAddon, k as RECORDING_SOURCE_CAMSTACK_ADDON, mr as EventCategory } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 { B as UserRecordSchema,
|
|
2
|
+
import { B as UserRecordSchema, F as ScopedTokenSchema, G as authProviderCapability, Sn as userManagementCapability, Un as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 { Un as BaseAddon, mr as EventCategory, zt as localNetworkCapability } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 { Un as BaseAddon, Vt as logDestinationCapability } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 { $n as createEvent, Dt as foldSnapshotByFunction, Hn as errMsg, Un as BaseAddon, in as reducePoints, mr as EventCategory, on as resolveBucketMs, qt as metricsProviderCapability } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 { Hn as errMsg, Un as BaseAddon, fn as scoreRuntimes, mr as EventCategory, tn as platformProbeCapability, tr as emitReadiness, yt as enumerateInferenceDevices } from "../../dist-CoG8lY6H.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-DRUzy1SF.js");
|
|
7
7
|
//#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
|
|
8
8
|
/**
|
|
9
9
|
* Reconcile the durable `enabledProviders` set against authoritative
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Un as BaseAddon, mr as EventCategory } from "../../dist-CoG8lY6H.mjs";
|
|
2
2
|
//#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
|
|
3
3
|
/**
|
|
4
4
|
* Reconcile the durable `enabledProviders` set against authoritative
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The ONE cast-free narrowing of the `device.state-changed` payload. The
|
|
3
3
|
* category is not part of the typed `EventCatalog` — every subscriber validates
|
|
4
|
-
* at the boundary, and
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* live in this package.
|
|
4
|
+
* at the boundary, and the builtins share this one narrowing instead of a
|
|
5
|
+
* verbatim copy each (D659), like `./settle-sources.ts`; addons never import
|
|
6
|
+
* each other, and its consumers live in this package.
|
|
8
7
|
*/
|
|
9
8
|
/** Narrowed payload of a `DeviceStateChanged` bus event. */
|
|
10
9
|
export interface DeviceStateChangedData {
|
|
@@ -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-DRUzy1SF.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 {
|
|
1
|
+
import { Hn as errMsg, J as batteryCapability, Kt as memoizePinnedFfmpeg, Un as BaseAddon, Vn as DeviceType, a as BatteryStatusSchema, hn as snapshotCapability, mr as EventCategory, or as nodePin, pt as deriveBatteryPresence, q as bareAddonId, xn as streamQualityLabel, zn as DeviceFeature } from "../../dist-CoG8lY6H.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-DRUzy1SF.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Et as filesystemBrowseCapability, Un as BaseAddon, yn as storageProviderCapability } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 {
|
|
1
|
+
import { A as REDACTED_SECRET, Ct as evictionPolicyOfLocation, Dn as withLocationMode, Gt as mayWriteToLocation, I as StorageCleanupJobSchema, Jt as modeMayWrite, L as StorageLocationModeSchema, Lt as legacyModeOf, Mt as isLocationEnabled, Q as collectSecretConfigKeys, R as StorageLocationTypeSchema, Un as BaseAddon, Wt as mayReadLocation, _n as storageMigrationCapability, gn as storageCapability, kt as gbToBytes, mr as EventCategory, pn as settingsStoreCapability, sn as resolveLocationMode, sr as parseJsonObject, w as LegacyStorageLocationDefaultSchema, z as StorageMigrationJobSchema } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 {
|
|
1
|
+
import { Hn as errMsg, Un as BaseAddon, rr as hydrateSchema } from "../../dist-CoG8lY6H.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-DRUzy1SF.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 {
|
|
1
|
+
import { Un as BaseAddon, Vt as logDestinationCapability } from "../../dist-CoG8lY6H.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
import * as path$1 from "node:path";
|
|
4
4
|
import path from "node:path";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Hn as
|
|
1
|
+
import { Hn as errMsg, In as compositionSourceKey } from "./dist-CoG8lY6H.mjs";
|
|
2
2
|
//#region src/builtins/core-blocks/composition-sources.ts
|
|
3
3
|
/**
|
|
4
4
|
* Describe what a composition reads and writes for SAVE-time validation
|