@camstack/system 1.2.433 → 1.2.434

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.
Files changed (86) hide show
  1. package/dist/{agent-https-DtRU9A7I.mjs → agent-https-B8lKYVtU.mjs} +34 -6
  2. package/dist/{agent-https-CHZTxK-q.js → agent-https-BZIwS4xF.js} +34 -6
  3. package/dist/auth/device-ca.d.ts +0 -10
  4. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  5. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  6. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  7. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  8. package/dist/builtins/alerts/alerts.addon.js +1 -1
  9. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  10. package/dist/builtins/autotrack/index.js +1 -1
  11. package/dist/builtins/autotrack/index.mjs +1 -1
  12. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  13. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  14. package/dist/builtins/calendars/calendars.addon.js +1 -1
  15. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  16. package/dist/builtins/camera-grid/index.js +1 -1
  17. package/dist/builtins/camera-grid/index.mjs +1 -1
  18. package/dist/builtins/composer/composer.addon.js +2 -2
  19. package/dist/builtins/composer/composer.addon.mjs +2 -2
  20. package/dist/builtins/console-logging/index.js +1 -1
  21. package/dist/builtins/console-logging/index.mjs +1 -1
  22. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  23. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  24. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  25. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  26. package/dist/builtins/hub-forwarder/index.js +1 -1
  27. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  28. package/dist/builtins/keychain/index.js +3 -3
  29. package/dist/builtins/keychain/index.mjs +3 -3
  30. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  31. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  32. package/dist/builtins/local-auth/local-auth.addon.js +9 -4
  33. package/dist/builtins/local-auth/local-auth.addon.mjs +9 -4
  34. package/dist/builtins/local-network/address-book.d.ts +13 -0
  35. package/dist/builtins/local-network/local-network.addon.js +56 -10
  36. package/dist/builtins/local-network/local-network.addon.mjs +56 -10
  37. package/dist/builtins/loki-logging/index.js +1 -1
  38. package/dist/builtins/loki-logging/index.mjs +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  40. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  41. package/dist/builtins/platform-probe/index.js +1 -1
  42. package/dist/builtins/platform-probe/index.mjs +1 -1
  43. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  44. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  45. package/dist/builtins/snapshot/index.js +1 -1
  46. package/dist/builtins/snapshot/index.mjs +1 -1
  47. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  48. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  49. package/dist/builtins/sqlite-storage/index.js +1 -1
  50. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  51. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
  52. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
  53. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  54. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  55. package/dist/builtins/system-config/system-config.addon.js +23 -8
  56. package/dist/builtins/system-config/system-config.addon.mjs +23 -8
  57. package/dist/builtins/winston-logging/index.js +1 -1
  58. package/dist/builtins/winston-logging/index.mjs +1 -1
  59. package/dist/{composition-sources-BgJWQMjr.js → composition-sources-B7R1oQnY.js} +1 -1
  60. package/dist/{composition-sources-8-cpAt1c.mjs → composition-sources-CqrDyHM1.mjs} +1 -1
  61. package/dist/{constants-Cg9ve13y.mjs → constants-CrMPWOug.mjs} +1 -1
  62. package/dist/{constants-Ah3T_KAW.js → constants-CuOfMdYe.js} +1 -1
  63. package/dist/{device-ca-DUrcTW5h.mjs → device-ca-CDjGQQPd.mjs} +17 -6
  64. package/dist/{device-ca-NNP4Jz0P.js → device-ca-D21ZP00q.js} +17 -6
  65. package/dist/{dist-C6Yvfhpq.js → dist-CCH3XPqO.js} +43 -6
  66. package/dist/{dist-DJnlnL7P.mjs → dist-CYcBqnXk.mjs} +38 -7
  67. package/dist/file-host-worker.js +1 -1
  68. package/dist/file-host-worker.mjs +1 -1
  69. package/dist/{hub-mdns-ciao-B50jAU5C.js → hub-mdns-ciao-CBLvq2oj.js} +2 -2
  70. package/dist/{hub-mdns-ciao-8_Ed1Za5.mjs → hub-mdns-ciao-DJRwtlA8.mjs} +2 -2
  71. package/dist/index.js +7 -7
  72. package/dist/index.mjs +7 -7
  73. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +0 -9
  74. package/dist/{lib-B_R6sPC3.mjs → lib-BeGzVQcd.mjs} +1 -1
  75. package/dist/{lib-DOJ5yyWA.js → lib-NNxHSOIE.js} +1 -1
  76. package/dist/{restore-archive-C3_rzOCx.mjs → restore-archive-5ml7uYMf.mjs} +1 -1
  77. package/dist/{restore-archive-DqPaRjjY.js → restore-archive-Do0QwAik.js} +1 -1
  78. package/dist/{retired-settings-keys-DJBQkZok.js → retired-settings-keys-CEiCaI_j.js} +1 -1
  79. package/dist/{retired-settings-keys-CAWHWDwy.mjs → retired-settings-keys-CyDdyjLP.mjs} +1 -1
  80. package/dist/tls/cert-backdate.d.ts +10 -0
  81. package/dist/tls/cert-issue.d.ts +0 -20
  82. package/dist/{wal-maintenance-Bc38yI3r.mjs → wal-maintenance-DgLLPK14.mjs} +0 -0
  83. package/dist/{wal-maintenance-CPLvZbzA.js → wal-maintenance-LZYd8iT-.js} +0 -0
  84. package/dist/{x509.es-CAjSsrkk.mjs → x509.es-CDvj67p1.mjs} +14 -1
  85. package/dist/{x509.es-Dzl0BbmG.js → x509.es-r7Ht1thA.js} +19 -0
  86. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { E as DEVICE_SAN_USER_PREFIX, Mr as buildSecretRef, T as DEVICE_SAN_CREDENTIAL_PREFIX } from "./dist-DJnlnL7P.mjs";
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-CAjSsrkk.mjs";
1
+ import { E as DEVICE_SAN_USER_PREFIX, Nr as buildSecretRef, T as DEVICE_SAN_CREDENTIAL_PREFIX } from "./dist-CYcBqnXk.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 notBefore = input.now ?? /* @__PURE__ */ new Date();
238
- const notAfter = new Date(notBefore.getTime() + (input.validDays ?? 365) * MS_PER_DAY);
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-C6Yvfhpq.js");
2
- const require_x509_es = require("./x509.es-Dzl0BbmG.js");
1
+ const require_dist = require("./dist-CCH3XPqO.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 notBefore = input.now ?? /* @__PURE__ */ new Date();
238
- const notAfter = new Date(notBefore.getTime() + (input.validDays ?? 365) * MS_PER_DAY);
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--g-h2_c_.mjs
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.
@@ -41167,7 +41175,13 @@ var RedirectLoginMethodSchema = zod.z.object({
41167
41175
  * `beginExternalLink` offer exactly the redirect methods that set this,
41168
41176
  * whatever their id. Absent / false — a login button only.
41169
41177
  */
41170
- linkable: zod.z.boolean().optional()
41178
+ linkable: zod.z.boolean().optional(),
41179
+ /**
41180
+ * How a NATIVE app starts this method (D858): `{ kind: 'browser', startPath }`
41181
+ * when the route understands the app flow query (`app=1&code_challenge=…`),
41182
+ * `null`/absent when there is no app path - the app hides the method.
41183
+ */
41184
+ app: AppLoginPathSchema.nullable().optional()
41171
41185
  });
41172
41186
  /**
41173
41187
  * A Module-Federation widget the login page mounts for an in-page
@@ -41186,7 +41200,9 @@ var WidgetLoginMethodSchema = zod.z.object({
41186
41200
  bundle: zod.z.string(),
41187
41201
  /** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
41188
41202
  remote: WidgetRemoteSchema,
41189
- stage: LoginStageEnum
41203
+ stage: LoginStageEnum,
41204
+ /** Widgets are web ceremonies: no native app path (D858). Absent reads as `null`. */
41205
+ app: AppLoginPathSchema.nullable().optional()
41190
41206
  });
41191
41207
  /**
41192
41208
  * A declarative WebAuthn ceremony the shell renders natively (no remote
@@ -41204,7 +41220,9 @@ var PasskeyLoginMethodSchema = zod.z.object({
41204
41220
  /** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
41205
41221
  rpId: zod.z.string(),
41206
41222
  /** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
41207
- origin: zod.z.string().nullable()
41223
+ origin: zod.z.string().nullable(),
41224
+ /** Set by the hub for the primary arm; a second-factor passkey has no app path (D858). */
41225
+ app: AppLoginPathSchema.nullable().optional()
41208
41226
  });
41209
41227
  /** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
41210
41228
  var LoginMethodContributionSchema = zod.z.discriminatedUnion("kind", [
@@ -54140,7 +54158,20 @@ var SsoBridgeClaimsSchema = zod.z.object({
54140
54158
  * request to present the matching cookie — a login bridge is useless in
54141
54159
  * any other browser.
54142
54160
  */
54143
- browserBinding: zod.z.string().optional()
54161
+ browserBinding: zod.z.string().optional(),
54162
+ /**
54163
+ * The native app that started this sign-in (D858): its PKCE challenge,
54164
+ * `state`, purpose and allow-listed return URL, copied from the server-side
54165
+ * pending OIDC state. A bridge carrying it is finished ONLY at
54166
+ * `/api/auth/sso/finish-app` (which mints a handoff code, never a web
54167
+ * session); `/api/auth/sso/finish` refuses it.
54168
+ */
54169
+ app: zod.z.object({
54170
+ codeChallenge: zod.z.string(),
54171
+ state: zod.z.string(),
54172
+ purpose: zod.z.enum(["new-session", "step-up"]),
54173
+ redirect: zod.z.string()
54174
+ }).optional()
54144
54175
  });
54145
54176
  var ssoBridgeCapability = {
54146
54177
  name: "sso-bridge",
@@ -85862,6 +85893,12 @@ Object.defineProperty(exports, "ScopedTokenSchema", {
85862
85893
  return ScopedTokenSchema;
85863
85894
  }
85864
85895
  });
85896
+ Object.defineProperty(exports, "SsoBridgeClaimsSchema", {
85897
+ enumerable: true,
85898
+ get: function() {
85899
+ return SsoBridgeClaimsSchema;
85900
+ }
85901
+ });
85865
85902
  Object.defineProperty(exports, "StorageCleanupJobSchema", {
85866
85903
  enumerable: true,
85867
85904
  get: function() {
@@ -718,7 +718,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
718
718
  return EventCategory;
719
719
  }({});
720
720
  //#endregion
721
- //#region ../types/dist/sleep--g-h2_c_.mjs
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.
@@ -41167,7 +41175,13 @@ var RedirectLoginMethodSchema = z.object({
41167
41175
  * `beginExternalLink` offer exactly the redirect methods that set this,
41168
41176
  * whatever their id. Absent / false — a login button only.
41169
41177
  */
41170
- linkable: z.boolean().optional()
41178
+ linkable: z.boolean().optional(),
41179
+ /**
41180
+ * How a NATIVE app starts this method (D858): `{ kind: 'browser', startPath }`
41181
+ * when the route understands the app flow query (`app=1&code_challenge=…`),
41182
+ * `null`/absent when there is no app path - the app hides the method.
41183
+ */
41184
+ app: AppLoginPathSchema.nullable().optional()
41171
41185
  });
41172
41186
  /**
41173
41187
  * A Module-Federation widget the login page mounts for an in-page
@@ -41186,7 +41200,9 @@ var WidgetLoginMethodSchema = z.object({
41186
41200
  bundle: z.string(),
41187
41201
  /** MF remote descriptor — `{ remoteName, exposedModule, componentKey }`. */
41188
41202
  remote: WidgetRemoteSchema,
41189
- stage: LoginStageEnum
41203
+ stage: LoginStageEnum,
41204
+ /** Widgets are web ceremonies: no native app path (D858). Absent reads as `null`. */
41205
+ app: AppLoginPathSchema.nullable().optional()
41190
41206
  });
41191
41207
  /**
41192
41208
  * A declarative WebAuthn ceremony the shell renders natively (no remote
@@ -41204,7 +41220,9 @@ var PasskeyLoginMethodSchema = z.object({
41204
41220
  /** Effective WebAuthn RP ID (`resolveRpID()`) — the shell gates visibility on it. */
41205
41221
  rpId: z.string(),
41206
41222
  /** Effective expected origin (`resolveOrigin()`), null when unconfigured. */
41207
- origin: z.string().nullable()
41223
+ origin: z.string().nullable(),
41224
+ /** Set by the hub for the primary arm; a second-factor passkey has no app path (D858). */
41225
+ app: AppLoginPathSchema.nullable().optional()
41208
41226
  });
41209
41227
  /** One login-method contribution — redirect button, pre-auth widget, or native passkey ceremony. */
41210
41228
  var LoginMethodContributionSchema = z.discriminatedUnion("kind", [
@@ -54140,7 +54158,20 @@ var SsoBridgeClaimsSchema = z.object({
54140
54158
  * request to present the matching cookie — a login bridge is useless in
54141
54159
  * any other browser.
54142
54160
  */
54143
- browserBinding: z.string().optional()
54161
+ browserBinding: z.string().optional(),
54162
+ /**
54163
+ * The native app that started this sign-in (D858): its PKCE challenge,
54164
+ * `state`, purpose and allow-listed return URL, copied from the server-side
54165
+ * pending OIDC state. A bridge carrying it is finished ONLY at
54166
+ * `/api/auth/sso/finish-app` (which mints a handoff code, never a web
54167
+ * session); `/api/auth/sso/finish` refuses it.
54168
+ */
54169
+ app: z.object({
54170
+ codeChallenge: z.string(),
54171
+ state: z.string(),
54172
+ purpose: z.enum(["new-session", "step-up"]),
54173
+ redirect: z.string()
54174
+ }).optional()
54144
54175
  });
54145
54176
  var ssoBridgeCapability = {
54146
54177
  name: "sso-bridge",
@@ -85514,4 +85545,4 @@ function enumerateInferenceDevices(hw) {
85514
85545
  return out;
85515
85546
  }
85516
85547
  //#endregion
85517
- export { alertsCapability as $, vectorDimFromBase64 as $n, parseJsonUnknown as $r, kebabToCamel as $t, FieldClaimModeSchema as A, resolveCoreBlockEntry as An, asNumber as Ar, deviceManagerCapability as At, RECORDING_SOURCE_CAMSTACK_ADDON as B, settingsStoreCapability as Bn, expandCapMethods as Br, extractNestedAddonId as Bt, DEVICE_ENROLLMENT_TTL_MS as C, platformProbeCapability as Cn, REDACTED_SECRET as Cr, declarationOwnerNodeId as Ct, DeclaredDevices as D, replacedFieldKeys as Dn, SECRET_CLEAR as Dr, describeComposableCaps as Dt, DEVICE_SAN_USER_PREFIX as E, reducePoints as En, ReadinessTimeoutError as Er, deriveBatteryPresence as Et, LOG_LEVEL_RANK as F, resolveNotificationTapAddress as Fn, createEvent as Fr, enumerateSchemaFields as Ft, StorageCleanupJobSchema as G, storageOccupancyCapability as Gn, isKeychainStoredField as Gr, gbToBytes as Gt, STORAGE_ACCESS_FALLBACK as H, snapshotCapability as Hn, hydrateSchema as Hr, foldSnapshotByFunction as Ht, LegacyStorageLocationDefaultSchema as I, runtimeStatePolicyFor as In, customAction as Ir, evaluateCompositionField as It, StorageMigrationJobSchema as J, streamQualityLabel as Jn, isSecretMarkerLike as Jr, isCollectionArrayMethod as Jt, StorageLocationModeSchema as K, storageProviderCapability as Kn, isSecretClear as Kr, isAppLinkBase as Kt, METHOD_ACCESS_MAP as L, scopesAllowAddon as Ln, defineCustomActions as Lr, evictionPolicyOfLocation as Lt, HUB_MDNS_SERVICE_TYPE as M, resolveHubAddressRoles as Mn, buildSecretRef as Mr, deviceStatusCapability as Mt, HUB_MDNS_TXT_KEYS as N, resolveLocationMode as Nn, collectSecretConfigKeys as Nr, enumerateInferenceDevices as Nt, DeviceStatusSchema as O, resolveAppConnections as On, WELL_KNOWN_TAB_MAP as Or, deviceCredentialsCapability as Ot, KEYCHAIN_RESET_TRIGGER_ACTOR as P, resolveMethodAuth as Pn, collectZodSecretPaths as Pr, enumerateItemArrayFields as Pt, addonWidgetsCapability as Q, validateCustomAddress as Qn, parseJsonObject as Qr, isVoidInput as Qt, MINUTES_PER_DAY as R, scopesAllowDeviceCap as Rn, emitDownForOwnedCaps as Rr, expandContainer as Rt, DERIVED_CAMERA_SILENCED_CAP_NAMES as S, planComposition as Sn, DEVICE_STATUS_METHOD as Sr, databaseSnapshotCapability as St, DEVICE_SAN_CREDENTIAL_PREFIX as T, ptzAutotrackCapability as Tn, ReadinessRegistry as Tr, defineExtensionSlotProvider as Tt, STREAM_PROFILE_META as U, storageCapability as Un, isDeviceConfigCap as Ur, formatDeviceRevoker as Ut, RecordingStatusSchema as V, siteZoneKey as Vn, formatSecretScope as Vr, filesystemBrowseCapability as Vt, ScopedTokenSchema as W, storageMigrationCapability as Wn, isEvent as Wr, formatMinutes as Wt, addonPagesCapability as X, userManagementCapability as Xn, nodePin as Xr, isLocationEnabled as Xt, UserRecordSchema as Y, supportedRuntimes as Yn, makeSecretMarker as Yr, isDefaultAppConnectionEndpoint as Yt, addonSettingsCapability as Z, validateComposition as Zn, normalizeSecretOwner as Zr, isObjectInput as Zt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as _, normalizeUnit as _n, DeviceType as _r, coreBlockIdFromAddonId as _t, ApiKeyRecordSchema as a, secretTreeFromPaths as ai, localNetworkCapability as an, cloneStatefulExpressionMemory as ar, buildDeviceEnrollmentLink as at, DATA_STORE_DATABASES as b, parseStreamParamsFormPatch as bn, DATAPLANE_SECRET_HEADER as br, createDeviceExtensionProvider as bt, CAMERA_SWITCH_ORDER as c, toNodeId as ci, logLevelAtMost as cn, compositionFeatureEnabled as cr, calendarsCapability as ct, COMPOSED_ITEM_FIXED_FIELDS as d, EventCategory as di, mayWriteToLocation as dn, compositionSourceKey as dr, checkRoleAddress as dt, parseSecretRef as ei, keychainAdminCapability as en, vectorIndexDimConflictError as er, authProviderCapability as et, COMPOSER_RUNNER_ID as f, memoizePinnedFfmpeg as fn, createStatefulExpressionMemory as fr, composerCapability as ft, CoreBlockSchema as g, normalizeCoreBlockWrite as gn, DeviceRole as gr, coreBlockComposition as gt, CalendarPreferencesSchema as h, motionCapability as hn, DeviceFeature as hr, coreBlockAddonId as ht, AlertSchema as i, scopeKey as ii, lifecycleJobSchema as in, buildFfmpegArgs as ir, buildCapabilityLookup as it, FieldClaimSchema as j, resolveCoreBlockFiles as jn, asString$1 as jr, deviceStateCapability as jt, FIRST_LEVEL_MACRO_CLASSES as k, resolveBucketMs as kn, asJsonObject as kr, deviceExtensionCapability as kt, CAMSTACK_APP_LINK_ORIGIN as l, toSecretFieldView as li, looseSchema as ln, compositionItemFieldPath as lr, cameraGridLayoutCapability as lt, CORE_BLOCK_ADDON_PREFIX as m, modeMayWrite as mn, toExpressionValue as mr, compositionSourceRefs as mt, AGENT_MDNS_TXT_KEYS as n, resolveCapMount as ni, legacyAutoLinkIds as nn, withLocationMode as nr, bareAddonId as nt, BaseDevice as o, secretTreeFromSchema as oi, locationIconKey as on, composedDeviceRef as or, buildDeviceSignatureMessage as ot, CORE_BLOCKS_ADDON_ID as p, metricsProviderCapability as pn, disarmRoseMemory as pr, compositionFieldKey as pt, StorageLocationTypeSchema as q, streamCatalogCapability as qn, isSecretMarker as qr, isArrayOutputSchema as qt, ALL_CAPABILITY_DEFINITIONS as r, resolveSecretMarkers as ri, legacyModeOf as rn, COMPOSER_ADDON_ID as rr, batteryCapability as rt, BatteryStatusSchema as s, sleep as si, logDestinationCapability as sn, composedDeviceStableId as sr, buildStreamParamsConfigSchema as st, AGENT_MDNS_SERVICE_TYPE as t, readinessKey as ti, keychainCapability as tn, vectorStoreCapability as tr, backupCapability as tt, CAP_NAMES_WITH_STATUS as u, transformSecretWrite as ui, mayReadLocation as un, compositionSliceKey as ur, canonicalIconKey as ut, DATABASE_SNAPSHOT_SUFFIX as v, objectInputDeclaresAddonId as vn, errMsg as vr, coreBlockSourceKind as vt, DEVICE_NONCE_TTL_MS as w, procedureAuthKey as wn, RUNTIME_DEFAULTS as wr, decodeVectorBase64 as wt, DAY_NAMES as x, pickAppLinkHub as xn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as xr, dataStoreProviderCapability as xt, DATABASE_SNAPSHOT_TIMEOUT_MS as y, objectInputDeclaresRequiredDeviceId as yn, BaseAddon as yr, coreBlocksCapability as yt, MOTION_CLOSE_AFTER_MS as z, scoreRuntimes as zn, emitReadiness as zr, expressionContainsBuiltinCall as zt };
85548
+ export { addonWidgetsCapability as $, validateCustomAddress as $n, parseJsonObject as $r, isVoidInput as $t, FieldClaimModeSchema as A, resolveBucketMs as An, asJsonObject as Ar, deviceExtensionCapability as At, RECORDING_SOURCE_CAMSTACK_ADDON as B, scoreRuntimes as Bn, emitReadiness as Br, expressionContainsBuiltinCall as Bt, DEVICE_ENROLLMENT_TTL_MS as C, planComposition as Cn, DEVICE_STATUS_METHOD as Cr, databaseSnapshotCapability as Ct, DeclaredDevices as D, reducePoints as Dn, ReadinessTimeoutError as Dr, deriveBatteryPresence as Dt, DEVICE_SAN_USER_PREFIX as E, ptzAutotrackCapability as En, ReadinessRegistry as Er, defineExtensionSlotProvider as Et, LOG_LEVEL_RANK as F, resolveMethodAuth as Fn, collectZodSecretPaths as Fr, enumerateItemArrayFields as Ft, SsoBridgeClaimsSchema as G, storageMigrationCapability as Gn, isEvent as Gr, formatMinutes as Gt, STORAGE_ACCESS_FALLBACK as H, siteZoneKey as Hn, formatSecretScope as Hr, filesystemBrowseCapability as Ht, LegacyStorageLocationDefaultSchema as I, resolveNotificationTapAddress as In, createEvent as Ir, enumerateSchemaFields as It, StorageLocationTypeSchema as J, streamCatalogCapability as Jn, isSecretMarker as Jr, isArrayOutputSchema as Jt, StorageCleanupJobSchema as K, storageOccupancyCapability as Kn, isKeychainStoredField as Kr, gbToBytes as Kt, METHOD_ACCESS_MAP as L, runtimeStatePolicyFor as Ln, customAction as Lr, evaluateCompositionField as Lt, HUB_MDNS_SERVICE_TYPE as M, resolveCoreBlockFiles as Mn, asString$1 as Mr, deviceStateCapability as Mt, HUB_MDNS_TXT_KEYS as N, resolveHubAddressRoles as Nn, buildSecretRef as Nr, deviceStatusCapability as Nt, DeviceStatusSchema as O, replacedFieldKeys as On, SECRET_CLEAR as Or, describeComposableCaps as Ot, KEYCHAIN_RESET_TRIGGER_ACTOR as P, resolveLocationMode as Pn, collectSecretConfigKeys as Pr, enumerateInferenceDevices as Pt, addonSettingsCapability as Q, validateComposition as Qn, normalizeSecretOwner as Qr, isObjectInput as Qt, MINUTES_PER_DAY as R, scopesAllowAddon as Rn, defineCustomActions as Rr, evictionPolicyOfLocation as Rt, DERIVED_CAMERA_SILENCED_CAP_NAMES as S, pickAppLinkHub as Sn, DEVICE_SETTINGS_CONTRIBUTION_METHODS as Sr, dataStoreProviderCapability as St, DEVICE_SAN_CREDENTIAL_PREFIX as T, procedureAuthKey as Tn, RUNTIME_DEFAULTS as Tr, decodeVectorBase64 as Tt, STREAM_PROFILE_META as U, snapshotCapability as Un, hydrateSchema as Ur, foldSnapshotByFunction as Ut, RecordingStatusSchema as V, settingsStoreCapability as Vn, expandCapMethods as Vr, extractNestedAddonId as Vt, ScopedTokenSchema as W, storageCapability as Wn, isDeviceConfigCap as Wr, formatDeviceRevoker as Wt, UserRecordSchema as X, supportedRuntimes as Xn, makeSecretMarker as Xr, isDefaultAppConnectionEndpoint as Xt, StorageMigrationJobSchema as Y, streamQualityLabel as Yn, isSecretMarkerLike as Yr, isCollectionArrayMethod as Yt, addonPagesCapability as Z, userManagementCapability as Zn, nodePin as Zr, isLocationEnabled as Zt, DATABASE_SNAPSHOT_PARTIAL_SUFFIX as _, normalizeCoreBlockWrite as _n, DeviceRole as _r, coreBlockComposition as _t, ApiKeyRecordSchema as a, scopeKey as ai, lifecycleJobSchema as an, buildFfmpegArgs as ar, buildCapabilityLookup as at, DATA_STORE_DATABASES as b, objectInputDeclaresRequiredDeviceId as bn, BaseAddon as br, coreBlocksCapability as bt, CAMERA_SWITCH_ORDER as c, sleep as ci, logDestinationCapability as cn, composedDeviceStableId as cr, buildStreamParamsConfigSchema as ct, COMPOSED_ITEM_FIXED_FIELDS as d, transformSecretWrite as di, mayReadLocation as dn, compositionSliceKey as dr, canonicalIconKey as dt, parseJsonUnknown as ei, kebabToCamel as en, vectorDimFromBase64 as er, alertsCapability as et, COMPOSER_RUNNER_ID as f, EventCategory as fi, mayWriteToLocation as fn, compositionSourceKey as fr, checkRoleAddress as ft, CoreBlockSchema as g, motionCapability as gn, DeviceFeature as gr, coreBlockAddonId as gt, CalendarPreferencesSchema as h, modeMayWrite as hn, toExpressionValue as hr, compositionSourceRefs as ht, AlertSchema as i, resolveSecretMarkers as ii, legacyModeOf as in, COMPOSER_ADDON_ID as ir, batteryCapability as it, FieldClaimSchema as j, resolveCoreBlockEntry as jn, asNumber as jr, deviceManagerCapability as jt, FIRST_LEVEL_MACRO_CLASSES as k, resolveAppConnections as kn, WELL_KNOWN_TAB_MAP as kr, deviceCredentialsCapability as kt, CAMSTACK_APP_LINK_ORIGIN as l, toNodeId as li, logLevelAtMost as ln, compositionFeatureEnabled as lr, calendarsCapability as lt, CORE_BLOCK_ADDON_PREFIX as m, metricsProviderCapability as mn, disarmRoseMemory as mr, compositionFieldKey as mt, AGENT_MDNS_TXT_KEYS as n, readinessKey as ni, keychainCapability as nn, vectorStoreCapability as nr, backupCapability as nt, BaseDevice as o, secretTreeFromPaths as oi, localNetworkCapability as on, cloneStatefulExpressionMemory as or, buildDeviceEnrollmentLink as ot, CORE_BLOCKS_ADDON_ID as p, memoizePinnedFfmpeg as pn, createStatefulExpressionMemory as pr, composerCapability as pt, StorageLocationModeSchema as q, storageProviderCapability as qn, isSecretClear as qr, isAppLinkBase as qt, ALL_CAPABILITY_DEFINITIONS as r, resolveCapMount as ri, legacyAutoLinkIds as rn, withLocationMode as rr, bareAddonId as rt, BatteryStatusSchema as s, secretTreeFromSchema as si, locationIconKey as sn, composedDeviceRef as sr, buildDeviceSignatureMessage as st, AGENT_MDNS_SERVICE_TYPE as t, parseSecretRef as ti, keychainAdminCapability as tn, vectorIndexDimConflictError as tr, authProviderCapability as tt, CAP_NAMES_WITH_STATUS as u, toSecretFieldView as ui, looseSchema as un, compositionItemFieldPath as ur, cameraGridLayoutCapability as ut, DATABASE_SNAPSHOT_SUFFIX as v, normalizeUnit as vn, DeviceType as vr, coreBlockIdFromAddonId as vt, DEVICE_NONCE_TTL_MS as w, platformProbeCapability as wn, REDACTED_SECRET as wr, declarationOwnerNodeId as wt, DAY_NAMES as x, parseStreamParamsFormPatch as xn, DATAPLANE_SECRET_HEADER as xr, createDeviceExtensionProvider as xt, DATABASE_SNAPSHOT_TIMEOUT_MS as y, objectInputDeclaresAddonId as yn, errMsg as yr, coreBlockSourceKind as yt, MOTION_CLOSE_AFTER_MS as z, scopesAllowDeviceCap as zn, emitDownForOwnedCaps as zr, expandContainer as zt };
@@ -1,5 +1,5 @@
1
1
  require("./chunk-Cek0wNdY.js");
2
- const require_wal_maintenance = require("./wal-maintenance-CPLvZbzA.js");
2
+ const require_wal_maintenance = require("./wal-maintenance-LZYd8iT-.js");
3
3
  let node_worker_threads = require("node:worker_threads");
4
4
  //#region src/builtins/sqlite-storage/file-host-worker.ts
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { C as callControl, E as controlTargetOf, T as callVector, _ as collectTransferables, a as WalMaintenance, b as isFileHostWorkerData, c as SqliteSettingsBackend, h as serializeError, o as createVectorIndex, s as vectorProviderOf, w as callData, x as trustInput, y as isFileHostRequest } from "./wal-maintenance-Bc38yI3r.mjs";
1
+ import { C as callControl, E as controlTargetOf, T as callVector, _ as collectTransferables, a as WalMaintenance, b as isFileHostWorkerData, c as SqliteSettingsBackend, h as serializeError, o as createVectorIndex, s as vectorProviderOf, w as callData, x as trustInput, y as isFileHostRequest } from "./wal-maintenance-DgLLPK14.mjs";
2
2
  import { parentPort, threadId, workerData } from "node:worker_threads";
3
3
  //#region src/builtins/sqlite-storage/file-host-worker.ts
4
4
  /**
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_agent_https = require("./agent-https-CHZTxK-q.js");
2
+ const require_agent_https = require("./agent-https-BZIwS4xF.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let _camstack_types_node = require("@camstack/types/node");
5
5
  let node_fs_promises = require("node:fs/promises");
@@ -623,7 +623,7 @@ function applyCertificateToListener(dataDir) {
623
623
  //#region src/builtins/local-network/hub-mdns-ciao.ts
624
624
  function createCiaoPublisher() {
625
625
  return { async publish(announcement) {
626
- const { getResponder } = await Promise.resolve().then(() => /* @__PURE__ */ require_chunk.__toESM(require("./lib-DOJ5yyWA.js").default));
626
+ const { getResponder } = await Promise.resolve().then(() => /* @__PURE__ */ require_chunk.__toESM(require("./lib-NNxHSOIE.js").default));
627
627
  const responder = getResponder();
628
628
  const service = responder.createService({
629
629
  name: announcement.name,
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM } from "./chunk-CNf5ZN-e.mjs";
2
- import { D as reasonRequiresNewCa, E as evaluateExistingCert, _ as generateCa, b as collectCertIdentity, v as issueLeaf, y as loadCa } from "./agent-https-DtRU9A7I.mjs";
2
+ import { D as reasonRequiresNewCa, E as evaluateExistingCert, _ as generateCa, b as collectCertIdentity, v as issueLeaf, y as loadCa } from "./agent-https-B8lKYVtU.mjs";
3
3
  import { X509Certificate, createPrivateKey } from "node:crypto";
4
4
  import { writeOwnerOnlyFileSync } from "@camstack/types/node";
5
5
  import { mkdir, writeFile } from "node:fs/promises";
@@ -623,7 +623,7 @@ function applyCertificateToListener(dataDir) {
623
623
  //#region src/builtins/local-network/hub-mdns-ciao.ts
624
624
  function createCiaoPublisher() {
625
625
  return { async publish(announcement) {
626
- const { getResponder } = await import("./lib-B_R6sPC3.mjs").then((m) => /* @__PURE__ */ __toESM(m.default));
626
+ const { getResponder } = await import("./lib-BeGzVQcd.mjs").then((m) => /* @__PURE__ */ __toESM(m.default));
627
627
  const responder = getResponder();
628
628
  const service = responder.createService({
629
629
  name: announcement.name,
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-Cek0wNdY.js");
3
- const require_dist = require("./dist-C6Yvfhpq.js");
4
- const require_device_ca = require("./device-ca-NNP4Jz0P.js");
3
+ const require_dist = require("./dist-CCH3XPqO.js");
4
+ const require_device_ca = require("./device-ca-D21ZP00q.js");
5
5
  const require_builtins_alerts_alerts_addon = require("./builtins/alerts/alerts.addon.js");
6
6
  require("./builtins/alerts/index.js");
7
7
  const require_builtins_calendars_calendars_addon = require("./builtins/calendars/calendars.addon.js");
@@ -22,21 +22,21 @@ require("./builtins/local-auth/index.js");
22
22
  const require_builtins_loki_logging_index = require("./builtins/loki-logging/index.js");
23
23
  const require_builtins_native_metrics_native_metrics_addon = require("./builtins/native-metrics/native-metrics.addon.js");
24
24
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./builtins/sqlite-storage/filesystem-storage.addon.js");
25
- const require_wal_maintenance = require("./wal-maintenance-CPLvZbzA.js");
25
+ const require_wal_maintenance = require("./wal-maintenance-LZYd8iT-.js");
26
26
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./builtins/sqlite-storage/sqlite-settings.addon.js");
27
27
  const require_builtins_sqlite_storage_index = require("./builtins/sqlite-storage/index.js");
28
28
  const require_builtins_storage_orchestrator_storage_orchestrator_addon = require("./builtins/storage-orchestrator/storage-orchestrator.addon.js");
29
29
  require("./builtins/storage-orchestrator/index.js");
30
- const require_agent_https = require("./agent-https-CHZTxK-q.js");
31
- const require_constants = require("./constants-Ah3T_KAW.js");
30
+ const require_agent_https = require("./agent-https-BZIwS4xF.js");
31
+ const require_constants = require("./constants-CuOfMdYe.js");
32
32
  const require_builtins_system_config_system_config_addon = require("./builtins/system-config/system-config.addon.js");
33
33
  require("./builtins/system-config/index.js");
34
34
  const require_builtins_winston_logging_index = require("./builtins/winston-logging/index.js");
35
35
  const require_custom_action_registry = require("./custom-action-registry-Bf_YnagS.js");
36
- const require_hub_mdns_ciao = require("./hub-mdns-ciao-B50jAU5C.js");
36
+ const require_hub_mdns_ciao = require("./hub-mdns-ciao-CBLvq2oj.js");
37
37
  const require_platform_key_source = require("./platform-key-source-Di7HrlGR.js");
38
38
  const require_resource_monitor = require("./resource-monitor-mio9dSCT.js");
39
- const require_restore_archive = require("./restore-archive-DqPaRjjY.js");
39
+ const require_restore_archive = require("./restore-archive-Do0QwAik.js");
40
40
  let zod = require("zod");
41
41
  let node_crypto = require("node:crypto");
42
42
  node_crypto = require_chunk.__toESM(node_crypto);
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { i as __require } from "./chunk-CNf5ZN-e.mjs";
2
- import { $r as parseJsonUnknown, $t as kebabToCamel$1, Ar as asNumber, Br as expandCapMethods, Bt as extractNestedAddonId, Er as ReadinessTimeoutError, F as LOG_LEVEL_RANK, Fr as createEvent$1, Jt as isCollectionArrayMethod, L as METHOD_ACCESS_MAP, Ln as scopesAllowAddon, Pn as resolveMethodAuth, Qr as parseJsonObject, Qt as isVoidInput, Rn as scopesAllowDeviceCap, Rr as emitDownForOwnedCaps, Sr as DEVICE_STATUS_METHOD, Tr as ReadinessRegistry, Yn as supportedRuntimes, Z as addonSettingsCapability, Zt as isObjectInput, br as DATAPLANE_SECRET_HEADER$1, cn as logLevelAtMost, di as EventCategory$1, ii as scopeKey, in as lifecycleJobSchema, jr as asString$1, kr as asJsonObject$1, ln as looseSchema, n as AGENT_MDNS_TXT_KEYS, ni as resolveCapMount, qt as isArrayOutputSchema, r as ALL_CAPABILITY_DEFINITIONS, t as AGENT_MDNS_SERVICE_TYPE, ti as readinessKey, vn as objectInputDeclaresAddonId, vr as errMsg$1, wn as procedureAuthKey, wr as RUNTIME_DEFAULTS, xr as DEVICE_SETTINGS_CONTRIBUTION_METHODS, yn as objectInputDeclaresRequiredDeviceId } from "./dist-DJnlnL7P.mjs";
3
- import { d as JWT_SIGNING_KEY_REF, f as JwtSigningKeyUnavailableError, g as processJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, p as SYSTEM_SECRET_OWNER, s as loadDeviceCa, u as verifyDeviceSignature, v as staticJwtSigningKey } from "./device-ca-DUrcTW5h.mjs";
2
+ import { $r as parseJsonObject, $t as isVoidInput, Ar as asJsonObject$1, Cr as DEVICE_STATUS_METHOD, Dr as ReadinessTimeoutError, Er as ReadinessRegistry, F as LOG_LEVEL_RANK, Fn as resolveMethodAuth, Ir as createEvent$1, Jt as isArrayOutputSchema, L as METHOD_ACCESS_MAP, Mr as asString$1, Q as addonSettingsCapability, Qt as isObjectInput, Rn as scopesAllowAddon, Sr as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Tn as procedureAuthKey, Tr as RUNTIME_DEFAULTS, Vr as expandCapMethods, Vt as extractNestedAddonId, Xn as supportedRuntimes, Yt as isCollectionArrayMethod, ai as scopeKey, an as lifecycleJobSchema, bn as objectInputDeclaresRequiredDeviceId, ei as parseJsonUnknown, en as kebabToCamel$1, fi as EventCategory$1, jr as asNumber, ln as logLevelAtMost, n as AGENT_MDNS_TXT_KEYS, ni as readinessKey, r as ALL_CAPABILITY_DEFINITIONS, ri as resolveCapMount, t as AGENT_MDNS_SERVICE_TYPE, un as looseSchema, xr as DATAPLANE_SECRET_HEADER$1, yn as objectInputDeclaresAddonId, yr as errMsg$1, zn as scopesAllowDeviceCap, zr as emitDownForOwnedCaps } from "./dist-CYcBqnXk.mjs";
3
+ import { d as JWT_SIGNING_KEY_REF, f as JwtSigningKeyUnavailableError, g as processJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, p as SYSTEM_SECRET_OWNER, s as loadDeviceCa, u as verifyDeviceSignature, v as staticJwtSigningKey } from "./device-ca-CDjGQQPd.mjs";
4
4
  import { AlertCenterAddon } from "./builtins/alerts/alerts.addon.mjs";
5
5
  import "./builtins/alerts/index.mjs";
6
6
  import { CalendarsAddon } from "./builtins/calendars/calendars.addon.mjs";
@@ -21,21 +21,21 @@ import "./builtins/local-auth/index.mjs";
21
21
  import { LokiDestination, LokiLoggingAddon } from "./builtins/loki-logging/index.mjs";
22
22
  import NativeMetricsAddon, { a as NativeMetricsProvider, n as nodeProcReader, r as parseProcStat } from "./builtins/native-metrics/native-metrics.addon.mjs";
23
23
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./builtins/sqlite-storage/filesystem-storage.addon.mjs";
24
- import { c as SqliteSettingsBackend, l as prefixRange } from "./wal-maintenance-Bc38yI3r.mjs";
24
+ import { c as SqliteSettingsBackend, l as prefixRange } from "./wal-maintenance-DgLLPK14.mjs";
25
25
  import { SqliteSettingsAddon } from "./builtins/sqlite-storage/sqlite-settings.addon.mjs";
26
26
  import { ConfigStore, DeviceStore } from "./builtins/sqlite-storage/index.mjs";
27
27
  import { StorageOrchestratorAddon, a as stripForwardedCaller, i as createHubCapForwardService, n as HUB_CAP_FWD_ACTION, o as buildStorageLocationRegistry, r as HUB_CAP_FWD_SERVICE, t as StorageOrchestratorService } from "./builtins/storage-orchestrator/storage-orchestrator.addon.mjs";
28
28
  import "./builtins/storage-orchestrator/index.mjs";
29
- import { A as AgentHttpsNames, C as LEAF_RENEWAL_WINDOW_DAYS, E as evaluateExistingCert, M as setProcessAgentHttpsNames, O as AGENT_HTTPS_NAMES_COLLECTION, S as CA_VALIDITY_DAYS, T as SERVER_AUTH_OID, a as collectAgentNames, b as collectCertIdentity, c as installAgentHttps, d as isPrivateAddress, f as issueAgentHttpsLeaf, g as CA_COMMON_NAME, h as pinnedHttpsCaFingerprint, i as certificateNames, j as getProcessAgentHttpsNames, k as AGENT_HTTPS_NAMES_COLUMNS, l as isContainerBridgeAddress, m as pemDigest, n as acceptAgentSans, o as createAgentHttpsRequest, p as loadAgentHttps, r as agentHttpsPaths, s as describeHttpsLeaf, t as AgentHttpsInstallError, u as isLocalOnlyHostname, w as MAX_LEAF_VALIDITY_DAYS, x as systemHostFacts } from "./agent-https-DtRU9A7I.mjs";
30
- import { _ as getProcessClusterSecretGate, a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, d as CLUSTER_SECRET_REF, f as CLUSTER_SECRET_REJECTED_EXIT_CODE, g as clusterSecretMatches, h as checkClusterSecret, i as MESH_CA_FIELD, m as CLUSTER_SECRET_UNAVAILABLE_TYPE, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, p as CLUSTER_SECRET_SETTINGS_KEY, u as CLUSTER_SECRET_MISMATCH_TYPE, v as hashClusterSecret, y as isClusterSecretMismatchError } from "./constants-Cg9ve13y.mjs";
29
+ import { A as AgentHttpsNames, C as LEAF_RENEWAL_WINDOW_DAYS, E as evaluateExistingCert, M as setProcessAgentHttpsNames, O as AGENT_HTTPS_NAMES_COLLECTION, S as CA_VALIDITY_DAYS, T as SERVER_AUTH_OID, a as collectAgentNames, b as collectCertIdentity, c as installAgentHttps, d as isPrivateAddress, f as issueAgentHttpsLeaf, g as CA_COMMON_NAME, h as pinnedHttpsCaFingerprint, i as certificateNames, j as getProcessAgentHttpsNames, k as AGENT_HTTPS_NAMES_COLUMNS, l as isContainerBridgeAddress, m as pemDigest, n as acceptAgentSans, o as createAgentHttpsRequest, p as loadAgentHttps, r as agentHttpsPaths, s as describeHttpsLeaf, t as AgentHttpsInstallError, u as isLocalOnlyHostname, w as MAX_LEAF_VALIDITY_DAYS, x as systemHostFacts } from "./agent-https-B8lKYVtU.mjs";
30
+ import { _ as getProcessClusterSecretGate, a as MESH_CA_KEY_REF, b as setProcessClusterSecretGate, d as CLUSTER_SECRET_REF, f as CLUSTER_SECRET_REJECTED_EXIT_CODE, g as clusterSecretMatches, h as checkClusterSecret, i as MESH_CA_FIELD, m as CLUSTER_SECRET_UNAVAILABLE_TYPE, n as DEFAULT_HUB_TLS_TCP_PORT, o as MESH_CA_SETTINGS_KEY, p as CLUSTER_SECRET_SETTINGS_KEY, u as CLUSTER_SECRET_MISMATCH_TYPE, v as hashClusterSecret, y as isClusterSecretMismatchError } from "./constants-CrMPWOug.mjs";
31
31
  import { $ as requireProcessMeshCa, A as dropProcessPeer, At as setProcessMeshAuthStatusSource, B as openMeshTlsWhenRevocationsLoaded, C as Transporters, Ct as MESH_AUTH_MODE_FIELD, D as mintMeshJoinToken, Dt as parseMeshAuthMode, E as JoinTokenJtiStore, Et as isMeshAuthMode, F as onProcessNodeRegistered, Ft as readCidrSetting, G as RENEWAL_ABANDONED, H as MESH_NODE_CERTIFICATES_COLLECTION, I as setProcessMeshPeerTransportLookup, J as setProcessMeshCertificateRegistry, K as describeMeshLeaf, L as renewMeshCertificate, M as getProcessNodeMeshTransport, Mt as createCidrMatcher, N as getProcessPeerLeaf, Nt as normalizeIp, O as processJoinTokenJtiStore, Ot as requestProcessMeshEnforcement, P as isProcessVerifiedMeshPeer, Pt as parseCidrList, Q as getProcessMeshCaState, R as revokeMeshCertificate, S as ServiceBroker, St as verifyAgentUiUnlockTicketEs256, SystemConfigAddon, T as enrollMeshNode, Tt as getProcessMeshAuthStatus, U as MESH_NODE_CERTIFICATES_COLUMNS, V as setProcessMeshTlsListenerState, W as MeshCertificateRegistry, X as processMeshCrl, Y as MeshCrl, Z as MeshCaKeeper, _ as signPairingProof, _t as isAllowedAgentDashboardReturnTo, a as hubHostFromMeshAddress, at as generateMeshKeyPair, b as TlsTcpTransporter, bt as parseAgentDashboardOrigins, c as PAIRING_MAX_SESSIONS, ct as issueMeshLeafFromCsr, d as PAIRING_PROTOCOL, dt as AGENT_UI_UNLOCK_DOMAIN, et as caFingerprint, f as PAIRING_TTL_MS, ft as AGENT_UI_UNLOCK_TTL_MS, g as keyFingerprintShort, gt as UnlockTicketJtiStore, h as describeCsr, ht as AGENT_UI_UNLOCK_VERSION, i as AgentPairing, it as generateMeshCa, j as emitProcessNodeRegistered, jt as setProcessMeshEnforcer, k as verifyMeshJoinToken, kt as setProcessMeshAuthMode, l as PAIRING_PATHS, lt as loadMeshCa, m as computePairingSas, mt as AGENT_UI_UNLOCK_USE, n as HubPairing, nt as createMeshCsrPem, o as PAIRING_CODE_DIGITS, ot as isValidAgentNodeId, p as computePairingCommitment, pt as AGENT_UI_UNLOCK_TYP, q as getProcessMeshCertificateRegistry, r as PairingHttpError, rt as exportMeshPrivateKeyPem, s as PAIRING_MAX_CODE_ATTEMPTS, st as issueMeshLeafForNode, tt as caFingerprintCompact, u as PAIRING_PIN_DIGITS, ut as AGENT_DASHBOARD_ORIGINS_FIELD, v as verifyPairingProof, vt as mintAgentUiUnlockTicket, w as setProcessMeshTlsEnabler, wt as getProcessMeshAuthMode, x as Errors, xt as verifyAgentUiUnlockTicket, y as MESH_TLS_PORT_HELLO_FIELD, yt as mintAgentUiUnlockTicketEs256, z as getProcessMeshTlsListenerState } from "./builtins/system-config/system-config.addon.mjs";
32
32
  import "./builtins/system-config/index.mjs";
33
33
  import { WinstonDestination, WinstonLoggingAddon } from "./builtins/winston-logging/index.mjs";
34
34
  import { C as isModelDownloaded, T as revisionWeightUrl, _ as downloadFile, a as startEventLoopStallMonitor, b as fetchJson, c as createAuthenticatedFileServer, d as resolveFilePath, f as ModelDownloadService, g as deleteModelFromDisk, h as collectModelFiles, i as attributeStall, l as parseRangeHeader, m as adoptModelRevisions, n as STALL_REPORT_MS, o as createFileDataPlaneHandler, r as STALL_TICK_MS, s as contentTypeFor, t as CustomActionRegistry, u as parseTokenizedUrl, v as downloadModel, w as resolveFormatRevision, x as getModelFilePath, y as ensureModel } from "./custom-action-registry-BQnbN0DP.mjs";
35
- import { C as DEFAULT_LAN_HTTP_PORT, D as closeLanHttp, E as bindPendingLanHttp, O as readLanHttpState, S as reissueTlsLeaf, T as applyLanHttp, _ as splitPemCertificates, a as storeUploadedCertificate, b as ensureTlsCert, c as leafFingerprintOf, d as servedHttpsLeafFingerprint, f as prepareBootTls, g as readTlsMode, h as readTlsAccessStatus, i as revertToGeneratedCertificate, k as registerLanHttpHandler, l as registerHttpsListener, m as readExtraSans, n as applyCertificateToListener, o as validateUploadedTls, p as UPLOADED_CA_FILE, r as regenerateCertificate, s as clearHttpsListener, t as createCiaoPublisher, u as reloadHttpsListener, v as writeExtraSans, w as allFamiliesListenHost, x as loadTlsCert, y as writeTlsMode } from "./hub-mdns-ciao-8_Ed1Za5.mjs";
35
+ import { C as DEFAULT_LAN_HTTP_PORT, D as closeLanHttp, E as bindPendingLanHttp, O as readLanHttpState, S as reissueTlsLeaf, T as applyLanHttp, _ as splitPemCertificates, a as storeUploadedCertificate, b as ensureTlsCert, c as leafFingerprintOf, d as servedHttpsLeafFingerprint, f as prepareBootTls, g as readTlsMode, h as readTlsAccessStatus, i as revertToGeneratedCertificate, k as registerLanHttpHandler, l as registerHttpsListener, m as readExtraSans, n as applyCertificateToListener, o as validateUploadedTls, p as UPLOADED_CA_FILE, r as regenerateCertificate, s as clearHttpsListener, t as createCiaoPublisher, u as reloadHttpsListener, v as writeExtraSans, w as allFamiliesListenHost, x as loadTlsCert, y as writeTlsMode } from "./hub-mdns-ciao-DJRwtlA8.mjs";
36
36
  import { n as getPlatformKeychainKey, r as setPlatformKeychainKey, t as clearPlatformKeychainKey } from "./platform-key-source-BWlq0jjn.mjs";
37
37
  import { n as getSinglePidStats, t as getPidStats } from "./resource-monitor-Di9daRwI.mjs";
38
- import { c as BackupDecryptError, f as generateBackupKeyPair, h as readBackupEncryptionHeader, l as BackupKeyFormatError, r as prepareRestoreArchive, s as SystemBackupService, t as BackupKeyRequiredError, u as BackupKeyMismatchError } from "./restore-archive-C3_rzOCx.mjs";
38
+ import { c as BackupDecryptError, f as generateBackupKeyPair, h as readBackupEncryptionHeader, l as BackupKeyFormatError, r as prepareRestoreArchive, s as SystemBackupService, t as BackupKeyRequiredError, u as BackupKeyMismatchError } from "./restore-archive-5ml7uYMf.mjs";
39
39
  import { z } from "zod";
40
40
  import * as crypto$1 from "node:crypto";
41
41
  import { createHash, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
@@ -1,12 +1,3 @@
1
- /**
2
- * Hub mesh CA — EC P-256, key in the keychain, cert in `cluster.meshCa`.
3
- *
4
- * Distinct from the HTTPS local CA (`tls/cert-issue.ts`, RSA): the mesh CA
5
- * signs node leaves (CN = nodeID) and join-token JWS (ES256). Issuance uses
6
- * `@peculiar/x509` over WebCrypto — same library the HTTPS path already uses
7
- * (installed `1.14.3`; registry latest at adoption time was `2.1.0` — stay on
8
- * the pinned range already shipping).
9
- */
10
1
  import type { webcrypto as WebCrypto } from "node:crypto";
11
2
  import { X509Certificate as PeculiarCertificate } from "@peculiar/x509";
12
3
  /** Key generation — EC P-256 (plan). WebCrypto DOM names are not in @types/node. */
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, r as __exportAll, t as __commonJSMin } from "./chunk-CNf5ZN-e.mjs";
2
- import { h as tslib_es6_exports, m as init_tslib_es6 } from "./x509.es-CAjSsrkk.mjs";
2
+ import { h as tslib_es6_exports, m as init_tslib_es6 } from "./x509.es-CDvj67p1.mjs";
3
3
  import { t as require_src } from "./src-hG4grMU4.mjs";
4
4
  //#region ../../node_modules/source-map/lib/base64.js
5
5
  var require_base64 = /* @__PURE__ */ __commonJSMin(((exports) => {
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_x509_es = require("./x509.es-Dzl0BbmG.js");
2
+ const require_x509_es = require("./x509.es-r7Ht1thA.js");
3
3
  const require_src$1 = require("./src-CnAqG6EF.js");
4
4
  //#region ../../node_modules/source-map/lib/base64.js
5
5
  var require_base64 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports) => {
@@ -1,4 +1,4 @@
1
- import { v as DATABASE_SNAPSHOT_SUFFIX } from "./dist-DJnlnL7P.mjs";
1
+ import { v as DATABASE_SNAPSHOT_SUFFIX } from "./dist-CYcBqnXk.mjs";
2
2
  import { createCipheriv, createDecipheriv, createHash, createPrivateKey, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes } from "node:crypto";
3
3
  import { Buffer as Buffer$1 } from "buffer";
4
4
  import * as fsp from "node:fs/promises";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-Cek0wNdY.js");
2
- const require_dist = require("./dist-C6Yvfhpq.js");
2
+ const require_dist = require("./dist-CCH3XPqO.js");
3
3
  let node_crypto = require("node:crypto");
4
4
  let buffer = require("buffer");
5
5
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- const require_dist = require("./dist-C6Yvfhpq.js");
1
+ const require_dist = require("./dist-CCH3XPqO.js");
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -1,4 +1,4 @@
1
- import { kr as asJsonObject } from "./dist-DJnlnL7P.mjs";
1
+ import { Ar as asJsonObject } from "./dist-CYcBqnXk.mjs";
2
2
  //#region src/builtins/sqlite-storage/retired-settings-keys.ts
3
3
  /**
4
4
  * Is THIS node the one whose settings store is the cluster's authority?
@@ -0,0 +1,10 @@
1
+ /**
2
+ * How far a freshly issued certificate's `notBefore` is moved into the past.
3
+ *
4
+ * TLS refuses a certificate whose `notBefore` is in the verifier's future, and X.509 dates have
5
+ * one-second resolution, so a certificate dated "now" fails the handshake on any peer whose clock
6
+ * runs even slightly behind the issuer's. Expiry is always computed from the real `now`; only the
7
+ * start of validity moves.
8
+ */
9
+ export declare const CERT_NOT_BEFORE_BACKDATE_MS: number;
10
+ export declare function backdatedNotBefore(now: Date): Date;
@@ -1,23 +1,3 @@
1
- /**
2
- * Certificate issuance. Isolated so `cert-manager.ts` reads as policy and
3
- * this file reads as mechanics.
4
- *
5
- * **In-process, by decision (D551).** This used to shell out to `openssl`
6
- * three times. The hub's own TLS identity is not allowed to be a function
7
- * of which openssl happens to sit on the host: this fleet alone runs four
8
- * of them, and one — Ubuntu 20.04's 1.1.1f — silently ADDED the ambient
9
- * `/etc/ssl/openssl.cnf` `[req] x509_extensions = v3_ca` block on top of
10
- * our `-addext` flags, producing a root with two `basicConstraints` and
11
- * two `subjectKeyIdentifier` extensions. RFC 5280 §4.2 allows each at
12
- * most once, so OpenSSL 3 (which is what `node:crypto` is) marked that
13
- * root invalid: `X509Certificate.ca` read `false` on our own CA and
14
- * `checkIssued()` refused the pair. Under D227 that means "not issued by
15
- * the local CA", i.e. rotate the root — on every boot, forever, voiding
16
- * every trust an operator had granted by hand.
17
- *
18
- * Keys come from WebCrypto (`node:crypto`'s own implementation) and the
19
- * DER is assembled by `@peculiar/x509`. Nothing here reads the host.
20
- */
21
1
  import type { webcrypto as WebCrypto } from "node:crypto";
22
2
  import { X509Certificate as PeculiarCertificate } from "@peculiar/x509";
23
3
  import type { CertIdentity } from "./cert-identity.js";
@@ -1,4 +1,17 @@
1
1
  import { n as __esmMin, r as __exportAll, t as __commonJSMin } from "./chunk-CNf5ZN-e.mjs";
2
+ //#region src/tls/cert-backdate.ts
3
+ /**
4
+ * How far a freshly issued certificate's `notBefore` is moved into the past.
5
+ *
6
+ * TLS refuses a certificate whose `notBefore` is in the verifier's future, and X.509 dates have
7
+ * one-second resolution, so a certificate dated "now" fails the handshake on any peer whose clock
8
+ * runs even slightly behind the issuer's. Expiry is always computed from the real `now`; only the
9
+ * start of validity moves.
10
+ */
11
+ var CERT_NOT_BEFORE_BACKDATE_MS = 5 * 6e4;
12
+ function backdatedNotBefore(now) {
13
+ return /* @__PURE__ */ new Date(now.getTime() - CERT_NOT_BEFORE_BACKDATE_MS);
14
+ }
2
15
  /*! *****************************************************************************
3
16
  Copyright (C) Microsoft. All rights reserved.
4
17
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -11900,4 +11913,4 @@ AsnEcSignatureFormatter.namedCurveSize.set("K-256", 32);
11900
11913
  AsnEcSignatureFormatter.namedCurveSize.set("P-384", 48);
11901
11914
  AsnEcSignatureFormatter.namedCurveSize.set("P-521", 66);
11902
11915
  //#endregion
11903
- export { KeyUsagesExtension as a, Pkcs10CertificateRequestGenerator as c, X509Certificate as d, X509CertificateGenerator as f, tslib_es6_exports as h, KeyUsageFlags as i, SubjectAlternativeNameExtension as l, init_tslib_es6 as m, BasicConstraintsExtension as n, PemConverter as o, cryptoProvider as p, ExtendedKeyUsageExtension as r, Pkcs10CertificateRequest as s, AuthorityKeyIdentifierExtension as t, SubjectKeyIdentifierExtension as u };
11916
+ export { KeyUsagesExtension as a, Pkcs10CertificateRequestGenerator as c, X509Certificate as d, X509CertificateGenerator as f, backdatedNotBefore as g, tslib_es6_exports as h, KeyUsageFlags as i, SubjectAlternativeNameExtension as l, init_tslib_es6 as m, BasicConstraintsExtension as n, PemConverter as o, cryptoProvider as p, ExtendedKeyUsageExtension as r, Pkcs10CertificateRequest as s, AuthorityKeyIdentifierExtension as t, SubjectKeyIdentifierExtension as u };