@camstack/system 1.2.433 → 1.2.435
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/{agent-https-DtRU9A7I.mjs → agent-https-B8lKYVtU.mjs} +34 -6
- package/dist/{agent-https-CHZTxK-q.js → agent-https-BZIwS4xF.js} +34 -6
- package/dist/auth/device-ca.d.ts +0 -10
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +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 +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
- package/dist/builtins/device-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +3 -3
- package/dist/builtins/keychain/index.mjs +3 -3
- 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 +9 -4
- package/dist/builtins/local-auth/local-auth.addon.mjs +9 -4
- package/dist/builtins/local-network/address-book.d.ts +13 -0
- package/dist/builtins/local-network/local-network.addon.d.ts +4 -2
- package/dist/builtins/local-network/local-network.addon.js +78 -22
- package/dist/builtins/local-network/local-network.addon.mjs +78 -22
- 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/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.js +23 -8
- package/dist/builtins/system-config/system-config.addon.mjs +23 -8
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-BgJWQMjr.js → composition-sources-Cm42mgbv.js} +1 -1
- package/dist/{composition-sources-8-cpAt1c.mjs → composition-sources-_7W2Ly9s.mjs} +1 -1
- package/dist/{constants-Ah3T_KAW.js → constants-DL87WgeN.js} +1 -1
- package/dist/{constants-Cg9ve13y.mjs → constants-DoiTA134.mjs} +1 -1
- package/dist/{device-ca-DUrcTW5h.mjs → device-ca-B6YJZus6.mjs} +17 -6
- package/dist/{device-ca-NNP4Jz0P.js → device-ca-WXuKc8AX.js} +17 -6
- package/dist/{dist-DJnlnL7P.mjs → dist-Bz4_y8Xy.mjs} +80 -11
- package/dist/{dist-C6Yvfhpq.js → dist-CnUtkSwN.js} +91 -10
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/{hub-mdns-ciao-B50jAU5C.js → hub-mdns-ciao-CBLvq2oj.js} +2 -2
- package/dist/{hub-mdns-ciao-8_Ed1Za5.mjs → hub-mdns-ciao-DJRwtlA8.mjs} +2 -2
- package/dist/index.js +7 -7
- package/dist/index.mjs +7 -7
- package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +0 -9
- package/dist/{lib-B_R6sPC3.mjs → lib-BeGzVQcd.mjs} +1 -1
- package/dist/{lib-DOJ5yyWA.js → lib-NNxHSOIE.js} +1 -1
- package/dist/{restore-archive-DqPaRjjY.js → restore-archive-BNoFLAg8.js} +1 -1
- package/dist/{restore-archive-C3_rzOCx.mjs → restore-archive-DJYuznWP.mjs} +1 -1
- package/dist/{retired-settings-keys-CAWHWDwy.mjs → retired-settings-keys-9nA85bwT.mjs} +1 -1
- package/dist/{retired-settings-keys-DJBQkZok.js → retired-settings-keys-CO3RqsDw.js} +1 -1
- package/dist/tls/cert-backdate.d.ts +10 -0
- package/dist/tls/cert-issue.d.ts +0 -20
- package/dist/{wal-maintenance-CPLvZbzA.js → wal-maintenance-D3gwRj1B.js} +0 -0
- package/dist/{wal-maintenance-Bc38yI3r.mjs → wal-maintenance-DLrbapzi.mjs} +0 -0
- package/dist/{x509.es-CAjSsrkk.mjs → x509.es-CDvj67p1.mjs} +14 -1
- package/dist/{x509.es-Dzl0BbmG.js → x509.es-r7Ht1thA.js} +19 -0
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { Jr as isSecretClear, Rr as customAction, Wr as hydrateSchema, Yr as isSecretMarker, Zr as makeSecretMarker, br as errMsg, ci as secretTreeFromSchema, fi as transformSecretWrite, xr as BaseAddon, zr as defineCustomActions } from "../../dist-Bz4_y8Xy.mjs";
|
|
3
3
|
import { t as require_safe_buffer } from "../../safe-buffer-B1OjL1I9.mjs";
|
|
4
|
-
import { a as KeyUsagesExtension, c as Pkcs10CertificateRequestGenerator, d as X509Certificate$1, f as X509CertificateGenerator, i as KeyUsageFlags, n as BasicConstraintsExtension, o as PemConverter, p as cryptoProvider, r as ExtendedKeyUsageExtension, s as Pkcs10CertificateRequest, t as AuthorityKeyIdentifierExtension, u as SubjectKeyIdentifierExtension } from "../../x509.es-
|
|
5
|
-
import { A as AgentHttpsNames, M as setProcessAgentHttpsNames, O as AGENT_HTTPS_NAMES_COLLECTION, d as isPrivateAddress, j as getProcessAgentHttpsNames, k as AGENT_HTTPS_NAMES_COLUMNS, u as isLocalOnlyHostname } from "../../agent-https-
|
|
6
|
-
import { a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, c as MESH_JOIN_TOKEN_MAX_TTL_SEC, d as CLUSTER_SECRET_REF, i as MESH_CA_FIELD, l as SERVER_AUTH_OID, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, r as MESH_CA_COMMON_NAME, s as MESH_CA_VALIDITY_DAYS, t as CLIENT_AUTH_OID, v as hashClusterSecret } from "../../constants-
|
|
4
|
+
import { a as KeyUsagesExtension, c as Pkcs10CertificateRequestGenerator, d as X509Certificate$1, f as X509CertificateGenerator, g as backdatedNotBefore, i as KeyUsageFlags, n as BasicConstraintsExtension, o as PemConverter, p as cryptoProvider, r as ExtendedKeyUsageExtension, s as Pkcs10CertificateRequest, t as AuthorityKeyIdentifierExtension, u as SubjectKeyIdentifierExtension } from "../../x509.es-CDvj67p1.mjs";
|
|
5
|
+
import { A as AgentHttpsNames, M as setProcessAgentHttpsNames, O as AGENT_HTTPS_NAMES_COLLECTION, d as isPrivateAddress, j as getProcessAgentHttpsNames, k as AGENT_HTTPS_NAMES_COLUMNS, u as isLocalOnlyHostname } from "../../agent-https-B8lKYVtU.mjs";
|
|
6
|
+
import { a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, c as MESH_JOIN_TOKEN_MAX_TTL_SEC, d as CLUSTER_SECRET_REF, i as MESH_CA_FIELD, l as SERVER_AUTH_OID, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, r as MESH_CA_COMMON_NAME, s as MESH_CA_VALIDITY_DAYS, t as CLIENT_AUTH_OID, v as hashClusterSecret } from "../../constants-DoiTA134.mjs";
|
|
7
7
|
import { t as require_src } from "../../src-hG4grMU4.mjs";
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import { X509Certificate, createHash, createHmac, createPrivateKey, randomBytes, randomInt, sign, timingSafeEqual, verify, webcrypto } from "node:crypto";
|
|
@@ -399,6 +399,15 @@ function parsePayloadEs256(value) {
|
|
|
399
399
|
}
|
|
400
400
|
//#endregion
|
|
401
401
|
//#region src/kernel/moleculer/mesh-mtls/mesh-ca.ts
|
|
402
|
+
/**
|
|
403
|
+
* Hub mesh CA — EC P-256, key in the keychain, cert in `cluster.meshCa`.
|
|
404
|
+
*
|
|
405
|
+
* Distinct from the HTTPS local CA (`tls/cert-issue.ts`, RSA): the mesh CA
|
|
406
|
+
* signs node leaves (CN = nodeID) and join-token JWS (ES256). Issuance uses
|
|
407
|
+
* `@peculiar/x509` over WebCrypto — same library the HTTPS path already uses
|
|
408
|
+
* (installed `1.14.3`; registry latest at adoption time was `2.1.0` — stay on
|
|
409
|
+
* the pinned range already shipping).
|
|
410
|
+
*/
|
|
402
411
|
cryptoProvider.set(webcrypto);
|
|
403
412
|
var MS_PER_DAY = 864e5;
|
|
404
413
|
/** Key generation — EC P-256 (plan). WebCrypto DOM names are not in @types/node. */
|
|
@@ -449,7 +458,7 @@ async function generateMeshCa(now = /* @__PURE__ */ new Date()) {
|
|
|
449
458
|
const cert = await X509CertificateGenerator.createSelfSigned({
|
|
450
459
|
serialNumber: freshSerial(),
|
|
451
460
|
name: `CN=${MESH_CA_COMMON_NAME}`,
|
|
452
|
-
notBefore: now,
|
|
461
|
+
notBefore: backdatedNotBefore(now),
|
|
453
462
|
notAfter: new Date(now.getTime() + MESH_CA_VALIDITY_DAYS * MS_PER_DAY),
|
|
454
463
|
keys,
|
|
455
464
|
signingAlgorithm: MESH_SIGNING_ALGORITHM,
|
|
@@ -500,7 +509,7 @@ async function issueMeshLeafFromCsr(ca, csrPem, opts = {}) {
|
|
|
500
509
|
serialNumber,
|
|
501
510
|
subject: `CN=${cn}`,
|
|
502
511
|
issuer: ca.cert.subject,
|
|
503
|
-
notBefore: now,
|
|
512
|
+
notBefore: backdatedNotBefore(now),
|
|
504
513
|
notAfter,
|
|
505
514
|
publicKey: csr.publicKey,
|
|
506
515
|
signingKey: ca.privateKey,
|
|
@@ -88429,12 +88438,18 @@ function isHttpUrl(value) {
|
|
|
88429
88438
|
return false;
|
|
88430
88439
|
}
|
|
88431
88440
|
}
|
|
88432
|
-
/**
|
|
88441
|
+
/**
|
|
88442
|
+
* Clock skew tolerated between the hub that minted a CA and this agent. X.509 dates have
|
|
88443
|
+
* one-second resolution and a fresh CA's notBefore is the hub's "now", so an agent whose clock
|
|
88444
|
+
* is even a moment behind would otherwise refuse a brand-new CA. Same bound as the offer `iat`.
|
|
88445
|
+
*/
|
|
88446
|
+
var CA_CLOCK_SKEW_MS = 6e4;
|
|
88447
|
+
/** The hub CA must be a self-signed CA certificate, valid now (give or take the skew). */
|
|
88433
88448
|
function readCaCertificate(pem, nowMs) {
|
|
88434
88449
|
try {
|
|
88435
88450
|
const cert = new X509Certificate(pem);
|
|
88436
88451
|
if (!cert.ca || !cert.verify(cert.publicKey)) return null;
|
|
88437
|
-
if (Date.parse(cert.validTo) <= nowMs || Date.parse(cert.validFrom) > nowMs) return null;
|
|
88452
|
+
if (Date.parse(cert.validTo) <= nowMs || Date.parse(cert.validFrom) > nowMs + CA_CLOCK_SKEW_MS) return null;
|
|
88438
88453
|
return cert;
|
|
88439
88454
|
} catch {
|
|
88440
88455
|
return null;
|
|
@@ -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-CnUtkSwN.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 { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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 {
|
|
1
|
+
import { br as errMsg, pr as compositionSourceKey } from "./dist-Bz4_y8Xy.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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as DEVICE_SAN_USER_PREFIX,
|
|
2
|
-
import { a as KeyUsagesExtension, d as X509Certificate$1, f as X509CertificateGenerator, i as KeyUsageFlags, l as SubjectAlternativeNameExtension, n as BasicConstraintsExtension, o as PemConverter, p as cryptoProvider, r as ExtendedKeyUsageExtension, t as AuthorityKeyIdentifierExtension, u as SubjectKeyIdentifierExtension } from "./x509.es-
|
|
1
|
+
import { E as DEVICE_SAN_USER_PREFIX, Pr as buildSecretRef, T as DEVICE_SAN_CREDENTIAL_PREFIX } from "./dist-Bz4_y8Xy.mjs";
|
|
2
|
+
import { a as KeyUsagesExtension, d as X509Certificate$1, f as X509CertificateGenerator, g as backdatedNotBefore, i as KeyUsageFlags, l as SubjectAlternativeNameExtension, n as BasicConstraintsExtension, o as PemConverter, p as cryptoProvider, r as ExtendedKeyUsageExtension, t as AuthorityKeyIdentifierExtension, u as SubjectKeyIdentifierExtension } from "./x509.es-CDvj67p1.mjs";
|
|
3
3
|
import { X509Certificate, createPublicKey, randomBytes, verify, webcrypto } from "node:crypto";
|
|
4
4
|
//#region src/auth/jwt-signing-key.ts
|
|
5
5
|
/**
|
|
@@ -126,6 +126,16 @@ async function loadJwtSigningKey(deps) {
|
|
|
126
126
|
}
|
|
127
127
|
//#endregion
|
|
128
128
|
//#region src/auth/device-ca.ts
|
|
129
|
+
/**
|
|
130
|
+
* Device CA (D855) — the THIRD certificate authority, distinct from the HTTPS
|
|
131
|
+
* local CA (`tls/cert-issue.ts`, RSA) and the mesh CA
|
|
132
|
+
* (`kernel/moleculer/mesh-mtls/mesh-ca.ts`). EC P-256, key in the keychain
|
|
133
|
+
* (owner `system`), certificate persisted like `cluster.meshCa`.
|
|
134
|
+
*
|
|
135
|
+
* It signs ONE kind of leaf: a device credential. The device generated the key
|
|
136
|
+
* pair; the hub only ever sees the public half (an SPKI). Same library and
|
|
137
|
+
* WebCrypto path as the other two CAs, same pinned `@peculiar/x509`.
|
|
138
|
+
*/
|
|
129
139
|
cryptoProvider.set(webcrypto);
|
|
130
140
|
var MS_PER_DAY = 864e5;
|
|
131
141
|
var CLIENT_AUTH_OID = "1.3.6.1.5.5.7.3.2";
|
|
@@ -164,7 +174,7 @@ async function generateDeviceCa(now = /* @__PURE__ */ new Date()) {
|
|
|
164
174
|
const cert = await X509CertificateGenerator.createSelfSigned({
|
|
165
175
|
serialNumber: freshSerial(),
|
|
166
176
|
name: `CN=${DEVICE_CA_COMMON_NAME}`,
|
|
167
|
-
notBefore: now,
|
|
177
|
+
notBefore: backdatedNotBefore(now),
|
|
168
178
|
notAfter: new Date(now.getTime() + DEVICE_CA_VALIDITY_DAYS * MS_PER_DAY),
|
|
169
179
|
keys,
|
|
170
180
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
@@ -204,7 +214,7 @@ async function rebuildDeviceCaCertificate(keyPem) {
|
|
|
204
214
|
const cert = await X509CertificateGenerator.createSelfSigned({
|
|
205
215
|
serialNumber: freshSerial(),
|
|
206
216
|
name: `CN=${DEVICE_CA_COMMON_NAME}`,
|
|
207
|
-
notBefore: now,
|
|
217
|
+
notBefore: backdatedNotBefore(now),
|
|
208
218
|
notAfter: new Date(now.getTime() + DEVICE_CA_VALIDITY_DAYS * MS_PER_DAY),
|
|
209
219
|
keys: {
|
|
210
220
|
privateKey,
|
|
@@ -234,8 +244,9 @@ async function importDevicePublicKey(spki) {
|
|
|
234
244
|
*/
|
|
235
245
|
async function issueDeviceLeaf(ca, input) {
|
|
236
246
|
const publicKey = await importDevicePublicKey(input.publicKeySpki);
|
|
237
|
-
const
|
|
238
|
-
const
|
|
247
|
+
const issuedAt = input.now ?? /* @__PURE__ */ new Date();
|
|
248
|
+
const notBefore = backdatedNotBefore(issuedAt);
|
|
249
|
+
const notAfter = new Date(issuedAt.getTime() + (input.validDays ?? 365) * MS_PER_DAY);
|
|
239
250
|
const serialNumber = freshSerial();
|
|
240
251
|
const extensions = [
|
|
241
252
|
new BasicConstraintsExtension(false, void 0, true),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_dist = require("./dist-
|
|
2
|
-
const require_x509_es = require("./x509.es-
|
|
1
|
+
const require_dist = require("./dist-CnUtkSwN.js");
|
|
2
|
+
const require_x509_es = require("./x509.es-r7Ht1thA.js");
|
|
3
3
|
let node_crypto = require("node:crypto");
|
|
4
4
|
//#region src/auth/jwt-signing-key.ts
|
|
5
5
|
/**
|
|
@@ -126,6 +126,16 @@ async function loadJwtSigningKey(deps) {
|
|
|
126
126
|
}
|
|
127
127
|
//#endregion
|
|
128
128
|
//#region src/auth/device-ca.ts
|
|
129
|
+
/**
|
|
130
|
+
* Device CA (D855) — the THIRD certificate authority, distinct from the HTTPS
|
|
131
|
+
* local CA (`tls/cert-issue.ts`, RSA) and the mesh CA
|
|
132
|
+
* (`kernel/moleculer/mesh-mtls/mesh-ca.ts`). EC P-256, key in the keychain
|
|
133
|
+
* (owner `system`), certificate persisted like `cluster.meshCa`.
|
|
134
|
+
*
|
|
135
|
+
* It signs ONE kind of leaf: a device credential. The device generated the key
|
|
136
|
+
* pair; the hub only ever sees the public half (an SPKI). Same library and
|
|
137
|
+
* WebCrypto path as the other two CAs, same pinned `@peculiar/x509`.
|
|
138
|
+
*/
|
|
129
139
|
require_x509_es.cryptoProvider.set(node_crypto.webcrypto);
|
|
130
140
|
var MS_PER_DAY = 864e5;
|
|
131
141
|
var CLIENT_AUTH_OID = "1.3.6.1.5.5.7.3.2";
|
|
@@ -164,7 +174,7 @@ async function generateDeviceCa(now = /* @__PURE__ */ new Date()) {
|
|
|
164
174
|
const cert = await require_x509_es.X509CertificateGenerator.createSelfSigned({
|
|
165
175
|
serialNumber: freshSerial(),
|
|
166
176
|
name: `CN=${DEVICE_CA_COMMON_NAME}`,
|
|
167
|
-
notBefore: now,
|
|
177
|
+
notBefore: require_x509_es.backdatedNotBefore(now),
|
|
168
178
|
notAfter: new Date(now.getTime() + DEVICE_CA_VALIDITY_DAYS * MS_PER_DAY),
|
|
169
179
|
keys,
|
|
170
180
|
signingAlgorithm: SIGNING_ALGORITHM,
|
|
@@ -204,7 +214,7 @@ async function rebuildDeviceCaCertificate(keyPem) {
|
|
|
204
214
|
const cert = await require_x509_es.X509CertificateGenerator.createSelfSigned({
|
|
205
215
|
serialNumber: freshSerial(),
|
|
206
216
|
name: `CN=${DEVICE_CA_COMMON_NAME}`,
|
|
207
|
-
notBefore: now,
|
|
217
|
+
notBefore: require_x509_es.backdatedNotBefore(now),
|
|
208
218
|
notAfter: new Date(now.getTime() + DEVICE_CA_VALIDITY_DAYS * MS_PER_DAY),
|
|
209
219
|
keys: {
|
|
210
220
|
privateKey,
|
|
@@ -234,8 +244,9 @@ async function importDevicePublicKey(spki) {
|
|
|
234
244
|
*/
|
|
235
245
|
async function issueDeviceLeaf(ca, input) {
|
|
236
246
|
const publicKey = await importDevicePublicKey(input.publicKeySpki);
|
|
237
|
-
const
|
|
238
|
-
const
|
|
247
|
+
const issuedAt = input.now ?? /* @__PURE__ */ new Date();
|
|
248
|
+
const notBefore = require_x509_es.backdatedNotBefore(issuedAt);
|
|
249
|
+
const notAfter = new Date(issuedAt.getTime() + (input.validDays ?? 365) * MS_PER_DAY);
|
|
239
250
|
const serialNumber = freshSerial();
|
|
240
251
|
const extensions = [
|
|
241
252
|
new require_x509_es.BasicConstraintsExtension(false, void 0, true),
|
|
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
718
718
|
return EventCategory;
|
|
719
719
|
}({});
|
|
720
720
|
//#endregion
|
|
721
|
-
//#region ../types/dist/sleep
|
|
721
|
+
//#region ../types/dist/sleep-DAX0-2v9.mjs
|
|
722
722
|
/**
|
|
723
723
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
724
724
|
* window to float samples (D455).
|
|
@@ -9768,6 +9768,12 @@ function scopesAllowDeviceCap(scopes, access) {
|
|
|
9768
9768
|
function scopesAllowAddon(scopes, addonId, access) {
|
|
9769
9769
|
return scopes.some((s) => s.type === "addon" && s.target === addonId && s.access.includes(access));
|
|
9770
9770
|
}
|
|
9771
|
+
z.enum(["new-session", "step-up"]);
|
|
9772
|
+
/** How a native app starts one login method (D858), as `auth.listLoginMethods` reports it. */
|
|
9773
|
+
var AppLoginPathSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("native") }), z.object({
|
|
9774
|
+
kind: z.literal("browser"),
|
|
9775
|
+
startPath: z.string().startsWith("/")
|
|
9776
|
+
})]);
|
|
9771
9777
|
/**
|
|
9772
9778
|
* Device certificates (D855) — the wire contract shared by the hub, the admin
|
|
9773
9779
|
* UI and the native viewer.
|
|
@@ -9966,7 +9972,9 @@ z.object({
|
|
|
9966
9972
|
signature: z.literal(DEVICE_CERT_SIGNATURE),
|
|
9967
9973
|
messageVersion: z.literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
|
|
9968
9974
|
/** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
|
|
9969
|
-
clients: z.array(z.enum(["native", "web"]))
|
|
9975
|
+
clients: z.array(z.enum(["native", "web"])),
|
|
9976
|
+
/** The app executes it itself, silently (D858). */
|
|
9977
|
+
app: AppLoginPathSchema.nullable()
|
|
9970
9978
|
});
|
|
9971
9979
|
/**
|
|
9972
9980
|
* What an expression's named bindings READ from.
|
|
@@ -39968,10 +39976,14 @@ function isLanIpv4Literal(endpoint) {
|
|
|
39968
39976
|
const host = hostnameOf(endpoint.baseUrl);
|
|
39969
39977
|
return host !== null && IPV4_LITERAL.test(host);
|
|
39970
39978
|
}
|
|
39979
|
+
function isUnstable(endpoint) {
|
|
39980
|
+
return endpoint.stable === false;
|
|
39981
|
+
}
|
|
39971
39982
|
/** Lower = better; `null` = never this role's AUTOMATIC answer. */
|
|
39972
39983
|
function autoRankFor(role, endpoint) {
|
|
39973
39984
|
if (endpoint.kind === "loopback" || endpoint.kind === "app-link" || endpoint.kind === "custom") return null;
|
|
39974
39985
|
if (hostnameOf(endpoint.baseUrl) === null) return null;
|
|
39986
|
+
if (isUnstable(endpoint)) return null;
|
|
39975
39987
|
if (role === "internal") {
|
|
39976
39988
|
if (isLanIpv4Literal(endpoint)) return 0;
|
|
39977
39989
|
if (isPlausibleLan(endpoint)) return 1;
|
|
@@ -40126,6 +40138,7 @@ function resolveNotificationTapAddress(flags) {
|
|
|
40126
40138
|
}
|
|
40127
40139
|
/** AUTO app connections: LAN IPv4 + the public tunnel. Never IPv6, mesh, loopback or custom. */
|
|
40128
40140
|
function isDefaultAppConnectionEndpoint(endpoint) {
|
|
40141
|
+
if (isUnstable(endpoint)) return false;
|
|
40129
40142
|
if (endpoint.kind === "lan-ipv4") return true;
|
|
40130
40143
|
return endpoint.kind === "public" && endpoint.interfaceKind === "public";
|
|
40131
40144
|
}
|
|
@@ -41167,7 +41180,13 @@ var RedirectLoginMethodSchema = z.object({
|
|
|
41167
41180
|
* `beginExternalLink` offer exactly the redirect methods that set this,
|
|
41168
41181
|
* whatever their id. Absent / false — a login button only.
|
|
41169
41182
|
*/
|
|
41170
|
-
linkable: z.boolean().optional()
|
|
41183
|
+
linkable: z.boolean().optional(),
|
|
41184
|
+
/**
|
|
41185
|
+
* How a NATIVE app starts this method (D858): `{ kind: 'browser', startPath }`
|
|
41186
|
+
* when the route understands the app flow query (`app=1&code_challenge=…`),
|
|
41187
|
+
* `null`/absent when there is no app path - the app hides the method.
|
|
41188
|
+
*/
|
|
41189
|
+
app: AppLoginPathSchema.nullable().optional()
|
|
41171
41190
|
});
|
|
41172
41191
|
/**
|
|
41173
41192
|
* A Module-Federation widget the login page mounts for an in-page
|
|
@@ -41186,7 +41205,9 @@ var WidgetLoginMethodSchema = z.object({
|
|
|
41186
41205
|
bundle: z.string(),
|
|
41187
41206
|
/** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
|
|
41188
41207
|
remote: WidgetRemoteSchema,
|
|
41189
|
-
stage: LoginStageEnum
|
|
41208
|
+
stage: LoginStageEnum,
|
|
41209
|
+
/** Widgets are web ceremonies: no native app path (D858). Absent reads as `null`. */
|
|
41210
|
+
app: AppLoginPathSchema.nullable().optional()
|
|
41190
41211
|
});
|
|
41191
41212
|
/**
|
|
41192
41213
|
* A declarative WebAuthn ceremony the shell renders natively (no remote
|
|
@@ -41204,7 +41225,9 @@ var PasskeyLoginMethodSchema = z.object({
|
|
|
41204
41225
|
/** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
|
|
41205
41226
|
rpId: z.string(),
|
|
41206
41227
|
/** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
|
|
41207
|
-
origin: z.string().nullable()
|
|
41228
|
+
origin: z.string().nullable(),
|
|
41229
|
+
/** Set by the hub for the primary arm; a second-factor passkey has no app path (D858). */
|
|
41230
|
+
app: AppLoginPathSchema.nullable().optional()
|
|
41208
41231
|
});
|
|
41209
41232
|
/** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
|
|
41210
41233
|
var LoginMethodContributionSchema = z.discriminatedUnion("kind", [
|
|
@@ -41842,7 +41865,25 @@ var NetworkEndpointSchema = z.object({
|
|
|
41842
41865
|
url: z.string(),
|
|
41843
41866
|
hostname: z.string(),
|
|
41844
41867
|
port: z.number(),
|
|
41845
|
-
protocol: z.enum(["http", "https"])
|
|
41868
|
+
protocol: z.enum(["http", "https"]),
|
|
41869
|
+
/**
|
|
41870
|
+
* Whether this address survives a restart of its provider. `false` = it is
|
|
41871
|
+
* re-issued every time (a Quick tunnel's random `*.trycloudflare.com`); the
|
|
41872
|
+
* hub never selects such an address AUTOMATICALLY for a role (D860), though
|
|
41873
|
+
* it stays visible and an operator may still flag it. Absent = stable: every
|
|
41874
|
+
* provider except a Quick tunnel owns a name that does not change.
|
|
41875
|
+
*/
|
|
41876
|
+
stable: z.boolean().optional()
|
|
41877
|
+
});
|
|
41878
|
+
/**
|
|
41879
|
+
* `data` of a `network.tunnel.started` event — what `local-network` (which
|
|
41880
|
+
* tails the bus and cannot import a provider) learns about the new address.
|
|
41881
|
+
*/
|
|
41882
|
+
var NetworkTunnelStartedDataSchema = z.object({
|
|
41883
|
+
url: z.string(),
|
|
41884
|
+
/** Mirrors {@link NetworkEndpointSchema} `stable`; absent = stable. */
|
|
41885
|
+
stable: z.boolean().optional(),
|
|
41886
|
+
updated: z.boolean().optional()
|
|
41846
41887
|
});
|
|
41847
41888
|
var NetworkAccessStatusSchema = z.object({
|
|
41848
41889
|
connected: z.boolean(),
|
|
@@ -54140,7 +54181,20 @@ var SsoBridgeClaimsSchema = z.object({
|
|
|
54140
54181
|
* request to present the matching cookie — a login bridge is useless in
|
|
54141
54182
|
* any other browser.
|
|
54142
54183
|
*/
|
|
54143
|
-
browserBinding: z.string().optional()
|
|
54184
|
+
browserBinding: z.string().optional(),
|
|
54185
|
+
/**
|
|
54186
|
+
* The native app that started this sign-in (D858): its PKCE challenge,
|
|
54187
|
+
* `state`, purpose and allow-listed return URL, copied from the server-side
|
|
54188
|
+
* pending OIDC state. A bridge carrying it is finished ONLY at
|
|
54189
|
+
* `/api/auth/sso/finish-app` (which mints a handoff code, never a web
|
|
54190
|
+
* session); `/api/auth/sso/finish` refuses it.
|
|
54191
|
+
*/
|
|
54192
|
+
app: z.object({
|
|
54193
|
+
codeChallenge: z.string(),
|
|
54194
|
+
state: z.string(),
|
|
54195
|
+
purpose: z.enum(["new-session", "step-up"]),
|
|
54196
|
+
redirect: z.string()
|
|
54197
|
+
}).optional()
|
|
54144
54198
|
});
|
|
54145
54199
|
var ssoBridgeCapability = {
|
|
54146
54200
|
name: "sso-bridge",
|
|
@@ -57125,7 +57179,12 @@ var SearchResultSchema = z.object({
|
|
|
57125
57179
|
publishedAt: z.string(),
|
|
57126
57180
|
author: z.string(),
|
|
57127
57181
|
installed: z.boolean(),
|
|
57128
|
-
installedVersion: z.string().optional()
|
|
57182
|
+
installedVersion: z.string().optional(),
|
|
57183
|
+
/**
|
|
57184
|
+
* Capability names the package's addons declare (from its published
|
|
57185
|
+
* manifest). `null` = the registry lookup failed — unknown, never `[]` (D393).
|
|
57186
|
+
*/
|
|
57187
|
+
capabilities: z.array(z.string()).readonly().nullable()
|
|
57129
57188
|
});
|
|
57130
57189
|
var AutoUpdateSettingsSchema = z.object({
|
|
57131
57190
|
channel: ChannelSchema,
|
|
@@ -57344,7 +57403,11 @@ var addonsCapability = {
|
|
|
57344
57403
|
kind: "mutation",
|
|
57345
57404
|
auth: "admin"
|
|
57346
57405
|
}),
|
|
57347
|
-
searchAvailable: method(z.object({
|
|
57406
|
+
searchAvailable: method(z.object({
|
|
57407
|
+
query: z.string().optional(),
|
|
57408
|
+
/** Only packages whose addons declare this capability (unknown ones excluded). */
|
|
57409
|
+
capability: z.string().optional()
|
|
57410
|
+
}), z.array(SearchResultSchema)),
|
|
57348
57411
|
/**
|
|
57349
57412
|
* Available package updates for a node. `nodeId` omitted (or
|
|
57350
57413
|
* `'hub'`) checks the hub's own installed packages; an agent
|
|
@@ -61451,7 +61514,13 @@ var ConnectionEndpointSchema = z.object({
|
|
|
61451
61514
|
* calls so the client can sort even if the cap returns a new
|
|
61452
61515
|
* ordering between polls.
|
|
61453
61516
|
*/
|
|
61454
|
-
priority: z.number()
|
|
61517
|
+
priority: z.number(),
|
|
61518
|
+
/**
|
|
61519
|
+
* `false` = the address changes on its own (a Quick tunnel, re-issued on
|
|
61520
|
+
* every respawn). Automatic role resolution skips it (D860); an explicit
|
|
61521
|
+
* operator flag still honours it. Absent = stable.
|
|
61522
|
+
*/
|
|
61523
|
+
stable: z.boolean().optional()
|
|
61455
61524
|
});
|
|
61456
61525
|
/**
|
|
61457
61526
|
* Where the advertised local port came from. Ordered most → least
|
|
@@ -85514,4 +85583,4 @@ function enumerateInferenceDevices(hw) {
|
|
|
85514
85583
|
return out;
|
|
85515
85584
|
}
|
|
85516
85585
|
//#endregion
|
|
85517
|
-
export {
|
|
85586
|
+
export { addonSettingsCapability as $, validateComposition as $n, normalizeSecretOwner as $r, isObjectInput as $t, FieldClaimModeSchema as A, resolveAppConnections as An, WELL_KNOWN_TAB_MAP as Ar, deviceCredentialsCapability as At, NetworkTunnelStartedDataSchema as B, scopesAllowDeviceCap as Bn, emitDownForOwnedCaps as Br, expandContainer as Bt, DEVICE_ENROLLMENT_TTL_MS as C, pickAppLinkHub as Cn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as Cr, dataStoreProviderCapability as Ct, DeclaredDevices as D, ptzAutotrackCapability as Dn, ReadinessRegistry as Dr, defineExtensionSlotProvider as Dt, DEVICE_SAN_USER_PREFIX as E, procedureAuthKey as En, RUNTIME_DEFAULTS as Er, decodeVectorBase64 as Et, LOG_LEVEL_RANK as F, resolveLocationMode as Fn, collectSecretConfigKeys as Fr, enumerateInferenceDevices as Ft, ScopedTokenSchema as G, storageCapability as Gn, isDeviceConfigCap as Gr, formatDeviceRevoker as Gt, RecordingStatusSchema as H, settingsStoreCapability as Hn, expandCapMethods as Hr, extractNestedAddonId as Ht, LegacyStorageLocationDefaultSchema as I, resolveMethodAuth as In, collectZodSecretPaths as Ir, enumerateItemArrayFields as It, StorageLocationModeSchema as J, storageProviderCapability as Jn, isSecretClear as Jr, isAppLinkBase as Jt, SsoBridgeClaimsSchema as K, storageMigrationCapability as Kn, isEvent as Kr, formatMinutes as Kt, METHOD_ACCESS_MAP as L, resolveNotificationTapAddress as Ln, createEvent as Lr, enumerateSchemaFields as Lt, HUB_MDNS_SERVICE_TYPE as M, resolveCoreBlockEntry as Mn, asNumber as Mr, deviceManagerCapability as Mt, HUB_MDNS_TXT_KEYS as N, resolveCoreBlockFiles as Nn, asString$1 as Nr, deviceStateCapability as Nt, DeviceStatusSchema as O, reducePoints as On, ReadinessTimeoutError as Or, deriveBatteryPresence as Ot, KEYCHAIN_RESET_TRIGGER_ACTOR as P, resolveHubAddressRoles as Pn, buildSecretRef as Pr, deviceStatusCapability as Pt, addonPagesCapability as Q, userManagementCapability as Qn, nodePin as Qr, isLocationEnabled as Qt, MINUTES_PER_DAY as R, runtimeStatePolicyFor as Rn, customAction as Rr, evaluateCompositionField as Rt, DERIVED_CAMERA_SILENCED_CAP_NAMES as S, parseStreamParamsFormPatch as Sn, DATAPLANE_SECRET_HEADER as Sr, createDeviceExtensionProvider as St, DEVICE_SAN_CREDENTIAL_PREFIX as T, platformProbeCapability as Tn, REDACTED_SECRET as Tr, declarationOwnerNodeId as Tt, STORAGE_ACCESS_FALLBACK as U, siteZoneKey as Un, formatSecretScope as Ur, filesystemBrowseCapability as Ut, RECORDING_SOURCE_CAMSTACK_ADDON as V, scoreRuntimes as Vn, emitReadiness as Vr, expressionContainsBuiltinCall as Vt, STREAM_PROFILE_META as W, snapshotCapability as Wn, hydrateSchema as Wr, foldSnapshotByFunction as Wt, StorageMigrationJobSchema as X, streamQualityLabel as Xn, isSecretMarkerLike as Xr, isCollectionArrayMethod as Xt, StorageLocationTypeSchema as Y, streamCatalogCapability as Yn, isSecretMarker as Yr, isArrayOutputSchema as Yt, UserRecordSchema as Z, supportedRuntimes as Zn, makeSecretMarker as Zr, isDefaultAppConnectionEndpoint as Zt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as _, motionCapability as _n, DeviceFeature as _r, coreBlockAddonId as _t, ApiKeyRecordSchema as a, resolveSecretMarkers as ai, legacyModeOf as an, COMPOSER_ADDON_ID as ar, batteryCapability as at, DATA_STORE_DATABASES as b, objectInputDeclaresAddonId as bn, errMsg as br, coreBlockSourceKind as bt, CAMERA_SWITCH_ORDER as c, secretTreeFromSchema as ci, locationIconKey as cn, composedDeviceRef as cr, buildDeviceSignatureMessage as ct, COMPOSED_ITEM_FIXED_FIELDS as d, toSecretFieldView as di, looseSchema as dn, compositionItemFieldPath as dr, cameraGridLayoutCapability as dt, parseJsonObject as ei, isVoidInput as en, validateCustomAddress as er, addonWidgetsCapability as et, COMPOSER_RUNNER_ID as f, transformSecretWrite as fi, mayReadLocation as fn, compositionSliceKey as fr, canonicalIconKey as ft, CoreBlockSchema as g, modeMayWrite as gn, toExpressionValue as gr, compositionSourceRefs as gt, CalendarPreferencesSchema as h, metricsProviderCapability as hn, disarmRoseMemory as hr, compositionFieldKey as ht, AlertSchema as i, resolveCapMount as ii, legacyAutoLinkIds as in, withLocationMode as ir, bareAddonId as it, FieldClaimSchema as j, resolveBucketMs as jn, asJsonObject as jr, deviceExtensionCapability as jt, FIRST_LEVEL_MACRO_CLASSES as k, replacedFieldKeys as kn, SECRET_CLEAR as kr, describeComposableCaps as kt, CAMSTACK_APP_LINK_ORIGIN as l, sleep as li, logDestinationCapability as ln, composedDeviceStableId as lr, buildStreamParamsConfigSchema as lt, CORE_BLOCK_ADDON_PREFIX as m, memoizePinnedFfmpeg as mn, createStatefulExpressionMemory as mr, composerCapability as mt, AGENT_MDNS_TXT_KEYS as n, parseSecretRef as ni, keychainAdminCapability as nn, vectorIndexDimConflictError as nr, authProviderCapability as nt, BaseDevice as o, scopeKey as oi, lifecycleJobSchema as on, buildFfmpegArgs as or, buildCapabilityLookup as ot, CORE_BLOCKS_ADDON_ID as p, EventCategory as pi, mayWriteToLocation as pn, compositionSourceKey as pr, checkRoleAddress as pt, StorageCleanupJobSchema as q, storageOccupancyCapability as qn, isKeychainStoredField as qr, gbToBytes as qt, ALL_CAPABILITY_DEFINITIONS as r, readinessKey as ri, keychainCapability as rn, vectorStoreCapability as rr, backupCapability as rt, BatteryStatusSchema as s, secretTreeFromPaths as si, localNetworkCapability as sn, cloneStatefulExpressionMemory as sr, buildDeviceEnrollmentLink as st, AGENT_MDNS_SERVICE_TYPE as t, parseJsonUnknown as ti, kebabToCamel as tn, vectorDimFromBase64 as tr, alertsCapability as tt, CAP_NAMES_WITH_STATUS as u, toNodeId as ui, logLevelAtMost as un, compositionFeatureEnabled as ur, calendarsCapability as ut, DATABASE_SNAPSHOT_SUFFIX as v, normalizeCoreBlockWrite as vn, DeviceRole as vr, coreBlockComposition as vt, DEVICE_NONCE_TTL_MS as w, planComposition as wn, DEVICE_STATUS_METHOD as wr, databaseSnapshotCapability as wt, DAY_NAMES as x, objectInputDeclaresRequiredDeviceId as xn, BaseAddon as xr, coreBlocksCapability as xt, DATABASE_SNAPSHOT_TIMEOUT_MS as y, normalizeUnit as yn, DeviceType as yr, coreBlockIdFromAddonId as yt, MOTION_CLOSE_AFTER_MS as z, scopesAllowAddon as zn, defineCustomActions as zr, evictionPolicyOfLocation as zt };
|
|
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
718
718
|
return EventCategory;
|
|
719
719
|
}({});
|
|
720
720
|
//#endregion
|
|
721
|
-
//#region ../types/dist/sleep
|
|
721
|
+
//#region ../types/dist/sleep-DAX0-2v9.mjs
|
|
722
722
|
/**
|
|
723
723
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
724
724
|
* window to float samples (D455).
|
|
@@ -9768,6 +9768,12 @@ function scopesAllowDeviceCap(scopes, access) {
|
|
|
9768
9768
|
function scopesAllowAddon(scopes, addonId, access) {
|
|
9769
9769
|
return scopes.some((s) => s.type === "addon" && s.target === addonId && s.access.includes(access));
|
|
9770
9770
|
}
|
|
9771
|
+
zod.z.enum(["new-session", "step-up"]);
|
|
9772
|
+
/** How a native app starts one login method (D858), as `auth.listLoginMethods` reports it. */
|
|
9773
|
+
var AppLoginPathSchema = zod.z.discriminatedUnion("kind", [zod.z.object({ kind: zod.z.literal("native") }), zod.z.object({
|
|
9774
|
+
kind: zod.z.literal("browser"),
|
|
9775
|
+
startPath: zod.z.string().startsWith("/")
|
|
9776
|
+
})]);
|
|
9771
9777
|
/**
|
|
9772
9778
|
* Device certificates (D855) — the wire contract shared by the hub, the admin
|
|
9773
9779
|
* UI and the native viewer.
|
|
@@ -9966,7 +9972,9 @@ zod.z.object({
|
|
|
9966
9972
|
signature: zod.z.literal(DEVICE_CERT_SIGNATURE),
|
|
9967
9973
|
messageVersion: zod.z.literal(DEVICE_SIGNATURE_MESSAGE_VERSION),
|
|
9968
9974
|
/** Which clients can execute it: a native app silently, a browser with a non-extractable WebCrypto key. */
|
|
9969
|
-
clients: zod.z.array(zod.z.enum(["native", "web"]))
|
|
9975
|
+
clients: zod.z.array(zod.z.enum(["native", "web"])),
|
|
9976
|
+
/** The app executes it itself, silently (D858). */
|
|
9977
|
+
app: AppLoginPathSchema.nullable()
|
|
9970
9978
|
});
|
|
9971
9979
|
/**
|
|
9972
9980
|
* What an expression's named bindings READ from.
|
|
@@ -39968,10 +39976,14 @@ function isLanIpv4Literal(endpoint) {
|
|
|
39968
39976
|
const host = hostnameOf(endpoint.baseUrl);
|
|
39969
39977
|
return host !== null && IPV4_LITERAL.test(host);
|
|
39970
39978
|
}
|
|
39979
|
+
function isUnstable(endpoint) {
|
|
39980
|
+
return endpoint.stable === false;
|
|
39981
|
+
}
|
|
39971
39982
|
/** Lower = better; `null` = never this role's AUTOMATIC answer. */
|
|
39972
39983
|
function autoRankFor(role, endpoint) {
|
|
39973
39984
|
if (endpoint.kind === "loopback" || endpoint.kind === "app-link" || endpoint.kind === "custom") return null;
|
|
39974
39985
|
if (hostnameOf(endpoint.baseUrl) === null) return null;
|
|
39986
|
+
if (isUnstable(endpoint)) return null;
|
|
39975
39987
|
if (role === "internal") {
|
|
39976
39988
|
if (isLanIpv4Literal(endpoint)) return 0;
|
|
39977
39989
|
if (isPlausibleLan(endpoint)) return 1;
|
|
@@ -40126,6 +40138,7 @@ function resolveNotificationTapAddress(flags) {
|
|
|
40126
40138
|
}
|
|
40127
40139
|
/** AUTO app connections: LAN IPv4 + the public tunnel. Never IPv6, mesh, loopback or custom. */
|
|
40128
40140
|
function isDefaultAppConnectionEndpoint(endpoint) {
|
|
40141
|
+
if (isUnstable(endpoint)) return false;
|
|
40129
40142
|
if (endpoint.kind === "lan-ipv4") return true;
|
|
40130
40143
|
return endpoint.kind === "public" && endpoint.interfaceKind === "public";
|
|
40131
40144
|
}
|
|
@@ -41167,7 +41180,13 @@ var RedirectLoginMethodSchema = zod.z.object({
|
|
|
41167
41180
|
* `beginExternalLink` offer exactly the redirect methods that set this,
|
|
41168
41181
|
* whatever their id. Absent / false — a login button only.
|
|
41169
41182
|
*/
|
|
41170
|
-
linkable: zod.z.boolean().optional()
|
|
41183
|
+
linkable: zod.z.boolean().optional(),
|
|
41184
|
+
/**
|
|
41185
|
+
* How a NATIVE app starts this method (D858): `{ kind: 'browser', startPath }`
|
|
41186
|
+
* when the route understands the app flow query (`app=1&code_challenge=…`),
|
|
41187
|
+
* `null`/absent when there is no app path - the app hides the method.
|
|
41188
|
+
*/
|
|
41189
|
+
app: AppLoginPathSchema.nullable().optional()
|
|
41171
41190
|
});
|
|
41172
41191
|
/**
|
|
41173
41192
|
* A Module-Federation widget the login page mounts for an in-page
|
|
@@ -41186,7 +41205,9 @@ var WidgetLoginMethodSchema = zod.z.object({
|
|
|
41186
41205
|
bundle: zod.z.string(),
|
|
41187
41206
|
/** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
|
|
41188
41207
|
remote: WidgetRemoteSchema,
|
|
41189
|
-
stage: LoginStageEnum
|
|
41208
|
+
stage: LoginStageEnum,
|
|
41209
|
+
/** Widgets are web ceremonies: no native app path (D858). Absent reads as `null`. */
|
|
41210
|
+
app: AppLoginPathSchema.nullable().optional()
|
|
41190
41211
|
});
|
|
41191
41212
|
/**
|
|
41192
41213
|
* A declarative WebAuthn ceremony the shell renders natively (no remote
|
|
@@ -41204,7 +41225,9 @@ var PasskeyLoginMethodSchema = zod.z.object({
|
|
|
41204
41225
|
/** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
|
|
41205
41226
|
rpId: zod.z.string(),
|
|
41206
41227
|
/** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
|
|
41207
|
-
origin: zod.z.string().nullable()
|
|
41228
|
+
origin: zod.z.string().nullable(),
|
|
41229
|
+
/** Set by the hub for the primary arm; a second-factor passkey has no app path (D858). */
|
|
41230
|
+
app: AppLoginPathSchema.nullable().optional()
|
|
41208
41231
|
});
|
|
41209
41232
|
/** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
|
|
41210
41233
|
var LoginMethodContributionSchema = zod.z.discriminatedUnion("kind", [
|
|
@@ -41842,7 +41865,25 @@ var NetworkEndpointSchema = zod.z.object({
|
|
|
41842
41865
|
url: zod.z.string(),
|
|
41843
41866
|
hostname: zod.z.string(),
|
|
41844
41867
|
port: zod.z.number(),
|
|
41845
|
-
protocol: zod.z.enum(["http", "https"])
|
|
41868
|
+
protocol: zod.z.enum(["http", "https"]),
|
|
41869
|
+
/**
|
|
41870
|
+
* Whether this address survives a restart of its provider. `false` = it is
|
|
41871
|
+
* re-issued every time (a Quick tunnel's random `*.trycloudflare.com`); the
|
|
41872
|
+
* hub never selects such an address AUTOMATICALLY for a role (D860), though
|
|
41873
|
+
* it stays visible and an operator may still flag it. Absent = stable: every
|
|
41874
|
+
* provider except a Quick tunnel owns a name that does not change.
|
|
41875
|
+
*/
|
|
41876
|
+
stable: zod.z.boolean().optional()
|
|
41877
|
+
});
|
|
41878
|
+
/**
|
|
41879
|
+
* `data` of a `network.tunnel.started` event — what `local-network` (which
|
|
41880
|
+
* tails the bus and cannot import a provider) learns about the new address.
|
|
41881
|
+
*/
|
|
41882
|
+
var NetworkTunnelStartedDataSchema = zod.z.object({
|
|
41883
|
+
url: zod.z.string(),
|
|
41884
|
+
/** Mirrors {@link NetworkEndpointSchema} `stable`; absent = stable. */
|
|
41885
|
+
stable: zod.z.boolean().optional(),
|
|
41886
|
+
updated: zod.z.boolean().optional()
|
|
41846
41887
|
});
|
|
41847
41888
|
var NetworkAccessStatusSchema = zod.z.object({
|
|
41848
41889
|
connected: zod.z.boolean(),
|
|
@@ -54140,7 +54181,20 @@ var SsoBridgeClaimsSchema = zod.z.object({
|
|
|
54140
54181
|
* request to present the matching cookie — a login bridge is useless in
|
|
54141
54182
|
* any other browser.
|
|
54142
54183
|
*/
|
|
54143
|
-
browserBinding: zod.z.string().optional()
|
|
54184
|
+
browserBinding: zod.z.string().optional(),
|
|
54185
|
+
/**
|
|
54186
|
+
* The native app that started this sign-in (D858): its PKCE challenge,
|
|
54187
|
+
* `state`, purpose and allow-listed return URL, copied from the server-side
|
|
54188
|
+
* pending OIDC state. A bridge carrying it is finished ONLY at
|
|
54189
|
+
* `/api/auth/sso/finish-app` (which mints a handoff code, never a web
|
|
54190
|
+
* session); `/api/auth/sso/finish` refuses it.
|
|
54191
|
+
*/
|
|
54192
|
+
app: zod.z.object({
|
|
54193
|
+
codeChallenge: zod.z.string(),
|
|
54194
|
+
state: zod.z.string(),
|
|
54195
|
+
purpose: zod.z.enum(["new-session", "step-up"]),
|
|
54196
|
+
redirect: zod.z.string()
|
|
54197
|
+
}).optional()
|
|
54144
54198
|
});
|
|
54145
54199
|
var ssoBridgeCapability = {
|
|
54146
54200
|
name: "sso-bridge",
|
|
@@ -57125,7 +57179,12 @@ var SearchResultSchema = zod.z.object({
|
|
|
57125
57179
|
publishedAt: zod.z.string(),
|
|
57126
57180
|
author: zod.z.string(),
|
|
57127
57181
|
installed: zod.z.boolean(),
|
|
57128
|
-
installedVersion: zod.z.string().optional()
|
|
57182
|
+
installedVersion: zod.z.string().optional(),
|
|
57183
|
+
/**
|
|
57184
|
+
* Capability names the package's addons declare (from its published
|
|
57185
|
+
* manifest). `null` = the registry lookup failed — unknown, never `[]` (D393).
|
|
57186
|
+
*/
|
|
57187
|
+
capabilities: zod.z.array(zod.z.string()).readonly().nullable()
|
|
57129
57188
|
});
|
|
57130
57189
|
var AutoUpdateSettingsSchema = zod.z.object({
|
|
57131
57190
|
channel: ChannelSchema,
|
|
@@ -57344,7 +57403,11 @@ var addonsCapability = {
|
|
|
57344
57403
|
kind: "mutation",
|
|
57345
57404
|
auth: "admin"
|
|
57346
57405
|
}),
|
|
57347
|
-
searchAvailable: method(zod.z.object({
|
|
57406
|
+
searchAvailable: method(zod.z.object({
|
|
57407
|
+
query: zod.z.string().optional(),
|
|
57408
|
+
/** Only packages whose addons declare this capability (unknown ones excluded). */
|
|
57409
|
+
capability: zod.z.string().optional()
|
|
57410
|
+
}), zod.z.array(SearchResultSchema)),
|
|
57348
57411
|
/**
|
|
57349
57412
|
* Available package updates for a node. `nodeId` omitted (or
|
|
57350
57413
|
* `'hub'`) checks the hub's own installed packages; an agent
|
|
@@ -61451,7 +61514,13 @@ var ConnectionEndpointSchema = zod.z.object({
|
|
|
61451
61514
|
* calls so the client can sort even if the cap returns a new
|
|
61452
61515
|
* ordering between polls.
|
|
61453
61516
|
*/
|
|
61454
|
-
priority: zod.z.number()
|
|
61517
|
+
priority: zod.z.number(),
|
|
61518
|
+
/**
|
|
61519
|
+
* `false` = the address changes on its own (a Quick tunnel, re-issued on
|
|
61520
|
+
* every respawn). Automatic role resolution skips it (D860); an explicit
|
|
61521
|
+
* operator flag still honours it. Absent = stable.
|
|
61522
|
+
*/
|
|
61523
|
+
stable: zod.z.boolean().optional()
|
|
61455
61524
|
});
|
|
61456
61525
|
/**
|
|
61457
61526
|
* Where the advertised local port came from. Ordered most → least
|
|
@@ -85802,6 +85871,12 @@ Object.defineProperty(exports, "MOTION_CLOSE_AFTER_MS", {
|
|
|
85802
85871
|
return MOTION_CLOSE_AFTER_MS;
|
|
85803
85872
|
}
|
|
85804
85873
|
});
|
|
85874
|
+
Object.defineProperty(exports, "NetworkTunnelStartedDataSchema", {
|
|
85875
|
+
enumerable: true,
|
|
85876
|
+
get: function() {
|
|
85877
|
+
return NetworkTunnelStartedDataSchema;
|
|
85878
|
+
}
|
|
85879
|
+
});
|
|
85805
85880
|
Object.defineProperty(exports, "RECORDING_SOURCE_CAMSTACK_ADDON", {
|
|
85806
85881
|
enumerable: true,
|
|
85807
85882
|
get: function() {
|
|
@@ -85862,6 +85937,12 @@ Object.defineProperty(exports, "ScopedTokenSchema", {
|
|
|
85862
85937
|
return ScopedTokenSchema;
|
|
85863
85938
|
}
|
|
85864
85939
|
});
|
|
85940
|
+
Object.defineProperty(exports, "SsoBridgeClaimsSchema", {
|
|
85941
|
+
enumerable: true,
|
|
85942
|
+
get: function() {
|
|
85943
|
+
return SsoBridgeClaimsSchema;
|
|
85944
|
+
}
|
|
85945
|
+
});
|
|
85865
85946
|
Object.defineProperty(exports, "StorageCleanupJobSchema", {
|
|
85866
85947
|
enumerable: true,
|
|
85867
85948
|
get: function() {
|