@camstack/system 1.2.115 → 1.2.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-hostname.d.ts +15 -0
- package/dist/builtins/local-network/local-network.addon.d.ts +31 -7
- package/dist/builtins/local-network/local-network.addon.js +177 -28
- package/dist/builtins/local-network/local-network.addon.mjs +177 -28
- 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 +2 -2
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +2 -2
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-Drb54SZD.mjs → dist-BpzbLPel.mjs} +139 -5
- package/dist/{dist-iAwSA2_f.js → dist-Cri60Jd0.js} +139 -5
- package/dist/http/lan-http-bind.d.ts +19 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +29 -472
- package/dist/index.mjs +11 -468
- package/dist/lan-http-bind-BDJm4d-K.mjs +716 -0
- package/dist/lan-http-bind-CZ4EBeD_.js +848 -0
- package/dist/{retired-settings-keys-OfhqQio4.js → retired-settings-keys-BVAxT5XL.js} +1 -1
- package/dist/{retired-settings-keys-Dz5-7gjt.mjs → retired-settings-keys-SrxMH3OT.mjs} +1 -1
- package/dist/tls/cert-manager.d.ts +11 -0
- package/dist/tls/index.d.ts +3 -1
- package/dist/tls/tls-status.d.ts +16 -0
- package/dist/tls/uploaded-cert.d.ts +14 -0
- package/package.json +1 -1
|
@@ -1,5 +1,43 @@
|
|
|
1
|
-
import { Gt as EventCategory, Y as localNetworkCapability, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { Gt as EventCategory, Y as localNetworkCapability, yt as BaseAddon } from "../../dist-BpzbLPel.mjs";
|
|
2
|
+
import { a as readLanHttpState, c as readTlsAccessStatus, d as writeTlsMode, f as validateUploadedTls, h as reissueTlsLeaf, l as readTlsMode, n as applyLanHttp, p as ensureTlsCert, s as readExtraSans, t as DEFAULT_LAN_HTTP_PORT, u as writeExtraSans } from "../../lan-http-bind-BDJm4d-K.mjs";
|
|
3
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
4
|
+
import { join } from "node:path";
|
|
2
5
|
import * as os from "node:os";
|
|
6
|
+
import { isIP } from "node:net";
|
|
7
|
+
//#region src/builtins/local-network/local-hostname.ts
|
|
8
|
+
var DNS_NAME = /^(?=.{1,253}$)([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])$/;
|
|
9
|
+
/**
|
|
10
|
+
* Parse the operator-typed local hostname.
|
|
11
|
+
*
|
|
12
|
+
* Empty / whitespace → `null` (advertise the raw LAN IP). A DNS name is
|
|
13
|
+
* lowercased. A URL, port suffix, path, or bare IP is rejected so it cannot
|
|
14
|
+
* leak into a SAN or a candidate URL.
|
|
15
|
+
*/
|
|
16
|
+
function parseLocalHostname(raw) {
|
|
17
|
+
const trimmed = raw.trim();
|
|
18
|
+
if (trimmed === "") return {
|
|
19
|
+
ok: true,
|
|
20
|
+
value: null
|
|
21
|
+
};
|
|
22
|
+
if (/[\s/:?#]/.test(trimmed) || trimmed.includes("\\")) return {
|
|
23
|
+
ok: false,
|
|
24
|
+
error: "Enter a DNS name such as camstack.lan, without a scheme or port."
|
|
25
|
+
};
|
|
26
|
+
const lowered = trimmed.toLowerCase();
|
|
27
|
+
if (isIP(lowered) !== 0) return {
|
|
28
|
+
ok: false,
|
|
29
|
+
error: "Use the address allowlist for IPs — this field is a DNS name."
|
|
30
|
+
};
|
|
31
|
+
if (!DNS_NAME.test(lowered)) return {
|
|
32
|
+
ok: false,
|
|
33
|
+
error: "Enter a DNS name such as camstack.lan, without a scheme or port."
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
ok: true,
|
|
37
|
+
value: lowered
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
3
41
|
//#region src/builtins/local-network/local-network.addon.ts
|
|
4
42
|
/**
|
|
5
43
|
* local-network — hub-only system cap implementation.
|
|
@@ -48,7 +86,10 @@ var LocalNetworkAddon = class extends BaseAddon {
|
|
|
48
86
|
super({
|
|
49
87
|
allowedAddresses: [],
|
|
50
88
|
bootSeeded: false,
|
|
51
|
-
notificationBaseUrl: ""
|
|
89
|
+
notificationBaseUrl: "",
|
|
90
|
+
httpEnabled: true,
|
|
91
|
+
httpPort: DEFAULT_LAN_HTTP_PORT,
|
|
92
|
+
localHostname: ""
|
|
52
93
|
});
|
|
53
94
|
}
|
|
54
95
|
/**
|
|
@@ -94,8 +135,15 @@ var LocalNetworkAddon = class extends BaseAddon {
|
|
|
94
135
|
source: localPort.source
|
|
95
136
|
} });
|
|
96
137
|
await this.reconcileMeshEndpoint();
|
|
138
|
+
const httpState = readLanHttpState();
|
|
97
139
|
return {
|
|
98
|
-
endpoints: buildEndpoints(interfaces, localPort.port, includeLoopback, ipv4Only, this.publicHostname, scheme, this.meshEndpoint
|
|
140
|
+
endpoints: buildEndpoints(interfaces, localPort.port, includeLoopback, ipv4Only, this.publicHostname, scheme, this.meshEndpoint, {
|
|
141
|
+
enabled: this.config.httpEnabled !== false,
|
|
142
|
+
listening: httpState.listening,
|
|
143
|
+
httpPort: this.resolvedHttpPort(),
|
|
144
|
+
httpsPort: localPort.port,
|
|
145
|
+
localHostname: this.config.localHostname || null
|
|
146
|
+
}),
|
|
99
147
|
localPort
|
|
100
148
|
};
|
|
101
149
|
},
|
|
@@ -130,6 +178,33 @@ var LocalNetworkAddon = class extends BaseAddon {
|
|
|
130
178
|
dropped: addresses.length - cleaned.length
|
|
131
179
|
} });
|
|
132
180
|
return { success: true };
|
|
181
|
+
},
|
|
182
|
+
getTlsStatus: async () => this.snapshotTls(false),
|
|
183
|
+
regenerateCertificate: async (_input) => {
|
|
184
|
+
if (readTlsMode(this.tlsDataDir()) === "uploaded") throw new Error("Cannot regenerate an uploaded certificate — revert to generated first.");
|
|
185
|
+
const extraSans = [...readExtraSans(this.tlsDataDir())];
|
|
186
|
+
await reissueTlsLeaf(this.tlsDataDir(), { extraSans });
|
|
187
|
+
return this.snapshotTls(true);
|
|
188
|
+
},
|
|
189
|
+
uploadCertificate: async ({ certPem, keyPem, caPem }) => {
|
|
190
|
+
const valid = validateUploadedTls(certPem, keyPem);
|
|
191
|
+
if (!valid.ok) throw new Error(valid.error);
|
|
192
|
+
const dir = join(this.tlsDataDir(), "tls");
|
|
193
|
+
await mkdir(dir, { recursive: true });
|
|
194
|
+
await writeFile(join(dir, "camstack.crt"), certPem.endsWith("\n") ? certPem : `${certPem}\n`);
|
|
195
|
+
await writeFile(join(dir, "camstack.key"), keyPem.endsWith("\n") ? keyPem : `${keyPem}\n`, { mode: 384 });
|
|
196
|
+
if (caPem && caPem.trim() !== "") await writeFile(join(dir, "camstack-ca.crt"), caPem.endsWith("\n") ? caPem : `${caPem}\n`);
|
|
197
|
+
writeTlsMode(this.tlsDataDir(), "uploaded");
|
|
198
|
+
return this.snapshotTls(true);
|
|
199
|
+
},
|
|
200
|
+
downloadCa: async () => {
|
|
201
|
+
return { pem: this.snapshotTls(false).caCertPem ?? "" };
|
|
202
|
+
},
|
|
203
|
+
revertToGeneratedCertificate: async () => {
|
|
204
|
+
writeTlsMode(this.tlsDataDir(), "generated");
|
|
205
|
+
const extraSans = [...readExtraSans(this.tlsDataDir())];
|
|
206
|
+
await ensureTlsCert(this.tlsDataDir(), { extraSans });
|
|
207
|
+
return this.snapshotTls(true);
|
|
133
208
|
}
|
|
134
209
|
};
|
|
135
210
|
this.lastSnapshotKey = snapshotKey(this.enumerate());
|
|
@@ -153,11 +228,58 @@ var LocalNetworkAddon = class extends BaseAddon {
|
|
|
153
228
|
} : null);
|
|
154
229
|
});
|
|
155
230
|
this.ctx.logger.info("local-network initialized", { meta: { interfaceCount: this.enumerate().length } });
|
|
231
|
+
try {
|
|
232
|
+
await this.applyLanAccessFromSettings();
|
|
233
|
+
} catch (err) {
|
|
234
|
+
this.ctx.logger.warn("local-network: LAN HTTP not applied at boot", { meta: { error: err instanceof Error ? err.message : String(err) } });
|
|
235
|
+
}
|
|
156
236
|
return [{
|
|
157
237
|
capability: localNetworkCapability,
|
|
158
238
|
provider
|
|
159
239
|
}];
|
|
160
240
|
}
|
|
241
|
+
globalSettingsSchema() {
|
|
242
|
+
return this.schema({ sections: [{
|
|
243
|
+
id: "local-access",
|
|
244
|
+
title: "LAN HTTP",
|
|
245
|
+
description: "Native apps on this Wi-Fi use http:// and skip the private certificate. The tunnel and this admin UI stay on HTTPS. Turn off once a publicly-trusted certificate covers the LAN name.",
|
|
246
|
+
columns: 1,
|
|
247
|
+
fields: [
|
|
248
|
+
this.field({
|
|
249
|
+
type: "boolean",
|
|
250
|
+
key: "httpEnabled",
|
|
251
|
+
label: "Enable HTTP on the LAN",
|
|
252
|
+
style: "switch",
|
|
253
|
+
default: true
|
|
254
|
+
}),
|
|
255
|
+
this.field({
|
|
256
|
+
type: "number",
|
|
257
|
+
key: "httpPort",
|
|
258
|
+
label: "HTTP port",
|
|
259
|
+
description: "Dedicated listener. Must not equal the HTTPS port (4443 by default).",
|
|
260
|
+
min: 1,
|
|
261
|
+
max: 65535,
|
|
262
|
+
step: 1,
|
|
263
|
+
default: DEFAULT_LAN_HTTP_PORT,
|
|
264
|
+
showWhen: {
|
|
265
|
+
field: "httpEnabled",
|
|
266
|
+
equals: true
|
|
267
|
+
}
|
|
268
|
+
}),
|
|
269
|
+
this.field({
|
|
270
|
+
type: "text",
|
|
271
|
+
key: "localHostname",
|
|
272
|
+
label: "Local hostname",
|
|
273
|
+
description: "Advertised to the viewer instead of the raw LAN IP, and added to the certificate SAN. Requires this name to resolve on the LAN (router DNS, mDNS, or a hosts file). Leave empty to keep using the IP.",
|
|
274
|
+
maxLength: 253,
|
|
275
|
+
placeholder: "camstack.lan"
|
|
276
|
+
})
|
|
277
|
+
]
|
|
278
|
+
}] });
|
|
279
|
+
}
|
|
280
|
+
async onConfigChanged() {
|
|
281
|
+
await this.applyLanAccessFromSettings();
|
|
282
|
+
}
|
|
161
283
|
async onShutdown() {
|
|
162
284
|
if (this.pollTimer) {
|
|
163
285
|
clearInterval(this.pollTimer);
|
|
@@ -226,6 +348,42 @@ var LocalNetworkAddon = class extends BaseAddon {
|
|
|
226
348
|
}
|
|
227
349
|
}
|
|
228
350
|
}
|
|
351
|
+
resolvedHttpPort() {
|
|
352
|
+
const port = this.config.httpPort;
|
|
353
|
+
return Number.isInteger(port) && port >= 1 && port <= 65535 ? port : DEFAULT_LAN_HTTP_PORT;
|
|
354
|
+
}
|
|
355
|
+
tlsDataDir() {
|
|
356
|
+
return this.ctx.nodeDataDir ?? this.ctx.dataDir;
|
|
357
|
+
}
|
|
358
|
+
snapshotTls(restartRequired) {
|
|
359
|
+
const status = readTlsAccessStatus(this.tlsDataDir(), restartRequired);
|
|
360
|
+
return {
|
|
361
|
+
...status,
|
|
362
|
+
sans: [...status.sans]
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Bind or unbind the LAN HTTP sibling from the addon's own settings, and
|
|
367
|
+
* keep the leaf SAN in sync with `localHostname`. This is the settings
|
|
368
|
+
* side-effect path — there is no second persist API.
|
|
369
|
+
*/
|
|
370
|
+
async applyLanAccessFromSettings() {
|
|
371
|
+
const parsed = parseLocalHostname(this.config.localHostname ?? "");
|
|
372
|
+
if (!parsed.ok) throw new Error(parsed.error);
|
|
373
|
+
const hostname = parsed.value ?? "";
|
|
374
|
+
const httpsPort = (await this.resolveAdvertisedListenPort(null)).port;
|
|
375
|
+
const httpPort = this.resolvedHttpPort();
|
|
376
|
+
if (this.config.httpEnabled !== false && httpPort === httpsPort) throw new Error(`HTTP port ${httpPort} cannot equal the HTTPS listen port`);
|
|
377
|
+
await applyLanHttp({
|
|
378
|
+
enabled: this.config.httpEnabled !== false,
|
|
379
|
+
port: httpPort,
|
|
380
|
+
host: "0.0.0.0"
|
|
381
|
+
});
|
|
382
|
+
if (hostname !== "") {
|
|
383
|
+
writeExtraSans(this.tlsDataDir(), [hostname]);
|
|
384
|
+
if (readTlsMode(this.tlsDataDir()) === "generated") await ensureTlsCert(this.tlsDataDir(), { extraSans: [hostname] });
|
|
385
|
+
} else writeExtraSans(this.tlsDataDir(), []);
|
|
386
|
+
}
|
|
229
387
|
/**
|
|
230
388
|
* The port this hub is actually listening on, plus the provenance of the
|
|
231
389
|
* number. The boot loader merges the `CAMSTACK_PORT` env override into the
|
|
@@ -399,31 +557,13 @@ function pickPreferred(interfaces) {
|
|
|
399
557
|
return prefixLen(b.netmask) - prefixLen(a.netmask);
|
|
400
558
|
})[0] ?? null;
|
|
401
559
|
}
|
|
402
|
-
|
|
403
|
-
* Build the ordered candidate URL list. Priority schema:
|
|
404
|
-
* 0 — preferred LAN IPv4
|
|
405
|
-
* 10+ — other LAN IPv4
|
|
406
|
-
* 100 — public tunnel hostname (always HTTPS)
|
|
407
|
-
* 150 — mesh endpoint (Tailscale MagicDNS / 100.x, always HTTPS)
|
|
408
|
-
* 200+ — LAN IPv6
|
|
409
|
-
* 1000 — loopback (last resort)
|
|
410
|
-
*
|
|
411
|
-
* The mesh endpoint ranks just below a true public funnel (a Funnel is
|
|
412
|
-
* reachable by ANY client; the mesh needs the peer on the same tailnet)
|
|
413
|
-
* but above the IPv6 / loopback fallbacks — giving remote, mesh-joined
|
|
414
|
-
* clients a working candidate when no public tunnel is up.
|
|
415
|
-
*
|
|
416
|
-
* `scheme` controls LAN + loopback URLs. Browsers running over HTTPS
|
|
417
|
-
* block `http://` candidates as mixed content, so callers loaded over
|
|
418
|
-
* HTTPS should pass `scheme: 'https'` even when probing a LAN IP — the
|
|
419
|
-
* hub's cert manager already issues a SAN-multi cert covering local
|
|
420
|
-
* interfaces. The public tunnel + mesh endpoint always emit `https://`
|
|
421
|
-
* (the tunnel edge / the hub itself terminates TLS).
|
|
422
|
-
*/
|
|
423
|
-
function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostname, scheme = "http", meshEndpoint = null) {
|
|
560
|
+
function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostname, scheme = "http", meshEndpoint = null, lanHttp = null) {
|
|
424
561
|
const out = [];
|
|
425
562
|
let priority = 0;
|
|
426
563
|
const preferred = pickPreferred(interfaces);
|
|
564
|
+
const httpLan = lanHttp?.enabled === true && lanHttp.listening === true;
|
|
565
|
+
const lanScheme = httpLan ? "http" : scheme;
|
|
566
|
+
const lanPort = httpLan ? lanHttp.httpPort : port;
|
|
427
567
|
const emit = (iface, kind, label, baseUrl, pri) => {
|
|
428
568
|
out.push({
|
|
429
569
|
label,
|
|
@@ -435,13 +575,22 @@ function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostn
|
|
|
435
575
|
priority: pri
|
|
436
576
|
});
|
|
437
577
|
};
|
|
438
|
-
if (
|
|
578
|
+
if (httpLan && lanHttp.localHostname) out.push({
|
|
579
|
+
label: "Local name",
|
|
580
|
+
baseUrl: `${lanScheme}://${lanHttp.localHostname}:${lanPort}`,
|
|
581
|
+
kind: "lan-ipv4",
|
|
582
|
+
interfaceKind: "lan",
|
|
583
|
+
plausible: true,
|
|
584
|
+
plausibleReason: "",
|
|
585
|
+
priority: priority++
|
|
586
|
+
});
|
|
587
|
+
if (preferred) emit(preferred, "lan-ipv4", `${formatKind(preferred.kind)} — ${preferred.name}`, `${lanScheme}://${preferred.address}:${lanPort}`, priority++);
|
|
439
588
|
for (const iface of interfaces) {
|
|
440
589
|
if (iface.internal || iface.family !== "IPv4") continue;
|
|
441
590
|
if (iface.kind === "loopback") continue;
|
|
442
591
|
if (preferred && iface.name === preferred.name && iface.address === preferred.address) continue;
|
|
443
592
|
if (iface.address.startsWith("169.254.")) continue;
|
|
444
|
-
emit(iface, "lan-ipv4", `${formatKind(iface.kind)} — ${iface.name}`, `${
|
|
593
|
+
emit(iface, "lan-ipv4", `${formatKind(iface.kind)} — ${iface.name}`, `${lanScheme}://${iface.address}:${lanPort}`, 10 + priority++);
|
|
445
594
|
}
|
|
446
595
|
if (publicHostname) out.push({
|
|
447
596
|
label: "Public tunnel",
|
|
@@ -467,7 +616,7 @@ function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostn
|
|
|
467
616
|
if (iface.internal || iface.family !== "IPv6") continue;
|
|
468
617
|
if (iface.kind === "loopback") continue;
|
|
469
618
|
if (iface.address.startsWith("fe80:")) continue;
|
|
470
|
-
emit(iface, "lan-ipv6", `${formatKind(iface.kind)} — ${iface.name} (IPv6)`, `${
|
|
619
|
+
emit(iface, "lan-ipv6", `${formatKind(iface.kind)} — ${iface.name} (IPv6)`, `${lanScheme}://[${iface.address}]:${lanPort}`, v6prio++);
|
|
471
620
|
}
|
|
472
621
|
}
|
|
473
622
|
if (includeLoopback) out.push({
|
|
@@ -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-Cri60Jd0.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 { X as logDestinationCapability, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { X as logDestinationCapability, yt as BaseAddon } from "../../dist-BpzbLPel.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-Cri60Jd0.js");
|
|
7
7
|
let node_child_process = require("node:child_process");
|
|
8
8
|
let node_util = require("node:util");
|
|
9
9
|
let node_os = require("node:os");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as metricsProviderCapability, Gt as EventCategory, Mt as createEvent, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { $ as metricsProviderCapability, Gt as EventCategory, Mt as createEvent, yt as BaseAddon } from "../../dist-BpzbLPel.mjs";
|
|
2
2
|
import { execFile, execFileSync } from "node:child_process";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
4
|
import * as os from "node:os";
|
|
@@ -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-Cri60Jd0.js");
|
|
7
7
|
let node_child_process = require("node:child_process");
|
|
8
8
|
let node_util = require("node:util");
|
|
9
9
|
let node_os = require("node:os");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import { Gt as EventCategory, L as enumerateInferenceDevices, Pt as emitReadiness, ct as scoreRuntimes, rt as platformProbeCapability, vt as errMsg, yt as BaseAddon } from "../../dist-
|
|
2
|
+
import { Gt as EventCategory, L as enumerateInferenceDevices, Pt as emitReadiness, ct as scoreRuntimes, rt as platformProbeCapability, vt as errMsg, yt as BaseAddon } from "../../dist-BpzbLPel.mjs";
|
|
3
3
|
import { execFile } from "node:child_process";
|
|
4
4
|
import { promisify } from "node:util";
|
|
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-Cri60Jd0.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 { Gt as EventCategory, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { Gt as EventCategory, yt as BaseAddon } from "../../dist-BpzbLPel.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-Cri60Jd0.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 { Ct as DeviceFeature, Gt as EventCategory, M as deriveBatteryPresence, Rt as nodePin, T as batteryCapability, Tt as DeviceType, i as BatteryStatusSchema, mt as streamQualityLabel, ut as snapshotCapability, vt as errMsg, w as bareAddonId, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { Ct as DeviceFeature, Gt as EventCategory, M as deriveBatteryPresence, Rt as nodePin, T as batteryCapability, Tt as DeviceType, i as BatteryStatusSchema, mt as streamQualityLabel, ut as snapshotCapability, vt as errMsg, w as bareAddonId, yt as BaseAddon } from "../../dist-BpzbLPel.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { signExpiringUrl, verifyExpiringUrl } from "@camstack/types/node";
|
|
@@ -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-Cri60Jd0.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 { V as filesystemBrowseCapability, pt as storageProviderCapability, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { V as filesystemBrowseCapability, pt as storageProviderCapability, yt as BaseAddon } from "../../dist-BpzbLPel.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";
|
|
@@ -3,8 +3,8 @@ 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-
|
|
6
|
+
const require_dist = require("../../dist-Cri60Jd0.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-BVAxT5XL.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
10
10
|
let node_module = require("node:module");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as dataStoreProviderCapability, Bt as parseJsonUnknown, _t as vectorStoreCapability, f as RUNTIME_DEFAULTS, gt as vectorDimFromBase64, j as decodeVectorBase64, kt as asJsonObject, vt as errMsg, w as bareAddonId, yt as BaseAddon } from "../../dist-
|
|
2
|
-
import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys-
|
|
1
|
+
import { A as dataStoreProviderCapability, Bt as parseJsonUnknown, _t as vectorStoreCapability, f as RUNTIME_DEFAULTS, gt as vectorDimFromBase64, j as decodeVectorBase64, kt as asJsonObject, vt as errMsg, w as bareAddonId, yt as BaseAddon } from "../../dist-BpzbLPel.mjs";
|
|
2
|
+
import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys-SrxMH3OT.mjs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { statSync } 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-Cri60Jd0.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dt as storageCapability, ft as storageMigrationCapability, g as StorageMigrationJobSchema, h as StorageLocationTypeSchema, lt as settingsStoreCapability, yt as BaseAddon, zt as parseJsonObject } from "../../dist-
|
|
1
|
+
import { dt as storageCapability, ft as storageMigrationCapability, g as StorageMigrationJobSchema, h as StorageLocationTypeSchema, lt as settingsStoreCapability, yt as BaseAddon, zt as parseJsonObject } from "../../dist-BpzbLPel.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as fs from "node:fs/promises";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -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-Cri60Jd0.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 { It as hydrateSchema, vt as errMsg, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { It as hydrateSchema, vt as errMsg, yt as BaseAddon } from "../../dist-BpzbLPel.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-Cri60Jd0.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 { X as logDestinationCapability, yt as BaseAddon } from "../../dist-
|
|
1
|
+
import { X as logDestinationCapability, yt as BaseAddon } from "../../dist-BpzbLPel.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";
|