@camstack/system 1.2.432 → 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 (105) hide show
  1. package/dist/{tls-CpcGkeJV.mjs → agent-https-B8lKYVtU.mjs} +123 -617
  2. package/dist/{tls-C5IYg3V5.js → agent-https-BZIwS4xF.js} +157 -765
  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/agent-mdns.d.ts +51 -0
  36. package/dist/builtins/local-network/local-network.addon.js +74 -53
  37. package/dist/builtins/local-network/local-network.addon.mjs +56 -36
  38. package/dist/builtins/loki-logging/index.js +1 -1
  39. package/dist/builtins/loki-logging/index.mjs +1 -1
  40. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  41. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  42. package/dist/builtins/platform-probe/index.js +1 -1
  43. package/dist/builtins/platform-probe/index.mjs +1 -1
  44. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  45. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  46. package/dist/builtins/snapshot/index.js +1 -1
  47. package/dist/builtins/snapshot/index.mjs +1 -1
  48. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  49. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  50. package/dist/builtins/sqlite-storage/index.js +1 -1
  51. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  52. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
  53. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
  54. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  55. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  56. package/dist/builtins/system-config/system-config.addon.js +1388 -31
  57. package/dist/builtins/system-config/system-config.addon.mjs +1362 -28
  58. package/dist/builtins/winston-logging/index.js +1 -1
  59. package/dist/builtins/winston-logging/index.mjs +1 -1
  60. package/dist/{composition-sources-CFlUdpO7.js → composition-sources-B7R1oQnY.js} +1 -1
  61. package/dist/{composition-sources-DpbL38z3.mjs → composition-sources-CqrDyHM1.mjs} +1 -1
  62. package/dist/{constants-B89vjrSm.mjs → constants-CrMPWOug.mjs} +2 -2
  63. package/dist/{constants-DfP8V3eX.js → constants-CuOfMdYe.js} +2 -2
  64. package/dist/{device-ca-4IY98a_-.mjs → device-ca-CDjGQQPd.mjs} +17 -6
  65. package/dist/{device-ca-BCyAPmIj.js → device-ca-D21ZP00q.js} +17 -6
  66. package/dist/{dist-BCKOeWu_.js → dist-CCH3XPqO.js} +86 -6
  67. package/dist/{dist-Bt8GTRHB.mjs → dist-CYcBqnXk.mjs} +69 -7
  68. package/dist/file-host-worker.js +1 -1
  69. package/dist/file-host-worker.mjs +1 -1
  70. package/dist/hub-mdns-ciao-CBLvq2oj.js +821 -0
  71. package/dist/hub-mdns-ciao-DJRwtlA8.mjs +648 -0
  72. package/dist/index.d.ts +3 -0
  73. package/dist/index.js +176 -67
  74. package/dist/index.mjs +96 -13
  75. package/dist/kernel/index.d.ts +5 -4
  76. package/dist/kernel/moleculer/agent-mesh-authenticator.d.ts +12 -1
  77. package/dist/kernel/moleculer/agent-ui-unlock.d.ts +40 -0
  78. package/dist/kernel/moleculer/mesh-authenticator.d.ts +6 -0
  79. package/dist/kernel/moleculer/mesh-mtls/constants.d.ts +1 -1
  80. package/dist/kernel/moleculer/mesh-mtls/index.d.ts +3 -2
  81. package/dist/kernel/moleculer/mesh-mtls/mesh-ca.d.ts +4 -9
  82. package/dist/kernel/moleculer/mesh-mtls/mesh-certificate-registry.d.ts +2 -2
  83. package/dist/kernel/moleculer/mesh-mtls/mesh-join-token.d.ts +3 -2
  84. package/dist/kernel/moleculer/mesh-mtls/mesh-peer-transport.d.ts +7 -0
  85. package/dist/kernel/moleculer/mesh-mtls/pairing/agent-pairing.d.ts +204 -0
  86. package/dist/kernel/moleculer/mesh-mtls/pairing/hub-pairing.d.ts +115 -0
  87. package/dist/kernel/moleculer/mesh-mtls/pairing/index.d.ts +3 -0
  88. package/dist/kernel/moleculer/mesh-mtls/pairing/pairing-protocol.d.ts +107 -0
  89. package/dist/kernel/moleculer/mesh-mtls/tls-tcp-transporter.d.ts +18 -0
  90. package/dist/{lib-B_R6sPC3.mjs → lib-BeGzVQcd.mjs} +1 -1
  91. package/dist/{lib-DOJ5yyWA.js → lib-NNxHSOIE.js} +1 -1
  92. package/dist/{restore-archive-Bh34W8J8.mjs → restore-archive-5ml7uYMf.mjs} +1 -1
  93. package/dist/{restore-archive-DhHH7VQp.js → restore-archive-Do0QwAik.js} +1 -1
  94. package/dist/{retired-settings-keys-u3Wwkdrq.js → retired-settings-keys-CEiCaI_j.js} +1 -1
  95. package/dist/{retired-settings-keys-CmcEitC2.mjs → retired-settings-keys-CyDdyjLP.mjs} +1 -1
  96. package/dist/tls/agent-https-names.d.ts +2 -0
  97. package/dist/tls/cert-backdate.d.ts +10 -0
  98. package/dist/tls/cert-issue.d.ts +0 -20
  99. package/dist/{wal-maintenance-uQGuStFW.mjs → wal-maintenance-DgLLPK14.mjs} +0 -0
  100. package/dist/{wal-maintenance-ChzCPUi2.js → wal-maintenance-LZYd8iT-.js} +0 -0
  101. package/dist/{x509.es-CAjSsrkk.mjs → x509.es-CDvj67p1.mjs} +14 -1
  102. package/dist/{x509.es-Dzl0BbmG.js → x509.es-r7Ht1thA.js} +19 -0
  103. package/package.json +1 -1
  104. package/dist/agent-https-names-CpUSuP4w.js +0 -120
  105. package/dist/agent-https-names-uetr4OQl.mjs +0 -91
@@ -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-BCKOeWu_.js");
4
- const require_tls = require("../../tls-C5IYg3V5.js");
3
+ const require_dist = require("../../dist-CCH3XPqO.js");
4
+ const require_hub_mdns_ciao = require("../../hub-mdns-ciao-CBLvq2oj.js");
5
5
  let zod = require("zod");
6
6
  let node_net = require("node:net");
7
7
  let node_os = require("node:os");
@@ -192,6 +192,48 @@ function withAppConnectionCustomEndpoints(detected, state) {
192
192
  const extra = state.custom.filter((c) => wanted.has(c.baseUrl) && !known.has(c.baseUrl)).map(customEndpoint);
193
193
  return [...detected, ...extra];
194
194
  }
195
+ /** Where a twin sorts relative to its plain-HTTP row: straight after it. */
196
+ var HTTPS_TWIN_PRIORITY_STEP = .5;
197
+ /**
198
+ * The HTTPS counterpart of every LAN address advertised over plain HTTP
199
+ * (D859): `http://<lan>:<httpPort>` gains `https://<lan>:<httpsPort>`, the hub's
200
+ * TLS listener, as its own row straight after it. The twin is an ordinary
201
+ * detected LAN row — ticked, unticked and flagged like any other, on by default
202
+ * (a LAN row is an automatic app connection). A phone that does not trust the
203
+ * hub's local CA fails that candidate in the race it already runs; one that
204
+ * does reaches it. Only the app-connection palette and the table carry twins:
205
+ * the palette `internal` and `publicEndpoint` resolve over never does, so those
206
+ * roles keep their answer. Rows already on https (LAN HTTP off), the public
207
+ * tunnel, the mesh, custom addresses and loopback have no twin.
208
+ */
209
+ function withLanHttpsCounterparts(palette, httpsPort) {
210
+ const known = new Set(palette.map((e) => e.baseUrl));
211
+ const out = [];
212
+ for (const endpoint of palette) {
213
+ out.push(endpoint);
214
+ if (endpoint.kind !== "lan-ipv4" && endpoint.kind !== "lan-ipv6") continue;
215
+ const twin = httpsTwinOf(endpoint, httpsPort);
216
+ if (twin === null || known.has(twin.baseUrl)) continue;
217
+ known.add(twin.baseUrl);
218
+ out.push(twin);
219
+ }
220
+ return out;
221
+ }
222
+ function httpsTwinOf(endpoint, httpsPort) {
223
+ let parsed;
224
+ try {
225
+ parsed = new URL(endpoint.baseUrl);
226
+ } catch {
227
+ return null;
228
+ }
229
+ if (parsed.protocol !== "http:") return null;
230
+ return {
231
+ ...endpoint,
232
+ label: `${endpoint.label} (HTTPS)`,
233
+ baseUrl: `https://${parsed.hostname}:${httpsPort}`,
234
+ priority: endpoint.priority + HTTPS_TWIN_PRIORITY_STEP
235
+ };
236
+ }
195
237
  /** Every role's answer — the resolvers from `@camstack/types`, nothing else. */
196
238
  function resolveRoles(state, appPalette, httpsPalette) {
197
239
  return require_dist.resolveHubAddressRoles(withAppConnectionCustomEndpoints(appPalette, state), httpsPalette, state.flags);
@@ -491,31 +533,6 @@ function internalUrlOf(book) {
491
533
  return book.roles.internal.resolved;
492
534
  }
493
535
  //#endregion
494
- //#region src/builtins/local-network/hub-mdns-ciao.ts
495
- function createCiaoPublisher() {
496
- return { async publish(announcement) {
497
- const { getResponder } = await Promise.resolve().then(() => /* @__PURE__ */ require_chunk.__toESM(require("../../lib-DOJ5yyWA.js").default));
498
- const responder = getResponder();
499
- const service = responder.createService({
500
- name: announcement.name,
501
- type: announcement.type,
502
- port: announcement.port,
503
- txt: { ...announcement.txt },
504
- ...announcement.address !== null ? { restrictedAddresses: [announcement.address] } : {}
505
- });
506
- try {
507
- await service.advertise();
508
- } catch (err) {
509
- await responder.shutdown().catch(() => void 0);
510
- throw err;
511
- }
512
- return { stop: async () => {
513
- await service.destroy();
514
- await responder.shutdown();
515
- } };
516
- } };
517
- }
518
- //#endregion
519
536
  //#region src/builtins/local-network/local-hostname.ts
520
537
  var DNS_NAME = /^(?=.{1,253}$)([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])$/;
521
538
  /**
@@ -607,7 +624,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
607
624
  appConnectionUrls: [],
608
625
  customAddresses: [],
609
626
  httpEnabled: true,
610
- httpPort: require_tls.DEFAULT_LAN_HTTP_PORT,
627
+ httpPort: require_hub_mdns_ciao.DEFAULT_LAN_HTTP_PORT,
611
628
  localHostname: "",
612
629
  internalUrl: "",
613
630
  publicEndpointUrl: "",
@@ -622,9 +639,13 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
622
639
  async palettes() {
623
640
  const port = (await this.resolveAdvertisedListenPort(null)).port;
624
641
  await this.reconcileMeshEndpoint();
642
+ const http = this.endpointsNow(false, false, "http", port);
643
+ const https = this.endpointsNow(false, false, "https", port);
625
644
  return {
626
- http: this.endpointsNow(false, false, "http", port),
627
- https: this.endpointsNow(false, false, "https", port)
645
+ http,
646
+ https,
647
+ httpWithTwins: withLanHttpsCounterparts(http, port),
648
+ httpsWithTwins: withLanHttpsCounterparts(https, port)
628
649
  };
629
650
  }
630
651
  /** The stored address book, normalised against what is detected now. */
@@ -637,11 +658,11 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
637
658
  }
638
659
  /** `getAddresses`: the Addresses table and every role's answer. */
639
660
  async addressBook(scheme) {
640
- const { http, https } = await this.palettes();
641
- const state = this.addressState([...http, ...https]);
661
+ const { http, https, httpWithTwins, httpsWithTwins } = await this.palettes();
662
+ const state = this.addressState([...httpWithTwins, ...httpsWithTwins]);
642
663
  const httpsPort = (await this.resolveAdvertisedListenPort(null)).port;
643
664
  return buildAddressBook(state, {
644
- rowsPalette: scheme === "http" ? http : https,
665
+ rowsPalette: scheme === "http" ? httpWithTwins : httpsWithTwins,
645
666
  httpsPalette: https,
646
667
  appLink: appLinkEndpoint(),
647
668
  appLinkHub: require_dist.pickAppLinkHub(https),
@@ -653,8 +674,8 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
653
674
  * naming an address in no row becomes a custom address in the same write).
654
675
  */
655
676
  async changeAddressBook(change) {
656
- const { http, https } = await this.palettes();
657
- const detected = [...http, ...https];
677
+ const { httpWithTwins, httpsWithTwins } = await this.palettes();
678
+ const detected = [...httpWithTwins, ...httpsWithTwins];
658
679
  const detectedUrls = new Set(detected.map((e) => e.baseUrl));
659
680
  const changed = change(this.addressState(detected), {
660
681
  detectedUrls,
@@ -733,7 +754,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
733
754
  */
734
755
  async buildAdvertisedEndpoints(includeLoopback, ipv4Only, scheme, httpsPort) {
735
756
  await this.reconcileMeshEndpoint();
736
- const detected = this.endpointsNow(includeLoopback, ipv4Only, scheme, httpsPort);
757
+ const detected = withLanHttpsCounterparts(this.endpointsNow(includeLoopback, ipv4Only, scheme, httpsPort), httpsPort);
737
758
  return withAppConnectionCustomEndpoints(detected, this.addressState(detected));
738
759
  }
739
760
  /**
@@ -742,7 +763,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
742
763
  * on (`http` is the palette that already carries those rows).
743
764
  */
744
765
  listenerOriginsNow(state, http, httpsPort) {
745
- const httpListening = this.config.httpEnabled !== false && require_tls.readLanHttpState().listening;
766
+ const httpListening = this.config.httpEnabled !== false && require_hub_mdns_ciao.readLanHttpState().listening;
746
767
  const hostname = this.config.localHostname || null;
747
768
  const localNameOrigins = hostname === null ? [] : [`https://${hostname}:${httpsPort}`, ...httpListening ? [`http://${hostname}:${this.resolvedHttpPort()}`] : []];
748
769
  return buildListenerOrigins({
@@ -755,7 +776,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
755
776
  /** The DETECTED palette from the cached interface/tunnel/mesh state. */
756
777
  endpointsNow(includeLoopback, ipv4Only, scheme, httpsPort, advertiseLanHttp = true) {
757
778
  const interfaces = applyAllowlist(this.enumerate(), this.config.allowedAddresses);
758
- const httpState = require_tls.readLanHttpState();
779
+ const httpState = require_hub_mdns_ciao.readLanHttpState();
759
780
  return buildEndpoints(interfaces, httpsPort, includeLoopback, ipv4Only, this.publicHostname, scheme, this.meshEndpoint, advertiseLanHttp ? {
760
781
  enabled: this.config.httpEnabled !== false,
761
782
  listening: httpState.listening,
@@ -863,13 +884,13 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
863
884
  },
864
885
  getTlsStatus: async () => this.snapshotTls(),
865
886
  regenerateCertificate: async (_input) => {
866
- const extraSans = [...require_tls.readExtraSans(this.tlsDataDir())];
867
- await require_tls.regenerateCertificate(this.tlsDataDir(), { extraSans });
887
+ const extraSans = [...require_hub_mdns_ciao.readExtraSans(this.tlsDataDir())];
888
+ await require_hub_mdns_ciao.regenerateCertificate(this.tlsDataDir(), { extraSans });
868
889
  this.putCertificateOnListener("regenerate");
869
890
  return this.snapshotTls();
870
891
  },
871
892
  uploadCertificate: async ({ certPem, keyPem, caPem }) => {
872
- await require_tls.storeUploadedCertificate(this.tlsDataDir(), {
893
+ await require_hub_mdns_ciao.storeUploadedCertificate(this.tlsDataDir(), {
873
894
  certPem,
874
895
  keyPem,
875
896
  caPem
@@ -881,8 +902,8 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
881
902
  return { pem: this.snapshotTls().caCertPem ?? "" };
882
903
  },
883
904
  revertToGeneratedCertificate: async () => {
884
- const extraSans = [...require_tls.readExtraSans(this.tlsDataDir())];
885
- await require_tls.revertToGeneratedCertificate(this.tlsDataDir(), { extraSans });
905
+ const extraSans = [...require_hub_mdns_ciao.readExtraSans(this.tlsDataDir())];
906
+ await require_hub_mdns_ciao.revertToGeneratedCertificate(this.tlsDataDir(), { extraSans });
886
907
  this.putCertificateOnListener("revert");
887
908
  return this.snapshotTls();
888
909
  }
@@ -945,7 +966,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
945
966
  min: 1,
946
967
  max: 65535,
947
968
  step: 1,
948
- default: require_tls.DEFAULT_LAN_HTTP_PORT,
969
+ default: require_hub_mdns_ciao.DEFAULT_LAN_HTTP_PORT,
949
970
  showWhen: {
950
971
  field: "httpEnabled",
951
972
  equals: true
@@ -984,7 +1005,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
984
1005
  return;
985
1006
  }
986
1007
  if (this.mdns === null) this.mdns = new HubMdnsAdvertiser({
987
- publisher: createCiaoPublisher(),
1008
+ publisher: require_hub_mdns_ciao.createCiaoPublisher(),
988
1009
  logger: this.ctx.logger,
989
1010
  nodeId: this.ctx.kernel.localNodeId ?? "hub",
990
1011
  version: null,
@@ -1068,13 +1089,13 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
1068
1089
  }
1069
1090
  resolvedHttpPort() {
1070
1091
  const port = this.config.httpPort;
1071
- return Number.isInteger(port) && port >= 1 && port <= 65535 ? port : require_tls.DEFAULT_LAN_HTTP_PORT;
1092
+ return Number.isInteger(port) && port >= 1 && port <= 65535 ? port : require_hub_mdns_ciao.DEFAULT_LAN_HTTP_PORT;
1072
1093
  }
1073
1094
  tlsDataDir() {
1074
1095
  return this.ctx.nodeDataDir ?? this.ctx.dataDir;
1075
1096
  }
1076
1097
  snapshotTls() {
1077
- const status = require_tls.readTlsAccessStatus(this.tlsDataDir(), require_tls.servedHttpsLeafFingerprint());
1098
+ const status = require_hub_mdns_ciao.readTlsAccessStatus(this.tlsDataDir(), require_hub_mdns_ciao.servedHttpsLeafFingerprint());
1078
1099
  return {
1079
1100
  ...status,
1080
1101
  sans: [...status.sans]
@@ -1087,7 +1108,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
1087
1108
  * a certificate change that did not reach the listener must say so.
1088
1109
  */
1089
1110
  putCertificateOnListener(action) {
1090
- const outcome = require_tls.applyCertificateToListener(this.tlsDataDir());
1111
+ const outcome = require_hub_mdns_ciao.applyCertificateToListener(this.tlsDataDir());
1091
1112
  if (outcome.kind === "reloaded") {
1092
1113
  this.ctx.logger.info("local-network: HTTPS listener now serves the new certificate", { meta: {
1093
1114
  action,
@@ -1113,17 +1134,17 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
1113
1134
  const httpsPort = (await this.resolveAdvertisedListenPort(null)).port;
1114
1135
  const httpPort = this.resolvedHttpPort();
1115
1136
  if (this.config.httpEnabled !== false && httpPort === httpsPort) throw new Error(`HTTP port ${httpPort} cannot equal the HTTPS listen port`);
1116
- await require_tls.applyLanHttp({
1137
+ await require_hub_mdns_ciao.applyLanHttp({
1117
1138
  enabled: this.config.httpEnabled !== false,
1118
1139
  port: httpPort,
1119
1140
  host: "0.0.0.0"
1120
1141
  });
1121
1142
  if (hostname !== "") {
1122
- require_tls.writeExtraSans(this.tlsDataDir(), [hostname]);
1123
- if (require_tls.readTlsMode(this.tlsDataDir()) === "generated") {
1124
- if ((await require_tls.ensureTlsCert(this.tlsDataDir(), { extraSans: [hostname] })).generated) this.putCertificateOnListener("hostname");
1143
+ require_hub_mdns_ciao.writeExtraSans(this.tlsDataDir(), [hostname]);
1144
+ if (require_hub_mdns_ciao.readTlsMode(this.tlsDataDir()) === "generated") {
1145
+ if ((await require_hub_mdns_ciao.ensureTlsCert(this.tlsDataDir(), { extraSans: [hostname] })).generated) this.putCertificateOnListener("hostname");
1125
1146
  }
1126
- } else require_tls.writeExtraSans(this.tlsDataDir(), []);
1147
+ } else require_hub_mdns_ciao.writeExtraSans(this.tlsDataDir(), []);
1127
1148
  }
1128
1149
  /**
1129
1150
  * The port this hub is actually listening on, plus the provenance of the
@@ -1,6 +1,5 @@
1
- import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
2
- import { A as HUB_MDNS_SERVICE_TYPE, An as resolveHubAddressRoles, En as resolveAppConnections, Nn as resolveNotificationTapAddress, Wt as isAppLinkBase, Xn as validateCustomAddress, _r as BaseAddon, j as HUB_MDNS_TXT_KEYS, li as EventCategory, lt as checkRoleAddress, qt as isDefaultAppConnectionEndpoint, rn as localNetworkCapability, s as CAMSTACK_APP_LINK_ORIGIN, yn as pickAppLinkHub } from "../../dist-Bt8GTRHB.mjs";
3
- import { A as readTlsMode, G as DEFAULT_LAN_HTTP_PORT, M as writeExtraSans, O as readExtraSans, P as ensureTlsCert, T as servedHttpsLeafFingerprint, X as readLanHttpState, _ as regenerateCertificate, g as applyCertificateToListener, k as readTlsAccessStatus, q as applyLanHttp, v as revertToGeneratedCertificate, y as storeUploadedCertificate } from "../../tls-CpcGkeJV.mjs";
1
+ import { $n as validateCustomAddress, In as resolveNotificationTapAddress, M as HUB_MDNS_SERVICE_TYPE, N as HUB_MDNS_TXT_KEYS, Nn as resolveHubAddressRoles, Sn as pickAppLinkHub, Xt as isDefaultAppConnectionEndpoint, br as BaseAddon, fi as EventCategory, ft as checkRoleAddress, kn as resolveAppConnections, l as CAMSTACK_APP_LINK_ORIGIN, on as localNetworkCapability, qt as isAppLinkBase } from "../../dist-CYcBqnXk.mjs";
2
+ import { C as DEFAULT_LAN_HTTP_PORT, O as readLanHttpState, T as applyLanHttp, a as storeUploadedCertificate, b as ensureTlsCert, d as servedHttpsLeafFingerprint, g as readTlsMode, h as readTlsAccessStatus, i as revertToGeneratedCertificate, m as readExtraSans, n as applyCertificateToListener, r as regenerateCertificate, t as createCiaoPublisher, v as writeExtraSans } from "../../hub-mdns-ciao-DJRwtlA8.mjs";
4
3
  import { z } from "zod";
5
4
  import { isIP } from "node:net";
6
5
  import * as os from "node:os";
@@ -190,6 +189,48 @@ function withAppConnectionCustomEndpoints(detected, state) {
190
189
  const extra = state.custom.filter((c) => wanted.has(c.baseUrl) && !known.has(c.baseUrl)).map(customEndpoint);
191
190
  return [...detected, ...extra];
192
191
  }
192
+ /** Where a twin sorts relative to its plain-HTTP row: straight after it. */
193
+ var HTTPS_TWIN_PRIORITY_STEP = .5;
194
+ /**
195
+ * The HTTPS counterpart of every LAN address advertised over plain HTTP
196
+ * (D859): `http://<lan>:<httpPort>` gains `https://<lan>:<httpsPort>`, the hub's
197
+ * TLS listener, as its own row straight after it. The twin is an ordinary
198
+ * detected LAN row — ticked, unticked and flagged like any other, on by default
199
+ * (a LAN row is an automatic app connection). A phone that does not trust the
200
+ * hub's local CA fails that candidate in the race it already runs; one that
201
+ * does reaches it. Only the app-connection palette and the table carry twins:
202
+ * the palette `internal` and `publicEndpoint` resolve over never does, so those
203
+ * roles keep their answer. Rows already on https (LAN HTTP off), the public
204
+ * tunnel, the mesh, custom addresses and loopback have no twin.
205
+ */
206
+ function withLanHttpsCounterparts(palette, httpsPort) {
207
+ const known = new Set(palette.map((e) => e.baseUrl));
208
+ const out = [];
209
+ for (const endpoint of palette) {
210
+ out.push(endpoint);
211
+ if (endpoint.kind !== "lan-ipv4" && endpoint.kind !== "lan-ipv6") continue;
212
+ const twin = httpsTwinOf(endpoint, httpsPort);
213
+ if (twin === null || known.has(twin.baseUrl)) continue;
214
+ known.add(twin.baseUrl);
215
+ out.push(twin);
216
+ }
217
+ return out;
218
+ }
219
+ function httpsTwinOf(endpoint, httpsPort) {
220
+ let parsed;
221
+ try {
222
+ parsed = new URL(endpoint.baseUrl);
223
+ } catch {
224
+ return null;
225
+ }
226
+ if (parsed.protocol !== "http:") return null;
227
+ return {
228
+ ...endpoint,
229
+ label: `${endpoint.label} (HTTPS)`,
230
+ baseUrl: `https://${parsed.hostname}:${httpsPort}`,
231
+ priority: endpoint.priority + HTTPS_TWIN_PRIORITY_STEP
232
+ };
233
+ }
193
234
  /** Every role's answer — the resolvers from `@camstack/types`, nothing else. */
194
235
  function resolveRoles(state, appPalette, httpsPalette) {
195
236
  return resolveHubAddressRoles(withAppConnectionCustomEndpoints(appPalette, state), httpsPalette, state.flags);
@@ -489,31 +530,6 @@ function internalUrlOf(book) {
489
530
  return book.roles.internal.resolved;
490
531
  }
491
532
  //#endregion
492
- //#region src/builtins/local-network/hub-mdns-ciao.ts
493
- function createCiaoPublisher() {
494
- return { async publish(announcement) {
495
- const { getResponder } = await import("../../lib-B_R6sPC3.mjs").then((m) => /* @__PURE__ */ __toESM(m.default));
496
- const responder = getResponder();
497
- const service = responder.createService({
498
- name: announcement.name,
499
- type: announcement.type,
500
- port: announcement.port,
501
- txt: { ...announcement.txt },
502
- ...announcement.address !== null ? { restrictedAddresses: [announcement.address] } : {}
503
- });
504
- try {
505
- await service.advertise();
506
- } catch (err) {
507
- await responder.shutdown().catch(() => void 0);
508
- throw err;
509
- }
510
- return { stop: async () => {
511
- await service.destroy();
512
- await responder.shutdown();
513
- } };
514
- } };
515
- }
516
- //#endregion
517
533
  //#region src/builtins/local-network/local-hostname.ts
518
534
  var DNS_NAME = /^(?=.{1,253}$)([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])$/;
519
535
  /**
@@ -620,9 +636,13 @@ var LocalNetworkAddon = class extends BaseAddon {
620
636
  async palettes() {
621
637
  const port = (await this.resolveAdvertisedListenPort(null)).port;
622
638
  await this.reconcileMeshEndpoint();
639
+ const http = this.endpointsNow(false, false, "http", port);
640
+ const https = this.endpointsNow(false, false, "https", port);
623
641
  return {
624
- http: this.endpointsNow(false, false, "http", port),
625
- https: this.endpointsNow(false, false, "https", port)
642
+ http,
643
+ https,
644
+ httpWithTwins: withLanHttpsCounterparts(http, port),
645
+ httpsWithTwins: withLanHttpsCounterparts(https, port)
626
646
  };
627
647
  }
628
648
  /** The stored address book, normalised against what is detected now. */
@@ -635,11 +655,11 @@ var LocalNetworkAddon = class extends BaseAddon {
635
655
  }
636
656
  /** `getAddresses`: the Addresses table and every role's answer. */
637
657
  async addressBook(scheme) {
638
- const { http, https } = await this.palettes();
639
- const state = this.addressState([...http, ...https]);
658
+ const { http, https, httpWithTwins, httpsWithTwins } = await this.palettes();
659
+ const state = this.addressState([...httpWithTwins, ...httpsWithTwins]);
640
660
  const httpsPort = (await this.resolveAdvertisedListenPort(null)).port;
641
661
  return buildAddressBook(state, {
642
- rowsPalette: scheme === "http" ? http : https,
662
+ rowsPalette: scheme === "http" ? httpWithTwins : httpsWithTwins,
643
663
  httpsPalette: https,
644
664
  appLink: appLinkEndpoint(),
645
665
  appLinkHub: pickAppLinkHub(https),
@@ -651,8 +671,8 @@ var LocalNetworkAddon = class extends BaseAddon {
651
671
  * naming an address in no row becomes a custom address in the same write).
652
672
  */
653
673
  async changeAddressBook(change) {
654
- const { http, https } = await this.palettes();
655
- const detected = [...http, ...https];
674
+ const { httpWithTwins, httpsWithTwins } = await this.palettes();
675
+ const detected = [...httpWithTwins, ...httpsWithTwins];
656
676
  const detectedUrls = new Set(detected.map((e) => e.baseUrl));
657
677
  const changed = change(this.addressState(detected), {
658
678
  detectedUrls,
@@ -731,7 +751,7 @@ var LocalNetworkAddon = class extends BaseAddon {
731
751
  */
732
752
  async buildAdvertisedEndpoints(includeLoopback, ipv4Only, scheme, httpsPort) {
733
753
  await this.reconcileMeshEndpoint();
734
- const detected = this.endpointsNow(includeLoopback, ipv4Only, scheme, httpsPort);
754
+ const detected = withLanHttpsCounterparts(this.endpointsNow(includeLoopback, ipv4Only, scheme, httpsPort), httpsPort);
735
755
  return withAppConnectionCustomEndpoints(detected, this.addressState(detected));
736
756
  }
737
757
  /**
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BCKOeWu_.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
7
  //#region src/builtins/loki-logging/loki-payload.ts
8
8
  /**
9
9
  * Loki rejects a label name that is not a valid Prometheus label
@@ -1,4 +1,4 @@
1
- import { _r as BaseAddon, an as logDestinationCapability } from "../../dist-Bt8GTRHB.mjs";
1
+ import { br as BaseAddon, cn as logDestinationCapability } from "../../dist-CYcBqnXk.mjs";
2
2
  //#region src/builtins/loki-logging/loki-payload.ts
3
3
  /**
4
4
  * Loki rejects a label name that is not a valid Prometheus label
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BCKOeWu_.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
7
  let node_fs_promises = require("node:fs/promises");
8
8
  let node_os = require("node:os");
9
9
  node_os = require_chunk.__toESM(node_os);
@@ -1,4 +1,4 @@
1
- import { Bt as foldSnapshotByFunction, Dn as resolveBucketMs, Nr as createEvent, _r as BaseAddon, dn as metricsProviderCapability, gr as errMsg, li as EventCategory, wn as reducePoints } from "../../dist-Bt8GTRHB.mjs";
1
+ import { An as resolveBucketMs, Dn as reducePoints, Ir as createEvent, Ut as foldSnapshotByFunction, br as BaseAddon, fi as EventCategory, mn as metricsProviderCapability, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
2
2
  import { access, readFile, readdir } from "node:fs/promises";
3
3
  import * as os from "node:os";
4
4
  import { platform } from "node:os";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BCKOeWu_.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
7
  let node_os = require("node:os");
8
8
  node_os = require_chunk.__toESM(node_os);
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { o as __toESM, r as __exportAll } from "../../chunk-CNf5ZN-e.mjs";
2
- import { Ln as scoreRuntimes, Lr as emitReadiness, _r as BaseAddon, gr as errMsg, jt as enumerateInferenceDevices, li as EventCategory, xn as platformProbeCapability } from "../../dist-Bt8GTRHB.mjs";
2
+ import { Bn as scoreRuntimes, Br as emitReadiness, Pt as enumerateInferenceDevices, br as BaseAddon, fi as EventCategory, wn as platformProbeCapability, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
3
3
  import * as os from "node:os";
4
4
  import * as fs from "node:fs";
5
5
  import { execFile } from "node:child_process";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BCKOeWu_.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
7
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
8
8
  /**
9
9
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -1,4 +1,4 @@
1
- import { _r as BaseAddon, li as EventCategory } from "../../dist-Bt8GTRHB.mjs";
1
+ import { br as BaseAddon, fi as EventCategory } from "../../dist-CYcBqnXk.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BCKOeWu_.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
7
  const require_snapshot_courtesy = require("../../snapshot-courtesy-D_C5-nC0.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
@@ -1,4 +1,4 @@
1
- import { Bn as snapshotCapability, Jr as nodePin, Kn as streamQualityLabel, _r as BaseAddon, a as BatteryStatusSchema, et as bareAddonId, gr as errMsg, hr as DeviceType, li as EventCategory, pr as DeviceFeature, tt as batteryCapability, un as memoizePinnedFfmpeg, wt as deriveBatteryPresence } from "../../dist-Bt8GTRHB.mjs";
1
+ import { Dt as deriveBatteryPresence, Un as snapshotCapability, Yn as streamQualityLabel, Zr as nodePin, br as BaseAddon, fi as EventCategory, gr as DeviceFeature, it as batteryCapability, pn as memoizePinnedFfmpeg, rt as bareAddonId, s as BatteryStatusSchema, vr as DeviceType, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
2
2
  import { i as renderCourtesyOverlayJpeg, n as courtesyCacheKey, r as renderCourtesyJpeg } from "../../snapshot-courtesy-CyFs1M3I.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
@@ -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-BCKOeWu_.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let node_fs_promises = require("node:fs/promises");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Wn as storageProviderCapability, _r as BaseAddon, zt as filesystemBrowseCapability } from "../../dist-Bt8GTRHB.mjs";
1
+ import { Ht as filesystemBrowseCapability, br as BaseAddon, qn as storageProviderCapability } from "../../dist-CYcBqnXk.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
4
4
  import * as path$1 from "node:path";
@@ -4,7 +4,7 @@ Object.defineProperties(exports, {
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
6
  const require_builtins_sqlite_storage_filesystem_storage_addon = require("./filesystem-storage.addon.js");
7
- const require_wal_maintenance = require("../../wal-maintenance-ChzCPUi2.js");
7
+ const require_wal_maintenance = require("../../wal-maintenance-LZYd8iT-.js");
8
8
  const require_builtins_sqlite_storage_sqlite_settings_addon = require("./sqlite-settings.addon.js");
9
9
  //#region src/builtins/sqlite-storage/config-store.ts
10
10
  var ConfigStore = class {
@@ -1,5 +1,5 @@
1
1
  import { FilesystemStorageAddon, t as FilesystemStorageProvider } from "./filesystem-storage.addon.mjs";
2
- import { A as SQLITE_PAGE_CACHE_CEILING_KIB, B as sqliteEngineStorm, D as SQLITE_JOURNAL_SIZE_LIMIT_BYTES, F as SQLITE_PROFILE_REPORT_FLOOR_MS, I as SQLITE_PROFILE_REPORT_INTERVAL_MS, L as SQLITE_PROFILE_TOP_N, M as sqliteMmapSizeFor, N as sqlitePageCacheKibFor, O as SQLITE_MMAP_CEILING_BYTES, P as SQLITE_ENGINE_STORM_WALL_SHARE, R as SQLITE_SLOW_CALL_MS, a as WalMaintenance, c as SqliteSettingsBackend, i as WAL_MAINTENANCE_INTERVAL_MS, j as SQLITE_PAGE_CACHE_FLOOR_KIB, k as SQLITE_MMAP_FLOOR_BYTES, n as WAL_HIGH_WATER_BYTES, r as WAL_IDLE_QUIET_MS, t as WAL_CHECKPOINT_BUSY_TIMEOUT_MS, z as SqliteOpProfiler } from "../../wal-maintenance-uQGuStFW.mjs";
2
+ import { A as SQLITE_PAGE_CACHE_CEILING_KIB, B as sqliteEngineStorm, D as SQLITE_JOURNAL_SIZE_LIMIT_BYTES, F as SQLITE_PROFILE_REPORT_FLOOR_MS, I as SQLITE_PROFILE_REPORT_INTERVAL_MS, L as SQLITE_PROFILE_TOP_N, M as sqliteMmapSizeFor, N as sqlitePageCacheKibFor, O as SQLITE_MMAP_CEILING_BYTES, P as SQLITE_ENGINE_STORM_WALL_SHARE, R as SQLITE_SLOW_CALL_MS, a as WalMaintenance, c as SqliteSettingsBackend, i as WAL_MAINTENANCE_INTERVAL_MS, j as SQLITE_PAGE_CACHE_FLOOR_KIB, k as SQLITE_MMAP_FLOOR_BYTES, n as WAL_HIGH_WATER_BYTES, r as WAL_IDLE_QUIET_MS, t as WAL_CHECKPOINT_BUSY_TIMEOUT_MS, z as SqliteOpProfiler } from "../../wal-maintenance-DgLLPK14.mjs";
3
3
  import { SqliteSettingsAddon } from "./sqlite-settings.addon.mjs";
4
4
  //#region src/builtins/sqlite-storage/config-store.ts
5
5
  var ConfigStore = class {
@@ -3,9 +3,9 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BCKOeWu_.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-u3Wwkdrq.js");
8
- const require_wal_maintenance = require("../../wal-maintenance-ChzCPUi2.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-CEiCaI_j.js");
8
+ const require_wal_maintenance = require("../../wal-maintenance-LZYd8iT-.js");
9
9
  const require_sqlite_snapshot_protocol = require("../../sqlite-snapshot-protocol-B9OndqZv.js");
10
10
  const require_wal_checkpoint_policy = require("../../wal-checkpoint-policy-d2z2qPqx.js");
11
11
  let node_fs_promises = require("node:fs/promises");
@@ -1,6 +1,6 @@
1
- import { $n as vectorStoreCapability, Sr as RUNTIME_DEFAULTS, _ as DATABASE_SNAPSHOT_TIMEOUT_MS, _r as BaseAddon, bt as databaseSnapshotCapability, et as bareAddonId, g as DATABASE_SNAPSHOT_SUFFIX, gr as errMsg, h as DATABASE_SNAPSHOT_PARTIAL_SUFFIX, v as DATA_STORE_DATABASES, yt as dataStoreProviderCapability } from "../../dist-Bt8GTRHB.mjs";
2
- import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys-CmcEitC2.mjs";
3
- import { C as callControl, E as controlTargetOf, S as trustResult, T as callVector, _ as collectTransferables, a as WalMaintenance, c as SqliteSettingsBackend, d as CrossDatabaseTransactError, f as DatabaseBusyError, m as rehydrateError, o as createVectorIndex, p as DuplicatePlacementError, s as vectorProviderOf, u as CollectionPlacementError, v as isFileHostMessage, w as callData } from "../../wal-maintenance-uQGuStFW.mjs";
1
+ import { Ct as databaseSnapshotCapability, St as dataStoreProviderCapability, Tr as RUNTIME_DEFAULTS, _ as DATABASE_SNAPSHOT_PARTIAL_SUFFIX, b as DATA_STORE_DATABASES, br as BaseAddon, nr as vectorStoreCapability, rt as bareAddonId, v as DATABASE_SNAPSHOT_SUFFIX, y as DATABASE_SNAPSHOT_TIMEOUT_MS, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
2
+ import { r as retiredKeyStoreOf, t as purgeRetiredSettingsKeys } from "../../retired-settings-keys-CyDdyjLP.mjs";
3
+ import { C as callControl, E as controlTargetOf, S as trustResult, T as callVector, _ as collectTransferables, a as WalMaintenance, c as SqliteSettingsBackend, d as CrossDatabaseTransactError, f as DatabaseBusyError, m as rehydrateError, o as createVectorIndex, p as DuplicatePlacementError, s as vectorProviderOf, u as CollectionPlacementError, v as isFileHostMessage, w as callData } from "../../wal-maintenance-DgLLPK14.mjs";
4
4
  import { r as isSnapshotWorkerMessage } from "../../sqlite-snapshot-protocol-2QaTouWV.mjs";
5
5
  import { a as isWorkerMessage, t as WAL_CHECKPOINT_LARGE_PASS_FRAMES } from "../../wal-checkpoint-policy-BahrTtyD.mjs";
6
6
  import { createRequire } from "node:module";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-BCKOeWu_.js");
6
+ const require_dist = require("../../dist-CCH3XPqO.js");
7
7
  let zod = require("zod");
8
8
  let node_crypto = require("node:crypto");
9
9
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,4 +1,4 @@
1
- import { Ft as evictionPolicyOfLocation, G as StorageLocationTypeSchema, Gr as isSecretMarker, Hn as storageMigrationCapability, Jt as isLocationEnabled, K as StorageMigrationJobSchema, P as LegacyStorageLocationDefaultSchema, Rn as settingsStoreCapability, U as StorageCleanupJobSchema, Ut as gbToBytes, Vn as storageCapability, W as StorageLocationModeSchema, Xr as parseJsonObject, _r as BaseAddon, ci as transformSecretWrite, cn as mayReadLocation, er as withLocationMode, fn as modeMayWrite, jn as resolveLocationMode, jr as collectSecretConfigKeys, li as EventCategory, ln as mayWriteToLocation, ri as secretTreeFromPaths, ti as resolveSecretMarkers, tn as legacyModeOf, xr as REDACTED_SECRET } from "../../dist-Bt8GTRHB.mjs";
1
+ import { $r as parseJsonObject, Gn as storageMigrationCapability, I as LegacyStorageLocationDefaultSchema, J as StorageLocationTypeSchema, Jr as isSecretMarker, K as StorageCleanupJobSchema, Kt as gbToBytes, Pn as resolveLocationMode, Pr as collectSecretConfigKeys, Rt as evictionPolicyOfLocation, Vn as settingsStoreCapability, Wn as storageCapability, Y as StorageMigrationJobSchema, Zt as isLocationEnabled, br as BaseAddon, di as transformSecretWrite, dn as mayReadLocation, fi as EventCategory, fn as mayWriteToLocation, hn as modeMayWrite, ii as resolveSecretMarkers, in as legacyModeOf, oi as secretTreeFromPaths, q as StorageLocationModeSchema, rr as withLocationMode, wr as REDACTED_SECRET } from "../../dist-CYcBqnXk.mjs";
2
2
  import { z } from "zod";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { containsOrEquals, physicalRootOf } from "@camstack/types/node";