@camstack/system 1.2.436 → 1.2.438
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 +64 -12
- package/dist/addon-runner.mjs +65 -13
- package/dist/{agent-https-B8lKYVtU.mjs → agent-https-BPfHrI4c.mjs} +3 -3
- package/dist/auth/login-session-manager.d.ts +2 -0
- package/dist/auth/session-revocation-bus.d.ts +32 -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 +7 -1
- package/dist/builtins/alerts/alerts.addon.mjs +7 -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 +2 -2
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
- 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 +9 -1
- package/dist/builtins/camera-grid/index.mjs +9 -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 +12 -5
- package/dist/builtins/console-logging/index.mjs +12 -5
- package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +5 -5
- package/dist/builtins/device-manager/device-manager.addon.d.ts +5 -0
- package/dist/builtins/device-manager/device-manager.addon.js +702 -28
- package/dist/builtins/device-manager/device-manager.addon.mjs +702 -28
- package/dist/builtins/device-manager/device-meta-types.d.ts +4 -0
- package/dist/builtins/device-manager/device-provider-context.d.ts +9 -0
- package/dist/builtins/device-manager/device-removal-hooks.d.ts +103 -0
- package/dist/builtins/device-manager/device-row-store.d.ts +1 -0
- package/dist/builtins/device-manager/device-tombstone-store.d.ts +58 -0
- package/dist/builtins/device-manager/removal-cleanup.d.ts +50 -0
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +37 -4
- package/dist/builtins/keychain/index.mjs +37 -4
- package/dist/builtins/keychain/keychain-service.d.ts +14 -0
- package/dist/builtins/keychain/keychain-store.d.ts +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 +53 -12
- package/dist/builtins/local-auth/local-auth.addon.mjs +53 -13
- package/dist/builtins/local-network/local-network.addon.js +10 -1
- package/dist/builtins/local-network/local-network.addon.mjs +13 -4
- package/dist/builtins/loki-logging/index.js +28 -5
- package/dist/builtins/loki-logging/index.mjs +28 -5
- package/dist/builtins/native-metrics/native-metrics.addon.js +11 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +20 -10
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +8 -8
- 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 +11 -1
- package/dist/builtins/snapshot/index.mjs +11 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +4 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +4 -1
- package/dist/builtins/sqlite-storage/index.js +1 -1
- package/dist/builtins/sqlite-storage/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
- 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.d.ts +9 -0
- package/dist/builtins/system-config/system-config.addon.js +135 -72
- package/dist/builtins/system-config/system-config.addon.mjs +135 -73
- package/dist/builtins/winston-logging/index.js +14 -5
- package/dist/builtins/winston-logging/index.mjs +14 -5
- package/dist/{composition-sources-BAOlCu4j.js → composition-sources-DI3Z83vG.js} +1 -1
- package/dist/{composition-sources-gN_BWUKp.mjs → composition-sources-DpHGCjdL.mjs} +1 -1
- package/dist/{constants-BFpowodq.mjs → constants-DQK705Sb.mjs} +1 -1
- package/dist/{constants-GENKqk9k.js → constants-wkcn5Ij3.js} +1 -1
- package/dist/{device-ca-CuWuRW9N.js → device-ca-BSvkXqyI.js} +1 -1
- package/dist/{device-ca-BNM5ai4t.mjs → device-ca-DvIZjXIl.mjs} +1 -1
- package/dist/{dist-DjD2M79P.mjs → dist-Dc8GKC5H.mjs} +301 -6
- package/dist/{dist-DVe0Nsp8.js → dist-GgG-7amw.js} +348 -5
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/{hub-mdns-ciao-DJRwtlA8.mjs → hub-mdns-ciao-DMlQTdPU.mjs} +1 -1
- package/dist/i18n/catalog-registry.d.ts +35 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +666 -21
- package/dist/index.mjs +676 -38
- package/dist/kernel/gc-census.d.ts +18 -1
- package/dist/kernel/settings-view-types.d.ts +2 -0
- package/dist/kernel/transport/local-transport.d.ts +3 -0
- package/dist/kernel/transport/peer-answered-error.d.ts +5 -1
- package/dist/{restore-archive-D4h904rb.js → restore-archive-CTRz8v9o.js} +1 -1
- package/dist/{restore-archive-BxmP1ChO.mjs → restore-archive-DPg9duVY.mjs} +1 -1
- package/dist/{retired-settings-keys-CYP5IZJ5.js → retired-settings-keys-Dr_4lfKu.js} +1 -1
- package/dist/{retired-settings-keys-CQaknvx1.mjs → retired-settings-keys-Is0zO8gX.mjs} +1 -1
- package/dist/{wal-maintenance-CaDsrJM_.mjs → wal-maintenance-Bx3lcVA7.mjs} +0 -0
- package/dist/{wal-maintenance-Br60onAQ.js → wal-maintenance-mjB2i-VR.js} +0 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Dr as errMsg, In as resolveBucketMs, Jt as foldSnapshotByFunction, Nn as reducePoints, Or as BaseAddon, Wr as createEvent, bn as metricsProviderCapability, yi as EventCategory } from "../../dist-Dc8GKC5H.mjs";
|
|
2
2
|
import { access, readFile, readdir } from "node:fs/promises";
|
|
3
|
-
import * as os from "node:os";
|
|
3
|
+
import * as os$1 from "node:os";
|
|
4
4
|
import { platform } from "node:os";
|
|
5
5
|
import * as fs from "node:fs";
|
|
6
6
|
import { constants, readFileSync } from "node:fs";
|
|
@@ -2008,8 +2008,8 @@ async function readNvidiaGpu(deps) {
|
|
|
2008
2008
|
}
|
|
2009
2009
|
//#endregion
|
|
2010
2010
|
//#region src/builtins/native-metrics/native-metrics-provider.ts
|
|
2011
|
-
var IS_DARWIN = os.platform() === "darwin";
|
|
2012
|
-
var IS_LINUX = os.platform() === "linux";
|
|
2011
|
+
var IS_DARWIN = os$1.platform() === "darwin";
|
|
2012
|
+
var IS_LINUX = os$1.platform() === "linux";
|
|
2013
2013
|
var NativeMetricsProvider = class {
|
|
2014
2014
|
id = "native";
|
|
2015
2015
|
cachedSnapshot = null;
|
|
@@ -2149,14 +2149,14 @@ var NativeMetricsProvider = class {
|
|
|
2149
2149
|
system: pct(dSys),
|
|
2150
2150
|
irq: pct(dIrq),
|
|
2151
2151
|
nice: pct(dNice),
|
|
2152
|
-
loadAvg: os.loadavg(),
|
|
2153
|
-
cores: os.cpus().length
|
|
2152
|
+
loadAvg: os$1.loadavg(),
|
|
2153
|
+
cores: os$1.cpus().length
|
|
2154
2154
|
};
|
|
2155
2155
|
}
|
|
2156
2156
|
/** Cached macOS memory (set by sampleMacMemory timer). */
|
|
2157
2157
|
_cachedMacMem = null;
|
|
2158
2158
|
getMemoryInfo() {
|
|
2159
|
-
const total = os.totalmem();
|
|
2159
|
+
const total = os$1.totalmem();
|
|
2160
2160
|
if (total === 0) return {
|
|
2161
2161
|
percent: 0,
|
|
2162
2162
|
totalBytes: 0,
|
|
@@ -2166,7 +2166,7 @@ var NativeMetricsProvider = class {
|
|
|
2166
2166
|
swapTotalBytes: 0
|
|
2167
2167
|
};
|
|
2168
2168
|
if (IS_DARWIN && this._cachedMacMem !== null) return this._cachedMacMem;
|
|
2169
|
-
const free = os.freemem();
|
|
2169
|
+
const free = os$1.freemem();
|
|
2170
2170
|
const used = total - free;
|
|
2171
2171
|
let swapUsedBytes = 0;
|
|
2172
2172
|
let swapTotalBytes = 0;
|
|
@@ -2188,7 +2188,7 @@ var NativeMetricsProvider = class {
|
|
|
2188
2188
|
}
|
|
2189
2189
|
};
|
|
2190
2190
|
function aggregateCpuTimes() {
|
|
2191
|
-
const cpus = os.cpus();
|
|
2191
|
+
const cpus = os$1.cpus();
|
|
2192
2192
|
let user = 0, nice = 0, sys = 0, irq = 0, idle = 0;
|
|
2193
2193
|
for (const cpu of cpus) {
|
|
2194
2194
|
user += cpu.times.user;
|
|
@@ -2221,7 +2221,7 @@ function sampleMacMemory(provider) {
|
|
|
2221
2221
|
const purgeable = parse("Pages purgeable");
|
|
2222
2222
|
const speculative = parse("Pages speculative");
|
|
2223
2223
|
const available = free + inactive + purgeable + speculative;
|
|
2224
|
-
const total = os.totalmem();
|
|
2224
|
+
const total = os$1.totalmem();
|
|
2225
2225
|
const used = total - available;
|
|
2226
2226
|
let swapUsedBytes = 0;
|
|
2227
2227
|
let swapTotalBytes = 0;
|
|
@@ -3506,11 +3506,14 @@ var NativeMetricsAddon = class NativeMetricsAddon extends BaseAddon {
|
|
|
3506
3506
|
return this.schema({ sections: [{
|
|
3507
3507
|
id: "native-metrics-settings",
|
|
3508
3508
|
title: "System Metrics",
|
|
3509
|
+
titleKey: "server:globalSettings.s_native-metrics-settings.title",
|
|
3509
3510
|
fields: [this.field({
|
|
3510
3511
|
type: "number",
|
|
3511
3512
|
key: "samplingIntervalMs",
|
|
3512
3513
|
label: "Sampling Interval",
|
|
3514
|
+
labelKey: "server:globalSettings.s_native-metrics-settings.samplingIntervalMs.label",
|
|
3513
3515
|
description: "How often to collect system metrics",
|
|
3516
|
+
descriptionKey: "server:globalSettings.s_native-metrics-settings.samplingIntervalMs.description",
|
|
3514
3517
|
min: 1e3,
|
|
3515
3518
|
max: 6e4,
|
|
3516
3519
|
step: 1e3,
|
|
@@ -3520,12 +3523,15 @@ var NativeMetricsAddon = class NativeMetricsAddon extends BaseAddon {
|
|
|
3520
3523
|
}, {
|
|
3521
3524
|
id: "native-metrics-load-series",
|
|
3522
3525
|
title: "Load history",
|
|
3526
|
+
titleKey: "server:globalSettings.s_native-metrics-load-series.title",
|
|
3523
3527
|
fields: [
|
|
3524
3528
|
this.field({
|
|
3525
3529
|
type: "number",
|
|
3526
3530
|
key: "loadSeriesCadenceSec",
|
|
3527
3531
|
label: "Sampling cadence",
|
|
3532
|
+
labelKey: "server:globalSettings.s_native-metrics-load-series.loadSeriesCadenceSec.label",
|
|
3528
3533
|
description: "How often every node reports its process tree. FIXED — a sample is emitted on every interval whether or not anything changed, so a gap in the chart means one thing only: nobody reported. Outside 5-60 s the value is refused.",
|
|
3534
|
+
descriptionKey: "server:globalSettings.s_native-metrics-load-series.loadSeriesCadenceSec.description",
|
|
3529
3535
|
min: 5,
|
|
3530
3536
|
max: 60,
|
|
3531
3537
|
step: 1,
|
|
@@ -3536,7 +3542,9 @@ var NativeMetricsAddon = class NativeMetricsAddon extends BaseAddon {
|
|
|
3536
3542
|
type: "number",
|
|
3537
3543
|
key: "loadSeriesRetentionHours",
|
|
3538
3544
|
label: "Retention",
|
|
3545
|
+
labelKey: "server:globalSettings.s_native-metrics-load-series.loadSeriesRetentionHours.label",
|
|
3539
3546
|
description: "How long the load history is kept on disk (the hub database, on the NVMe cache — never the recordings disk). This is the INTENTION; the row cap below is the guarantee.",
|
|
3547
|
+
descriptionKey: "server:globalSettings.s_native-metrics-load-series.loadSeriesRetentionHours.description",
|
|
3540
3548
|
min: 1,
|
|
3541
3549
|
max: 72,
|
|
3542
3550
|
step: 1,
|
|
@@ -3547,6 +3555,7 @@ var NativeMetricsAddon = class NativeMetricsAddon extends BaseAddon {
|
|
|
3547
3555
|
type: "info",
|
|
3548
3556
|
key: "load-series-cost",
|
|
3549
3557
|
label: "What this configuration costs",
|
|
3558
|
+
labelKey: "server:globalSettings.s_native-metrics-load-series.load-series-cost.label",
|
|
3550
3559
|
content: describeLoadSeriesCost(projection),
|
|
3551
3560
|
variant: projection.capBites ? "warning" : "info"
|
|
3552
3561
|
},
|
|
@@ -3554,6 +3563,7 @@ var NativeMetricsAddon = class NativeMetricsAddon extends BaseAddon {
|
|
|
3554
3563
|
type: "info",
|
|
3555
3564
|
key: "load-series-cap",
|
|
3556
3565
|
label: "Hard row cap",
|
|
3566
|
+
labelKey: "server:globalSettings.s_native-metrics-load-series.load-series-cap.label",
|
|
3557
3567
|
content: `The table never exceeds ${this.loadConfig.maxRows.toLocaleString("en-US")} rows. When it would, the OLDEST samples are evicted and a warning is logged — so raising the retention can never turn into an incident, only into a shorter effective window.`,
|
|
3558
3568
|
variant: "info"
|
|
3559
3569
|
}
|
|
@@ -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-GgG-7amw.js");
|
|
7
7
|
let node_os = require("node:os");
|
|
8
8
|
node_os = require_chunk.__toESM(node_os);
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { o as __toESM, r as __exportAll } from "../../chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import * as os from "node:os";
|
|
2
|
+
import { An as platformProbeCapability, Dr as errMsg, Jr as emitReadiness, Kn as scoreRuntimes, Or as BaseAddon, yi as EventCategory, zt as enumerateInferenceDevices } from "../../dist-Dc8GKC5H.mjs";
|
|
3
|
+
import * as os$1 from "node:os";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import { execFile } from "node:child_process";
|
|
6
6
|
import { promisify } from "node:util";
|
|
@@ -336,7 +336,7 @@ async function getAvailableRAM_MB() {
|
|
|
336
336
|
return Math.round(mem.available / 1024 / 1024);
|
|
337
337
|
} catch (err) {
|
|
338
338
|
console.debug(`systeminformation not available, using platform-specific RAM probe: ${errMsg(err)}`);
|
|
339
|
-
const platform = os.platform();
|
|
339
|
+
const platform = os$1.platform();
|
|
340
340
|
try {
|
|
341
341
|
if (platform === "darwin") {
|
|
342
342
|
const { stdout: output } = await execFileAsync("vm_stat", [], {
|
|
@@ -356,7 +356,7 @@ async function getAvailableRAM_MB() {
|
|
|
356
356
|
} catch (probeErr) {
|
|
357
357
|
console.debug(`RAM probe failed, using total RAM fallback: ${errMsg(probeErr)}`);
|
|
358
358
|
}
|
|
359
|
-
return Math.round(os.totalmem() / 1024 / 1024);
|
|
359
|
+
return Math.round(os$1.totalmem() / 1024 / 1024);
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
362
|
var PlatformScorer = class {
|
|
@@ -443,12 +443,12 @@ var PlatformScorer = class {
|
|
|
443
443
|
return this.cached;
|
|
444
444
|
}
|
|
445
445
|
async probeHardware() {
|
|
446
|
-
const platform = os.platform();
|
|
447
|
-
const arch = os.arch();
|
|
448
|
-
const cpus = os.cpus();
|
|
446
|
+
const platform = os$1.platform();
|
|
447
|
+
const arch = os$1.arch();
|
|
448
|
+
const cpus = os$1.cpus();
|
|
449
449
|
const cpuModel = cpus[0]?.model ?? "unknown";
|
|
450
450
|
const cpuCores = cpus.length;
|
|
451
|
-
const totalRAM_MB = Math.round(os.totalmem() / 1024 / 1024);
|
|
451
|
+
const totalRAM_MB = Math.round(os$1.totalmem() / 1024 / 1024);
|
|
452
452
|
const availableRAM_MB = await getAvailableRAM_MB();
|
|
453
453
|
this.logger.debug("RAM probed", { meta: {
|
|
454
454
|
totalRAM_MB,
|
|
@@ -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-GgG-7amw.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 { Or as BaseAddon, yi as EventCategory } from "../../dist-Dc8GKC5H.mjs";
|
|
2
2
|
//#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
|
|
3
3
|
/**
|
|
4
4
|
* Reconcile the durable `enabledProviders` set against authoritative
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-GgG-7amw.js");
|
|
7
7
|
const require_snapshot_courtesy = require("../../snapshot-courtesy-D_C5-nC0.js");
|
|
8
8
|
let zod = require("zod");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
@@ -1707,13 +1707,17 @@ var SnapshotAddon = class SnapshotAddon extends require_dist.BaseAddon {
|
|
|
1707
1707
|
return this.schema({ sections: [{
|
|
1708
1708
|
id: "snapshot-cache",
|
|
1709
1709
|
title: "Snapshot Cache",
|
|
1710
|
+
titleKey: "server:globalSettings.s_snapshot-cache.title",
|
|
1710
1711
|
description: "Stale fallback when live capture fails. Per-device freshness is configured under Device → Snapshot → Max cache age.",
|
|
1712
|
+
descriptionKey: "server:globalSettings.s_snapshot-cache.description",
|
|
1711
1713
|
columns: 1,
|
|
1712
1714
|
fields: [this.field({
|
|
1713
1715
|
type: "number",
|
|
1714
1716
|
key: "staleTtlMs",
|
|
1715
1717
|
label: "Stale fallback TTL (ms)",
|
|
1718
|
+
labelKey: "server:globalSettings.s_snapshot-cache.staleTtlMs.label",
|
|
1716
1719
|
description: "If live capture fails, cached snapshot younger than this is still returned.",
|
|
1720
|
+
descriptionKey: "server:globalSettings.s_snapshot-cache.staleTtlMs.description",
|
|
1717
1721
|
min: 0,
|
|
1718
1722
|
max: 36e5,
|
|
1719
1723
|
step: 1e3,
|
|
@@ -2322,6 +2326,7 @@ var SnapshotAddon = class SnapshotAddon extends require_dist.BaseAddon {
|
|
|
2322
2326
|
return { sections: [{
|
|
2323
2327
|
id: "snapshot-preferences",
|
|
2324
2328
|
title: "Snapshot",
|
|
2329
|
+
titleKey: "server:deviceSettingsContribution.s_snapshot-preferences.title",
|
|
2325
2330
|
tab: "snapshot",
|
|
2326
2331
|
order: 60,
|
|
2327
2332
|
fields: [
|
|
@@ -2329,7 +2334,9 @@ var SnapshotAddon = class SnapshotAddon extends require_dist.BaseAddon {
|
|
|
2329
2334
|
type: "select",
|
|
2330
2335
|
key: "snapshotStreamId",
|
|
2331
2336
|
label: "Preferred stream",
|
|
2337
|
+
labelKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotStreamId.label",
|
|
2332
2338
|
description: "Stream used when grabbing a snapshot",
|
|
2339
|
+
descriptionKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotStreamId.description",
|
|
2333
2340
|
options: streamOptions,
|
|
2334
2341
|
required: true,
|
|
2335
2342
|
value: current.snapshotStreamId || "auto"
|
|
@@ -2338,6 +2345,7 @@ var SnapshotAddon = class SnapshotAddon extends require_dist.BaseAddon {
|
|
|
2338
2345
|
type: "number",
|
|
2339
2346
|
key: "snapshotMaxAgeS",
|
|
2340
2347
|
label: "Max cache age (s)",
|
|
2348
|
+
labelKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotMaxAgeS.label",
|
|
2341
2349
|
description: `Serve cached snapshot up to this age before re-capturing. Default ${defaultMaxAgeS}s for ${isBattery ? "battery cams (avoids gratuitous wake-ups)" : "non-battery cams (live-feel)"}. The UI refresh button always forces a fresh capture regardless of this value.`,
|
|
2342
2350
|
min: 0,
|
|
2343
2351
|
max: 24 * 3600,
|
|
@@ -2348,7 +2356,9 @@ var SnapshotAddon = class SnapshotAddon extends require_dist.BaseAddon {
|
|
|
2348
2356
|
type: "boolean",
|
|
2349
2357
|
key: "snapshotDebug",
|
|
2350
2358
|
label: "Debug logging",
|
|
2359
|
+
labelKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotDebug.label",
|
|
2351
2360
|
description: "Log stream selection and timing details for this device.",
|
|
2361
|
+
descriptionKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotDebug.description",
|
|
2352
2362
|
value: current.snapshotDebug ?? false
|
|
2353
2363
|
}
|
|
2354
2364
|
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Dr as errMsg, Er as DeviceType, Mt as deriveBatteryPresence, Or as BaseAddon, Xn as snapshotCapability, ct as bareAddonId, ii as nodePin, lt as batteryCapability, rr as streamQualityLabel, s as BatteryStatusSchema, wr as DeviceFeature, yi as EventCategory, yn as memoizePinnedFfmpeg } from "../../dist-Dc8GKC5H.mjs";
|
|
2
2
|
import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CyFs1M3I.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
@@ -1701,13 +1701,17 @@ var SnapshotAddon = class SnapshotAddon extends BaseAddon {
|
|
|
1701
1701
|
return this.schema({ sections: [{
|
|
1702
1702
|
id: "snapshot-cache",
|
|
1703
1703
|
title: "Snapshot Cache",
|
|
1704
|
+
titleKey: "server:globalSettings.s_snapshot-cache.title",
|
|
1704
1705
|
description: "Stale fallback when live capture fails. Per-device freshness is configured under Device → Snapshot → Max cache age.",
|
|
1706
|
+
descriptionKey: "server:globalSettings.s_snapshot-cache.description",
|
|
1705
1707
|
columns: 1,
|
|
1706
1708
|
fields: [this.field({
|
|
1707
1709
|
type: "number",
|
|
1708
1710
|
key: "staleTtlMs",
|
|
1709
1711
|
label: "Stale fallback TTL (ms)",
|
|
1712
|
+
labelKey: "server:globalSettings.s_snapshot-cache.staleTtlMs.label",
|
|
1710
1713
|
description: "If live capture fails, cached snapshot younger than this is still returned.",
|
|
1714
|
+
descriptionKey: "server:globalSettings.s_snapshot-cache.staleTtlMs.description",
|
|
1711
1715
|
min: 0,
|
|
1712
1716
|
max: 36e5,
|
|
1713
1717
|
step: 1e3,
|
|
@@ -2316,6 +2320,7 @@ var SnapshotAddon = class SnapshotAddon extends BaseAddon {
|
|
|
2316
2320
|
return { sections: [{
|
|
2317
2321
|
id: "snapshot-preferences",
|
|
2318
2322
|
title: "Snapshot",
|
|
2323
|
+
titleKey: "server:deviceSettingsContribution.s_snapshot-preferences.title",
|
|
2319
2324
|
tab: "snapshot",
|
|
2320
2325
|
order: 60,
|
|
2321
2326
|
fields: [
|
|
@@ -2323,7 +2328,9 @@ var SnapshotAddon = class SnapshotAddon extends BaseAddon {
|
|
|
2323
2328
|
type: "select",
|
|
2324
2329
|
key: "snapshotStreamId",
|
|
2325
2330
|
label: "Preferred stream",
|
|
2331
|
+
labelKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotStreamId.label",
|
|
2326
2332
|
description: "Stream used when grabbing a snapshot",
|
|
2333
|
+
descriptionKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotStreamId.description",
|
|
2327
2334
|
options: streamOptions,
|
|
2328
2335
|
required: true,
|
|
2329
2336
|
value: current.snapshotStreamId || "auto"
|
|
@@ -2332,6 +2339,7 @@ var SnapshotAddon = class SnapshotAddon extends BaseAddon {
|
|
|
2332
2339
|
type: "number",
|
|
2333
2340
|
key: "snapshotMaxAgeS",
|
|
2334
2341
|
label: "Max cache age (s)",
|
|
2342
|
+
labelKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotMaxAgeS.label",
|
|
2335
2343
|
description: `Serve cached snapshot up to this age before re-capturing. Default ${defaultMaxAgeS}s for ${isBattery ? "battery cams (avoids gratuitous wake-ups)" : "non-battery cams (live-feel)"}. The UI refresh button always forces a fresh capture regardless of this value.`,
|
|
2336
2344
|
min: 0,
|
|
2337
2345
|
max: 24 * 3600,
|
|
@@ -2342,7 +2350,9 @@ var SnapshotAddon = class SnapshotAddon extends BaseAddon {
|
|
|
2342
2350
|
type: "boolean",
|
|
2343
2351
|
key: "snapshotDebug",
|
|
2344
2352
|
label: "Debug logging",
|
|
2353
|
+
labelKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotDebug.label",
|
|
2345
2354
|
description: "Log stream selection and timing details for this device.",
|
|
2355
|
+
descriptionKey: "server:deviceSettingsContribution.s_snapshot-preferences.snapshotDebug.description",
|
|
2346
2356
|
value: current.snapshotDebug ?? false
|
|
2347
2357
|
}
|
|
2348
2358
|
]
|
|
@@ -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-GgG-7amw.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");
|
|
@@ -155,11 +155,14 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
|
|
|
155
155
|
configSchema: { sections: [{
|
|
156
156
|
id: "filesystem-storage",
|
|
157
157
|
title: "Filesystem",
|
|
158
|
+
titleKey: "server:providerInfo.s_filesystem-storage.title",
|
|
158
159
|
fields: [{
|
|
159
160
|
type: "text",
|
|
160
161
|
key: "basePath",
|
|
161
162
|
label: "Base path",
|
|
163
|
+
labelKey: "server:providerInfo.s_filesystem-storage.basePath.label",
|
|
162
164
|
description: "Absolute directory path where files are stored.",
|
|
165
|
+
descriptionKey: "server:providerInfo.s_filesystem-storage.basePath.description",
|
|
163
166
|
required: true
|
|
164
167
|
}]
|
|
165
168
|
}] }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Or as BaseAddon, qt as filesystemBrowseCapability, tr as storageProviderCapability } from "../../dist-Dc8GKC5H.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";
|
|
@@ -149,11 +149,14 @@ var FilesystemStorageProvider = class FilesystemStorageProvider {
|
|
|
149
149
|
configSchema: { sections: [{
|
|
150
150
|
id: "filesystem-storage",
|
|
151
151
|
title: "Filesystem",
|
|
152
|
+
titleKey: "server:providerInfo.s_filesystem-storage.title",
|
|
152
153
|
fields: [{
|
|
153
154
|
type: "text",
|
|
154
155
|
key: "basePath",
|
|
155
156
|
label: "Base path",
|
|
157
|
+
labelKey: "server:providerInfo.s_filesystem-storage.basePath.label",
|
|
156
158
|
description: "Absolute directory path where files are stored.",
|
|
159
|
+
descriptionKey: "server:providerInfo.s_filesystem-storage.basePath.description",
|
|
157
160
|
required: true
|
|
158
161
|
}]
|
|
159
162
|
}] }
|
|
@@ -4,7 +4,7 @@ Object.defineProperties(exports, {
|
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
6
|
const require_builtins_sqlite_storage_filesystem_storage_addon = require("./filesystem-storage.addon.js");
|
|
7
|
-
const require_wal_maintenance = require("../../wal-maintenance-
|
|
7
|
+
const require_wal_maintenance = require("../../wal-maintenance-mjB2i-VR.js");
|
|
8
8
|
const require_builtins_sqlite_storage_sqlite_settings_addon = require("./sqlite-settings.addon.js");
|
|
9
9
|
//#region src/builtins/sqlite-storage/config-store.ts
|
|
10
10
|
var ConfigStore = class {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./filesystem-storage.addon.mjs";
|
|
2
|
-
import { A as SQLITE_PAGE_CACHE_CEILING_KIB, B as sqliteEngineStorm, D as SQLITE_JOURNAL_SIZE_LIMIT_BYTES, F as SQLITE_PROFILE_REPORT_FLOOR_MS, I as SQLITE_PROFILE_REPORT_INTERVAL_MS, L as SQLITE_PROFILE_TOP_N, M as sqliteMmapSizeFor, N as sqlitePageCacheKibFor, O as SQLITE_MMAP_CEILING_BYTES, P as SQLITE_ENGINE_STORM_WALL_SHARE, R as SQLITE_SLOW_CALL_MS, a as WalMaintenance, c as SqliteSettingsBackend, i as WAL_MAINTENANCE_INTERVAL_MS, j as SQLITE_PAGE_CACHE_FLOOR_KIB, k as SQLITE_MMAP_FLOOR_BYTES, n as WAL_HIGH_WATER_BYTES, r as WAL_IDLE_QUIET_MS, t as WAL_CHECKPOINT_BUSY_TIMEOUT_MS, z as SqliteOpProfiler } from "../../wal-maintenance-
|
|
2
|
+
import { A as SQLITE_PAGE_CACHE_CEILING_KIB, B as sqliteEngineStorm, D as SQLITE_JOURNAL_SIZE_LIMIT_BYTES, F as SQLITE_PROFILE_REPORT_FLOOR_MS, I as SQLITE_PROFILE_REPORT_INTERVAL_MS, L as SQLITE_PROFILE_TOP_N, M as sqliteMmapSizeFor, N as sqlitePageCacheKibFor, O as SQLITE_MMAP_CEILING_BYTES, P as SQLITE_ENGINE_STORM_WALL_SHARE, R as SQLITE_SLOW_CALL_MS, a as WalMaintenance, c as SqliteSettingsBackend, i as WAL_MAINTENANCE_INTERVAL_MS, j as SQLITE_PAGE_CACHE_FLOOR_KIB, k as SQLITE_MMAP_FLOOR_BYTES, n as WAL_HIGH_WATER_BYTES, r as WAL_IDLE_QUIET_MS, t as WAL_CHECKPOINT_BUSY_TIMEOUT_MS, z as SqliteOpProfiler } from "../../wal-maintenance-Bx3lcVA7.mjs";
|
|
3
3
|
import { SqliteSettingsAddon } from "./sqlite-settings.addon.mjs";
|
|
4
4
|
//#region src/builtins/sqlite-storage/config-store.ts
|
|
5
5
|
var ConfigStore = class {
|
|
@@ -3,9 +3,9 @@ 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-
|
|
7
|
-
const require_retired_settings_keys = require("../../retired-settings-keys-
|
|
8
|
-
const require_wal_maintenance = require("../../wal-maintenance-
|
|
6
|
+
const require_dist = require("../../dist-GgG-7amw.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-Dr_4lfKu.js");
|
|
8
|
+
const require_wal_maintenance = require("../../wal-maintenance-mjB2i-VR.js");
|
|
9
9
|
const require_sqlite_snapshot_protocol = require("../../sqlite-snapshot-protocol-B9OndqZv.js");
|
|
10
10
|
const require_wal_checkpoint_policy = require("../../wal-checkpoint-policy-d2z2qPqx.js");
|
|
11
11
|
let node_fs_promises = require("node:fs/promises");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys-
|
|
3
|
-
import { C as callControl, E as controlTargetOf, S as trustResult, T as callVector, _ as collectTransferables, a as WalMaintenance, c as SqliteSettingsBackend, d as CrossDatabaseTransactError, f as DatabaseBusyError, m as rehydrateError, o as createVectorIndex, p as DuplicatePlacementError, s as vectorProviderOf, u as CollectionPlacementError, v as isFileHostMessage, w as callData } from "../../wal-maintenance-
|
|
1
|
+
import { Dr as errMsg, Dt as dataStoreProviderCapability, Nr as RUNTIME_DEFAULTS, Or as BaseAddon, Ot as databaseSnapshotCapability, S as DATA_STORE_DATABASES, b as DATABASE_SNAPSHOT_SUFFIX, ct as bareAddonId, ur as vectorStoreCapability, x as DATABASE_SNAPSHOT_TIMEOUT_MS, y as DATABASE_SNAPSHOT_PARTIAL_SUFFIX } from "../../dist-Dc8GKC5H.mjs";
|
|
2
|
+
import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys-Is0zO8gX.mjs";
|
|
3
|
+
import { C as callControl, E as controlTargetOf, S as trustResult, T as callVector, _ as collectTransferables, a as WalMaintenance, c as SqliteSettingsBackend, d as CrossDatabaseTransactError, f as DatabaseBusyError, m as rehydrateError, o as createVectorIndex, p as DuplicatePlacementError, s as vectorProviderOf, u as CollectionPlacementError, v as isFileHostMessage, w as callData } from "../../wal-maintenance-Bx3lcVA7.mjs";
|
|
4
4
|
import { r as isSnapshotWorkerMessage } from "../../sqlite-snapshot-protocol-2QaTouWV.mjs";
|
|
5
5
|
import { a as isWorkerMessage, t as WAL_CHECKPOINT_LARGE_PASS_FRAMES } from "../../wal-checkpoint-policy-BahrTtyD.mjs";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
@@ -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-GgG-7amw.js");
|
|
7
7
|
let zod = require("zod");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let _camstack_types_node = require("@camstack/types/node");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $
|
|
1
|
+
import { $ as StorageLocationTypeSchema, $n as storageMigrationCapability, Bn as resolveLocationMode, Hr as collectSecretConfigKeys, Mr as REDACTED_SECRET, Or as BaseAddon, Q as StorageLocationModeSchema, Qn as storageCapability, Ut as evictionPolicyOfLocation, Z as StorageCleanupJobSchema, Zt as gbToBytes, _i as transformSecretWrite, _n as mayReadLocation, di as resolveSecretMarkers, dr as withLocationMode, et as StorageMigrationJobSchema, ni as isSecretMarker, oi as parseJsonObject, pi as secretTreeFromPaths, qn as settingsStoreCapability, rn as isLocationEnabled, un as legacyModeOf, vn as mayWriteToLocation, xn as modeMayWrite, yi as EventCategory, z as LegacyStorageLocationDefaultSchema } from "../../dist-Dc8GKC5H.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { containsOrEquals, physicalRootOf } from "@camstack/types/node";
|
|
@@ -42,6 +42,15 @@ export declare class SystemConfigAddon extends BaseAddon {
|
|
|
42
42
|
* as {@link updateGlobalSettings}.
|
|
43
43
|
*/
|
|
44
44
|
override updateGlobalSettingsAsOperator(patch: Record<string, unknown>, _nodeId?: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* The value to store for a `name` in a save, or `undefined` for "leave the row
|
|
47
|
+
* alone". The whole form posts every field, so an empty box on a hub that was
|
|
48
|
+
* never named is the NORMAL case and must write nothing (D861: a seed never
|
|
49
|
+
* overwrites); an empty box over a stored name is the operator clearing it,
|
|
50
|
+
* which stores `''` (readers treat it as unset). Anything else must be a valid
|
|
51
|
+
* name — refused whole, like the network lists.
|
|
52
|
+
*/
|
|
53
|
+
private normalizeServerName;
|
|
45
54
|
updateGlobalSettings(patch: Record<string, unknown>): Promise<void>;
|
|
46
55
|
}
|
|
47
56
|
export default SystemConfigAddon;
|