@camstack/system 1.2.436 → 1.2.437

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 (79) hide show
  1. package/dist/{agent-https-B8lKYVtU.mjs → agent-https-BPfHrI4c.mjs} +3 -3
  2. package/dist/auth/login-session-manager.d.ts +2 -0
  3. package/dist/auth/session-revocation-bus.d.ts +32 -0
  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 +5 -5
  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 +43 -2
  33. package/dist/builtins/local-auth/local-auth.addon.mjs +43 -3
  34. package/dist/builtins/local-network/local-network.addon.js +1 -1
  35. package/dist/builtins/local-network/local-network.addon.mjs +4 -4
  36. package/dist/builtins/loki-logging/index.js +1 -1
  37. package/dist/builtins/loki-logging/index.mjs +1 -1
  38. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  39. package/dist/builtins/native-metrics/native-metrics.addon.mjs +10 -10
  40. package/dist/builtins/platform-probe/index.js +1 -1
  41. package/dist/builtins/platform-probe/index.mjs +8 -8
  42. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  43. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  44. package/dist/builtins/snapshot/index.js +1 -1
  45. package/dist/builtins/snapshot/index.mjs +1 -1
  46. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  47. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  48. package/dist/builtins/sqlite-storage/index.js +1 -1
  49. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  50. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
  51. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
  52. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  53. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  54. package/dist/builtins/system-config/system-config.addon.d.ts +9 -0
  55. package/dist/builtins/system-config/system-config.addon.js +117 -72
  56. package/dist/builtins/system-config/system-config.addon.mjs +117 -73
  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-BAOlCu4j.js → composition-sources-BIT8IUKm.js} +1 -1
  60. package/dist/{composition-sources-gN_BWUKp.mjs → composition-sources-tpYR0f1x.mjs} +1 -1
  61. package/dist/{constants-BFpowodq.mjs → constants-Bc6trhoW.mjs} +1 -1
  62. package/dist/{constants-GENKqk9k.js → constants-CwRY32Nx.js} +1 -1
  63. package/dist/{device-ca-BNM5ai4t.mjs → device-ca-BhdBByGD.mjs} +1 -1
  64. package/dist/{device-ca-CuWuRW9N.js → device-ca-DImD8IzR.js} +1 -1
  65. package/dist/{dist-DVe0Nsp8.js → dist-CEAyXW3Q.js} +44 -2
  66. package/dist/{dist-DjD2M79P.mjs → dist-m5JkT8UN.mjs} +33 -3
  67. package/dist/file-host-worker.js +1 -1
  68. package/dist/file-host-worker.mjs +1 -1
  69. package/dist/{hub-mdns-ciao-DJRwtlA8.mjs → hub-mdns-ciao-DMlQTdPU.mjs} +1 -1
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.js +8 -6
  72. package/dist/index.mjs +23 -22
  73. package/dist/{restore-archive-D4h904rb.js → restore-archive-C75srVbG.js} +1 -1
  74. package/dist/{restore-archive-BxmP1ChO.mjs → restore-archive-DNxAStrJ.mjs} +1 -1
  75. package/dist/{retired-settings-keys-CQaknvx1.mjs → retired-settings-keys-C5qP9QIf.mjs} +1 -1
  76. package/dist/{retired-settings-keys-CYP5IZJ5.js → retired-settings-keys-DNfV28R_.js} +1 -1
  77. package/dist/{wal-maintenance-Br60onAQ.js → wal-maintenance-Ch79gy9S.js} +0 -0
  78. package/dist/{wal-maintenance-CaDsrJM_.mjs → wal-maintenance-DvnVO5IK.mjs} +0 -0
  79. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { X509Certificate, createHash, createPrivateKey, randomBytes, webcrypto }
3
3
  import { writeOwnerOnlyFileSync } from "@camstack/types/node";
4
4
  import { isIP } from "node:net";
5
5
  import { join } from "node:path";
6
- import * as os from "node:os";
6
+ import * as os$1 from "node:os";
7
7
  import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
8
8
  //#region src/tls/agent-https-names.ts
9
9
  /**
@@ -189,8 +189,8 @@ function evaluateExistingCert(input) {
189
189
  /** The real machine. The only place in `tls/` that touches `os`. */
190
190
  function systemHostFacts() {
191
191
  return {
192
- hostname: os.hostname(),
193
- networkInterfaces: os.networkInterfaces()
192
+ hostname: os$1.hostname(),
193
+ networkInterfaces: os$1.networkInterfaces()
194
194
  };
195
195
  }
196
196
  /**
@@ -121,6 +121,8 @@ export declare class LoginSessionManager {
121
121
  listActive(): readonly LoginSessionSummary[];
122
122
  /** Delete rows expired more than 7 days ago or revoked more than 30. Returns how many. */
123
123
  reap(): Promise<number>;
124
+ /** Tell the hub which sessions just ended — right after the mirror, before the store write. */
125
+ private announce;
124
126
  private newRefreshToken;
125
127
  private remember;
126
128
  private forget;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * "These login sessions just ended" — the one announcement every revoke path
3
+ * of the login-session table makes, so the hub can end what those sessions
4
+ * still HOLD (open WebSockets, live media). A revoked `sid` is refused on the
5
+ * next call; without this the socket stays open and the client keeps polling
6
+ * as an anonymous principal.
7
+ *
8
+ * Process-global (`Symbol.for`), like the hub-internal user-management surface:
9
+ * the table lives in `local-auth` and the listener in the hub, and neither may
10
+ * import the other. Listeners are synchronous; one that throws never reaches
11
+ * the revoke (reported to `onListenerError`).
12
+ */
13
+ import type { LoginSessionRevocation } from "./login-session-manager.js";
14
+ export interface SessionsRevokedEvent {
15
+ /** The sessions that ended just now (never one that was already ended). */
16
+ readonly sessionIds: readonly string[];
17
+ /** The user they belong to, when the revoke named one. */
18
+ readonly userId: string | null;
19
+ /**
20
+ * The revoke was "everything of this user" (logout everywhere, password
21
+ * change or reset, deletion): a connection of `userId` that carries NO
22
+ * session id (a pre-session token) ends too, except `exceptSessionId`.
23
+ */
24
+ readonly allOfUser: boolean;
25
+ readonly exceptSessionId: string | null;
26
+ readonly reason: LoginSessionRevocation;
27
+ }
28
+ export type SessionsRevokedListener = (event: SessionsRevokedEvent) => void;
29
+ /** Subscribe; returns the unsubscribe. */
30
+ export declare function onSessionsRevoked(listener: SessionsRevokedListener): () => void;
31
+ /** Announce an ended batch. A listener that throws never reaches the revoke. */
32
+ export declare function announceSessionsRevoked(event: SessionsRevokedEvent, onListenerError?: (error: unknown) => void): void;
@@ -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-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { Q as addonPagesCapability, br as errMsg, di as EventCategory, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { $ as addonPagesCapability, Cr as BaseAddon, Sr as errMsg, pi as EventCategory } from "../../dist-m5JkT8UN.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { br as errMsg, di as EventCategory, et as addonWidgetsCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, Sr as errMsg, pi as EventCategory, tt as addonWidgetsCapability } from "../../dist-m5JkT8UN.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  //#region src/builtins/alerts/device-label.ts
8
8
  /**
9
9
  * Operator-facing device label for alert messages.
@@ -1,4 +1,4 @@
1
- import { Lr as createEvent, br as errMsg, di as EventCategory, i as AlertSchema, tt as alertsCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, Sr as errMsg, i as AlertSchema, nt as alertsCapability, pi as EventCategory, zr as createEvent } from "../../dist-m5JkT8UN.mjs";
2
2
  //#region src/builtins/alerts/device-label.ts
3
3
  /**
4
4
  * Operator-facing device label for alert messages.
@@ -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-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  //#region src/builtins/autotrack/autotrack-config.ts
8
8
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
9
9
  deadZoneFraction: .5,
@@ -1,4 +1,4 @@
1
- import { Dn as ptzAutotrackCapability, Kr as isEvent, br as errMsg, di as EventCategory, it as bareAddonId, k as FIRST_LEVEL_MACRO_CLASSES, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, Jr as isEvent, On as ptzAutotrackCapability, Sr as errMsg, at as bareAddonId, k as FIRST_LEVEL_MACRO_CLASSES, pi as EventCategory } from "../../dist-m5JkT8UN.mjs";
2
2
  //#region src/builtins/autotrack/autotrack-config.ts
3
3
  var DEFAULT_AUTOTRACK_LOOP_CONFIG = {
4
4
  deadZoneFraction: .5,
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DVe0Nsp8.js");
7
- const require_restore_archive = require("../../restore-archive-D4h904rb.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
+ const require_restore_archive = require("../../restore-archive-C75srVbG.js");
8
8
  let node_crypto = require("node:crypto");
9
9
  let node_fs_promises = require("node:fs/promises");
10
10
  node_fs_promises = require_chunk.__toESM(node_fs_promises);
@@ -1,5 +1,5 @@
1
- import { Zr as nodePin, ci as toNodeId, di as EventCategory, pn as mayWriteToLocation, qn as storageOccupancyCapability, rt as backupCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
2
- import { a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-BxmP1ChO.mjs";
1
+ import { $r as nodePin, Cr as BaseAddon, Yn as storageOccupancyCapability, it as backupCapability, mn as mayWriteToLocation, pi as EventCategory, ui as toNodeId } from "../../dist-m5JkT8UN.mjs";
2
+ import { a as BackupSnapshotRefusedError, d as ENCRYPTED_BACKUP_SUFFIX, f as generateBackupKeyPair, i as BackupCancelledError, l as BackupKeyFormatError, m as parseBackupSecretKey, n as precheckRestoreKey, o as DEFAULT_BACKUP_DATABASES, p as parseBackupPublicKey, r as prepareRestoreArchive, s as SystemBackupService } from "../../restore-archive-DNxAStrJ.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import * as fsp from "node:fs/promises";
5
5
  import * as path$1 from "node:path";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  const require_settle_sources = require("../../settle-sources-Bhsy57y-.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/calendars/calendar-color.ts
@@ -1,4 +1,4 @@
1
- import { h as CalendarPreferencesSchema, ut as calendarsCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, dt as calendarsCapability, h as CalendarPreferencesSchema } from "../../dist-m5JkT8UN.mjs";
2
2
  import { t as settleSourcesWithTimeout } from "../../settle-sources-CDtNC8ub.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/calendars/calendar-color.ts
@@ -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-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  let zod = require("zod");
8
8
  let _camstack_types_node = require("@camstack/types/node");
9
9
  let node_path = require("node:path");
@@ -1,4 +1,4 @@
1
- import { D as DeclaredDevices, Lr as createEvent, S as DERIVED_CAMERA_SILENCED_CAP_NAMES, Tt as declarationOwnerNodeId, Wn as snapshotCapability, Wr as hydrateSchema, Yn as streamCatalogCapability, _n as motionCapability, _r as DeviceFeature, br as errMsg, di as EventCategory, dt as cameraGridLayoutCapability, mn as memoizePinnedFfmpeg, o as BaseDevice, or as buildFfmpegArgs, xr as BaseAddon, yr as DeviceType, z as MOTION_CLOSE_AFTER_MS } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, D as DeclaredDevices, Et as declarationOwnerNodeId, Kn as snapshotCapability, Kr as hydrateSchema, S as DERIVED_CAMERA_SILENCED_CAP_NAMES, Sr as errMsg, Zn as streamCatalogCapability, cr as buildFfmpegArgs, ft as cameraGridLayoutCapability, hn as memoizePinnedFfmpeg, o as BaseDevice, pi as EventCategory, vn as motionCapability, xr as DeviceType, yr as DeviceFeature, z as MOTION_CLOSE_AFTER_MS, zr as createEvent } from "../../dist-m5JkT8UN.mjs";
2
2
  import { z } from "zod";
3
3
  import { FfmpegProcess } from "@camstack/types/node";
4
4
  import { join } from "node:path";
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DVe0Nsp8.js");
7
- const require_composition_sources = require("../../composition-sources-BAOlCu4j.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
+ const require_composition_sources = require("../../composition-sources-BIT8IUKm.js");
8
8
  let zod = require("zod");
9
9
  //#region src/builtins/shared/device-state-changed.ts
10
10
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -1,5 +1,5 @@
1
- import { D as DeclaredDevices, Lr as createEvent, Rt as evaluateCompositionField, Vt as expressionContainsBuiltinCall, ar as COMPOSER_ADDON_ID, br as errMsg, cr as composedDeviceRef, d as COMPOSED_ITEM_FIXED_FIELDS, di as EventCategory, dr as compositionItemFieldPath, fr as compositionSliceKey, gr as toExpressionValue, hr as disarmRoseMemory, ht as compositionFieldKey, lr as composedDeviceStableId, mr as createStatefulExpressionMemory, mt as composerCapability, o as BaseDevice, ot as buildCapabilityLookup, pr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, sr as cloneStatefulExpressionMemory, ur as compositionFeatureEnabled, wn as planComposition, xr as BaseAddon, yr as DeviceType } from "../../dist-DjD2M79P.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-gN_BWUKp.mjs";
1
+ import { Cr as BaseAddon, D as DeclaredDevices, Ht as expressionContainsBuiltinCall, Sr as errMsg, Tn as planComposition, _r as disarmRoseMemory, d as COMPOSED_ITEM_FIXED_FIELDS, dr as composedDeviceStableId, fr as compositionFeatureEnabled, gr as createStatefulExpressionMemory, gt as compositionFieldKey, hr as compositionSourceKey, ht as composerCapability, lr as cloneStatefulExpressionMemory, mr as compositionSliceKey, o as BaseDevice, pi as EventCategory, pr as compositionItemFieldPath, r as ALL_CAPABILITY_DEFINITIONS, sr as COMPOSER_ADDON_ID, st as buildCapabilityLookup, ur as composedDeviceRef, vr as toExpressionValue, xr as DeviceType, zr as createEvent, zt as evaluateCompositionField } from "../../dist-m5JkT8UN.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-tpYR0f1x.mjs";
3
3
  import { z } from "zod";
4
4
  //#region src/builtins/shared/device-state-changed.ts
5
5
  /** Structural narrowing helper for untrusted bus payloads. */
@@ -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-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/console-logging/console-destination.ts
9
9
  var LEVEL_RANK = {
@@ -1,4 +1,4 @@
1
- import { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, un as logDestinationCapability } from "../../dist-m5JkT8UN.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/console-logging/console-destination.ts
4
4
  var LEVEL_RANK = {
@@ -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-DVe0Nsp8.js");
4
- const require_composition_sources = require("../../composition-sources-BAOlCu4j.js");
3
+ const require_dist = require("../../dist-CEAyXW3Q.js");
4
+ const require_composition_sources = require("../../composition-sources-BIT8IUKm.js");
5
5
  let node_crypto = require("node:crypto");
6
6
  let _camstack_types_node = require("@camstack/types/node");
7
7
  let node_fs_promises = require("node:fs/promises");
@@ -1,11 +1,11 @@
1
- import { $n as validateComposition, D as DeclaredDevices, Mn as resolveCoreBlockEntry, Nn as resolveCoreBlockFiles, Wr as hydrateSchema, _t as coreBlockAddonId, br as errMsg, bt as coreBlockSourceKind, cr as composedDeviceRef, f as COMPOSER_RUNNER_ID, g as CoreBlockSchema, gt as compositionSourceRefs, kn as replacedFieldKeys, kt as describeComposableCaps, m as CORE_BLOCK_ADDON_PREFIX, ot as buildCapabilityLookup, p as CORE_BLOCKS_ADDON_ID, pr as compositionSourceKey, r as ALL_CAPABILITY_DEFINITIONS, vn as normalizeCoreBlockWrite, vt as coreBlockComposition, wn as planComposition, xr as BaseAddon, xt as coreBlocksCapability, yt as coreBlockIdFromAddonId } from "../../dist-DjD2M79P.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-gN_BWUKp.mjs";
1
+ import { An as replacedFieldKeys, At as describeComposableCaps, Cr as BaseAddon, D as DeclaredDevices, Kr as hydrateSchema, Nn as resolveCoreBlockEntry, Pn as resolveCoreBlockFiles, Sr as errMsg, St as coreBlocksCapability, Tn as planComposition, _t as compositionSourceRefs, bt as coreBlockIdFromAddonId, f as COMPOSER_RUNNER_ID, g as CoreBlockSchema, hr as compositionSourceKey, m as CORE_BLOCK_ADDON_PREFIX, p as CORE_BLOCKS_ADDON_ID, r as ALL_CAPABILITY_DEFINITIONS, st as buildCapabilityLookup, tr as validateComposition, ur as composedDeviceRef, vt as coreBlockAddonId, xt as coreBlockSourceKind, yn as normalizeCoreBlockWrite, yt as coreBlockComposition } from "../../dist-m5JkT8UN.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-tpYR0f1x.mjs";
3
3
  import { createRequire } from "node:module";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { customizationBlockName } from "@camstack/types/node";
6
6
  import * as fs from "node:fs/promises";
7
7
  import * as path$1 from "node:path";
8
- import * as os from "node:os";
8
+ import * as os$1 from "node:os";
9
9
  import { pathToFileURL } from "node:url";
10
10
  //#region src/builtins/core-blocks/block-package.ts
11
11
  /**
@@ -864,7 +864,7 @@ async function compileFiles(transpiler, files, entryPath) {
864
864
  ok: false,
865
865
  error: "the multi-file bundler is unavailable on this node"
866
866
  };
867
- const work = await fs.mkdtemp(path$1.join(os.tmpdir(), "core-block-compile-"));
867
+ const work = await fs.mkdtemp(path$1.join(os$1.tmpdir(), "core-block-compile-"));
868
868
  try {
869
869
  for (const [rel, content] of Object.entries(files)) {
870
870
  const abs = path$1.resolve(work, rel);
@@ -1810,7 +1810,7 @@ function looksLikeSchema(value) {
1810
1810
  * Never throws.
1811
1811
  */
1812
1812
  async function extractSettingsSchema(js) {
1813
- const dir = await fs.mkdtemp(path$1.join(os.tmpdir(), "core-block-schema-"));
1813
+ const dir = await fs.mkdtemp(path$1.join(os$1.tmpdir(), "core-block-schema-"));
1814
1814
  const file = path$1.join(dir, "block.mjs");
1815
1815
  try {
1816
1816
  await fs.writeFile(file, js, "utf-8");
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-DVe0Nsp8.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-CYP5IZJ5.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-DNfV28R_.js");
8
8
  let zod = require("zod");
9
9
  let node_crypto = require("node:crypto");
10
10
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,5 +1,5 @@
1
- import { A as FieldClaimModeSchema, Ar as WELL_KNOWN_TAB_MAP, Bt as expandContainer, Dt as defineExtensionSlotProvider, Gr as isDeviceConfigCap, Ir as collectZodSecretPaths, It as enumerateItemArrayFields, Jr as isSecretClear, Kt as formatMinutes, Lt as enumerateSchemaFields, Mt as deviceManagerCapability, Nt as deviceStateCapability, O as DeviceStatusSchema, Pt as deviceStatusCapability, R as MINUTES_PER_DAY, Rn as runtimeStatePolicyFor, Sn as parseStreamParamsFormPatch, St as createDeviceExtensionProvider, Un as siteZoneKey, W as STREAM_PROFILE_META, Xr as isSecretMarkerLike, Yr as isSecretMarker, _r as DeviceFeature, br as errMsg, c as CAMERA_SWITCH_ORDER, cn as locationIconKey, di as EventCategory, ft as canonicalIconKey, ii as resolveSecretMarkers, in as legacyAutoLinkIds, j as FieldClaimSchema, jt as deviceExtensionCapability, kr as SECRET_CLEAR, li as toSecretFieldView, lt as buildStreamParamsConfigSchema, oi as secretTreeFromPaths, qr as isKeychainStoredField, r as ALL_CAPABILITY_DEFINITIONS, si as sleep$1, u as CAP_NAMES_WITH_STATUS, ui as transformSecretWrite, vr as DeviceRole, x as DAY_NAMES, xr as BaseAddon, yn as normalizeUnit, yr as DeviceType } from "../../dist-DjD2M79P.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-CQaknvx1.mjs";
1
+ import { A as FieldClaimModeSchema, Cn as parseStreamParamsFormPatch, Cr as BaseAddon, Ct as createDeviceExtensionProvider, Ft as deviceStatusCapability, Gn as siteZoneKey, Lt as enumerateItemArrayFields, Mr as WELL_KNOWN_TAB_MAP, Mt as deviceExtensionCapability, Nt as deviceManagerCapability, O as DeviceStatusSchema, Ot as defineExtensionSlotProvider, Pt as deviceStateCapability, Qr as isSecretMarkerLike, R as MINUTES_PER_DAY, Rr as collectZodSecretPaths, Rt as enumerateSchemaFields, Sr as errMsg, Vt as expandContainer, W as STREAM_PROFILE_META, Xr as isSecretClear, Yr as isKeychainStoredField, Zr as isSecretMarker, an as legacyAutoLinkIds, bn as normalizeUnit, br as DeviceRole, c as CAMERA_SWITCH_ORDER, ci as secretTreeFromPaths, di as toSecretFieldView, fi as transformSecretWrite, j as FieldClaimSchema, jr as SECRET_CLEAR, li as sleep$1, ln as locationIconKey, oi as resolveSecretMarkers, pi as EventCategory, pt as canonicalIconKey, qr as isDeviceConfigCap, qt as formatMinutes, r as ALL_CAPABILITY_DEFINITIONS, u as CAP_NAMES_WITH_STATUS, ut as buildStreamParamsConfigSchema, x as DAY_NAMES, xr as DeviceType, yr as DeviceFeature, zn as runtimeStatePolicyFor } from "../../dist-m5JkT8UN.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-C5qP9QIf.mjs";
3
3
  import { z } from "zod";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { canonicalDeviceFingerprint } from "@camstack/types/node";
@@ -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-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
9
9
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -1,4 +1,4 @@
1
- import { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, un as logDestinationCapability } from "../../dist-m5JkT8UN.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
4
4
  var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
@@ -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-DVe0Nsp8.js");
7
- const require_device_ca = require("../../device-ca-CuWuRW9N.js");
8
- const require_constants = require("../../constants-GENKqk9k.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
+ const require_device_ca = require("../../device-ca-DImD8IzR.js");
8
+ const require_constants = require("../../constants-CwRY32Nx.js");
9
9
  const require_platform_key_source = require("../../platform-key-source-Di7HrlGR.js");
10
10
  let node_crypto = require("node:crypto");
11
11
  let _camstack_types_node = require("@camstack/types/node");
@@ -1,6 +1,6 @@
1
- import { P as KEYCHAIN_RESET_TRIGGER_ACTOR, Qr as normalizeSecretOwner, Ur as formatSecretScope, di as EventCategory, nn as keychainAdminCapability, rn as keychainCapability, ti as parseSecretRef, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
2
- import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-BNM5ai4t.mjs";
3
- import { a as MESH_CA_KEY_REF } from "../../constants-BFpowodq.mjs";
1
+ import { Cr as BaseAddon, Gr as formatSecretScope, P as KEYCHAIN_RESET_TRIGGER_ACTOR, ei as normalizeSecretOwner, in as keychainCapability, pi as EventCategory, ri as parseSecretRef, rn as keychainAdminCapability } from "../../dist-m5JkT8UN.mjs";
2
+ import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-BhdBByGD.mjs";
3
+ import { a as MESH_CA_KEY_REF } from "../../constants-Bc6trhoW.mjs";
4
4
  import { n as getPlatformKeychainKey } from "../../platform-key-source-BWlq0jjn.mjs";
5
5
  import { createCipheriv, createDecipheriv, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
6
6
  import { restrictDirToOwnerSync, restrictFileToOwnerSync, writeOwnerOnlyFileSync } from "@camstack/types/node";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-DVe0Nsp8.js");
3
+ const require_dist = require("../../dist-CEAyXW3Q.js");
4
4
  //#region src/builtins/liveness-monitor/liveness-checks.ts
5
5
  var NO_DEVICES = "liveness:no-devices";
6
6
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -1,4 +1,4 @@
1
- import { H as RecordingStatusSchema, Lr as createEvent, V as RECORDING_SOURCE_CAMSTACK_ADDON, br as errMsg, di as EventCategory, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, H as RecordingStatusSchema, Sr as errMsg, V as RECORDING_SOURCE_CAMSTACK_ADDON, pi as EventCategory, zr as createEvent } from "../../dist-m5JkT8UN.mjs";
2
2
  //#region src/builtins/liveness-monitor/liveness-checks.ts
3
3
  var NO_DEVICES = "liveness:no-devices";
4
4
  var ALL_OFFLINE = "liveness:all-devices-offline";
@@ -3,10 +3,10 @@ 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-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.js");
7
7
  const require_safe_buffer$1 = require("../../safe-buffer-D3aoa-7X.js");
8
8
  const require_ms$1 = require("../../ms-LB3giGoU.js");
9
- const require_device_ca = require("../../device-ca-CuWuRW9N.js");
9
+ const require_device_ca = require("../../device-ca-DImD8IzR.js");
10
10
  let node_crypto = require("node:crypto");
11
11
  node_crypto = require_chunk.__toESM(node_crypto);
12
12
  let crypto$1 = require("crypto");
@@ -6458,6 +6458,33 @@ var ScopedTokenManager = class {
6458
6458
  }
6459
6459
  };
6460
6460
  //#endregion
6461
+ //#region src/auth/session-revocation-bus.ts
6462
+ var BUS_KEY = Symbol.for("camstack.login-sessions.revocation-bus");
6463
+ function listeners() {
6464
+ const existing = Reflect.get(globalThis, BUS_KEY);
6465
+ if (existing instanceof Set) return existing;
6466
+ const created = /* @__PURE__ */ new Set();
6467
+ Reflect.set(globalThis, BUS_KEY, created);
6468
+ return created;
6469
+ }
6470
+ /** Subscribe; returns the unsubscribe. */
6471
+ function onSessionsRevoked(listener) {
6472
+ const set = listeners();
6473
+ set.add(listener);
6474
+ return () => {
6475
+ set.delete(listener);
6476
+ };
6477
+ }
6478
+ /** Announce an ended batch. A listener that throws never reaches the revoke. */
6479
+ function announceSessionsRevoked(event, onListenerError) {
6480
+ if (event.sessionIds.length === 0 && !event.allOfUser) return;
6481
+ for (const listener of [...listeners()]) try {
6482
+ listener(event);
6483
+ } catch (error) {
6484
+ onListenerError?.(error);
6485
+ }
6486
+ }
6487
+ //#endregion
6461
6488
  //#region src/auth/login-session-manager.ts
6462
6489
  /**
6463
6490
  * Login sessions — the server-side record behind every session token.
@@ -6807,6 +6834,7 @@ var LoginSessionManager = class {
6807
6834
  revokedReason: reason
6808
6835
  };
6809
6836
  this.replace(session, updated);
6837
+ this.announce([updated.id], session.userId, false, null, reason);
6810
6838
  await this.persist(updated);
6811
6839
  return true;
6812
6840
  }
@@ -6830,6 +6858,7 @@ var LoginSessionManager = class {
6830
6858
  this.replace(session, updated);
6831
6859
  ended.push(updated);
6832
6860
  }
6861
+ this.announce(ended.map((s) => s.id), userId, true, options.exceptSessionId ?? null, options.reason);
6833
6862
  await this.persistCutoff(userId, at);
6834
6863
  for (const session of ended) await this.persist(session);
6835
6864
  return ended.length;
@@ -6848,6 +6877,7 @@ var LoginSessionManager = class {
6848
6877
  this.replace(session, updated);
6849
6878
  ended.push(updated);
6850
6879
  }
6880
+ this.announce(ended.map((s) => s.id), null, false, null, reason);
6851
6881
  for (const session of ended) await this.persist(session);
6852
6882
  return ended.length;
6853
6883
  }
@@ -6873,6 +6903,16 @@ var LoginSessionManager = class {
6873
6903
  }
6874
6904
  return dead.length;
6875
6905
  }
6906
+ /** Tell the hub which sessions just ended — right after the mirror, before the store write. */
6907
+ announce(sessionIds, userId, allOfUser, exceptSessionId, reason) {
6908
+ announceSessionsRevoked({
6909
+ sessionIds,
6910
+ userId,
6911
+ allOfUser,
6912
+ exceptSessionId,
6913
+ reason
6914
+ }, (error) => this.logger?.error("A session-revocation listener threw — the revoke stands", { meta: { error: error instanceof Error ? error.message : String(error) } }));
6915
+ }
6876
6916
  newRefreshToken() {
6877
6917
  return `${REFRESH_TOKEN_PREFIX}${node_crypto.randomBytes(32).toString("base64url")}`;
6878
6918
  }
@@ -12093,4 +12133,5 @@ exports.UserManager = UserManager;
12093
12133
  exports.attachUserManagementInternal = attachUserManagementInternal;
12094
12134
  exports.getUserManagementInternal = getUserManagementInternal;
12095
12135
  exports.isSettingsReadUnavailable = isSettingsReadUnavailable;
12136
+ exports.onSessionsRevoked = onSessionsRevoked;
12096
12137
  exports.parseTokenExpiry = parseTokenExpiry;
@@ -1,8 +1,8 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { At as deviceCredentialsCapability, C as DEVICE_ENROLLMENT_TTL_MS, G as ScopedTokenSchema, Gt as formatDeviceRevoker, K as SsoBridgeClaimsSchema, Qn as userManagementCapability, Z as UserRecordSchema, a as ApiKeyRecordSchema, ct as buildDeviceSignatureMessage, nt as authProviderCapability, st as buildDeviceEnrollmentLink, w as DEVICE_NONCE_TTL_MS, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
2
+ import { C as DEVICE_ENROLLMENT_TTL_MS, Cr as BaseAddon, G as ScopedTokenSchema, Kt as formatDeviceRevoker, Q as UserRecordSchema, a as ApiKeyRecordSchema, ct as buildDeviceEnrollmentLink, er as userManagementCapability, jt as deviceCredentialsCapability, lt as buildDeviceSignatureMessage, q as SsoBridgeClaimsSchema, rt as authProviderCapability, w as DEVICE_NONCE_TTL_MS } from "../../dist-m5JkT8UN.mjs";
3
3
  import { t as require_safe_buffer } from "../../safe-buffer-B1OjL1I9.mjs";
4
4
  import { t as require_ms } from "../../ms-CgH2OFlD.mjs";
5
- import { _ as setProcessJwtSigningKey, a as importDevicePublicKey, c as rebuildDeviceCaCertificate, d as JWT_SIGNING_KEY_REF, g as processJwtSigningKey, h as loadJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, r as DEVICE_CA_SETTINGS_SECTION, s as loadDeviceCa, t as DEVICE_CA_FIELD, u as verifyDeviceSignature } from "../../device-ca-BNM5ai4t.mjs";
5
+ import { _ as setProcessJwtSigningKey, a as importDevicePublicKey, c as rebuildDeviceCaCertificate, d as JWT_SIGNING_KEY_REF, g as processJwtSigningKey, h as loadJwtSigningKey, i as generateDeviceCa, l as verifyDeviceLeaf, m as getProcessJwtSigningKeyState, n as DEVICE_CA_KEY_REF, o as issueDeviceLeaf, r as DEVICE_CA_SETTINGS_SECTION, s as loadDeviceCa, t as DEVICE_CA_FIELD, u as verifyDeviceSignature } from "../../device-ca-BhdBByGD.mjs";
6
6
  import * as crypto$1 from "node:crypto";
7
7
  import { X509Certificate, createHash, randomUUID, timingSafeEqual } from "node:crypto";
8
8
  import nodeCrypto from "crypto";
@@ -6448,6 +6448,33 @@ var ScopedTokenManager = class {
6448
6448
  }
6449
6449
  };
6450
6450
  //#endregion
6451
+ //#region src/auth/session-revocation-bus.ts
6452
+ var BUS_KEY = Symbol.for("camstack.login-sessions.revocation-bus");
6453
+ function listeners() {
6454
+ const existing = Reflect.get(globalThis, BUS_KEY);
6455
+ if (existing instanceof Set) return existing;
6456
+ const created = /* @__PURE__ */ new Set();
6457
+ Reflect.set(globalThis, BUS_KEY, created);
6458
+ return created;
6459
+ }
6460
+ /** Subscribe; returns the unsubscribe. */
6461
+ function onSessionsRevoked(listener) {
6462
+ const set = listeners();
6463
+ set.add(listener);
6464
+ return () => {
6465
+ set.delete(listener);
6466
+ };
6467
+ }
6468
+ /** Announce an ended batch. A listener that throws never reaches the revoke. */
6469
+ function announceSessionsRevoked(event, onListenerError) {
6470
+ if (event.sessionIds.length === 0 && !event.allOfUser) return;
6471
+ for (const listener of [...listeners()]) try {
6472
+ listener(event);
6473
+ } catch (error) {
6474
+ onListenerError?.(error);
6475
+ }
6476
+ }
6477
+ //#endregion
6451
6478
  //#region src/auth/login-session-manager.ts
6452
6479
  /**
6453
6480
  * Login sessions — the server-side record behind every session token.
@@ -6797,6 +6824,7 @@ var LoginSessionManager = class {
6797
6824
  revokedReason: reason
6798
6825
  };
6799
6826
  this.replace(session, updated);
6827
+ this.announce([updated.id], session.userId, false, null, reason);
6800
6828
  await this.persist(updated);
6801
6829
  return true;
6802
6830
  }
@@ -6820,6 +6848,7 @@ var LoginSessionManager = class {
6820
6848
  this.replace(session, updated);
6821
6849
  ended.push(updated);
6822
6850
  }
6851
+ this.announce(ended.map((s) => s.id), userId, true, options.exceptSessionId ?? null, options.reason);
6823
6852
  await this.persistCutoff(userId, at);
6824
6853
  for (const session of ended) await this.persist(session);
6825
6854
  return ended.length;
@@ -6838,6 +6867,7 @@ var LoginSessionManager = class {
6838
6867
  this.replace(session, updated);
6839
6868
  ended.push(updated);
6840
6869
  }
6870
+ this.announce(ended.map((s) => s.id), null, false, null, reason);
6841
6871
  for (const session of ended) await this.persist(session);
6842
6872
  return ended.length;
6843
6873
  }
@@ -6863,6 +6893,16 @@ var LoginSessionManager = class {
6863
6893
  }
6864
6894
  return dead.length;
6865
6895
  }
6896
+ /** Tell the hub which sessions just ended — right after the mirror, before the store write. */
6897
+ announce(sessionIds, userId, allOfUser, exceptSessionId, reason) {
6898
+ announceSessionsRevoked({
6899
+ sessionIds,
6900
+ userId,
6901
+ allOfUser,
6902
+ exceptSessionId,
6903
+ reason
6904
+ }, (error) => this.logger?.error("A session-revocation listener threw — the revoke stands", { meta: { error: error instanceof Error ? error.message : String(error) } }));
6905
+ }
6866
6906
  newRefreshToken() {
6867
6907
  return `${REFRESH_TOKEN_PREFIX}${crypto$1.randomBytes(32).toString("base64url")}`;
6868
6908
  }
@@ -12061,4 +12101,4 @@ var LocalAuthAddon = class extends BaseAddon {
12061
12101
  }
12062
12102
  };
12063
12103
  //#endregion
12064
- export { LocalAuthAddon, LocalAuthAddon as default, AuthManager as _, attachUserManagementInternal as a, isSettingsReadUnavailable as b, DeviceCredentialManager as c, ADMIN_TOKEN_MAX_LIFETIME_MS as d, ADMIN_TOKEN_PREFIX as f, ScopedTokenManager as g, REFRESH_TOKEN_PREFIX as h, USER_MANAGEMENT_INTERNAL as i, PREVIOUS_LEAF_GRACE_MS as l, LoginSessionManager as m, FIRST_BOOT_ADMIN_USERNAME as n, getUserManagementInternal as o, AdminTokenManager as p, UserManager as r, AuthAuditLog as s, FIRST_BOOT_ADMIN_PASSWORD as t, DeviceCaStore as u, parseTokenExpiry as v, ApiKeyManager as x, SettingsReadUnavailableError as y };
12104
+ export { LocalAuthAddon, LocalAuthAddon as default, ApiKeyManager as S, ScopedTokenManager as _, attachUserManagementInternal as a, SettingsReadUnavailableError as b, DeviceCredentialManager as c, ADMIN_TOKEN_MAX_LIFETIME_MS as d, ADMIN_TOKEN_PREFIX as f, onSessionsRevoked as g, REFRESH_TOKEN_PREFIX as h, USER_MANAGEMENT_INTERNAL as i, PREVIOUS_LEAF_GRACE_MS as l, LoginSessionManager as m, FIRST_BOOT_ADMIN_USERNAME as n, getUserManagementInternal as o, AdminTokenManager as p, UserManager as r, AuthAuditLog as s, FIRST_BOOT_ADMIN_PASSWORD as t, DeviceCaStore as u, AuthManager as v, isSettingsReadUnavailable as x, parseTokenExpiry as y };
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../../chunk-Cek0wNdY.js");
3
- const require_dist = require("../../dist-DVe0Nsp8.js");
3
+ const require_dist = require("../../dist-CEAyXW3Q.js");
4
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");
@@ -1,8 +1,8 @@
1
- import { An as resolveAppConnections, B as NetworkTunnelStartedDataSchema, Cn as pickAppLinkHub, Jt as isAppLinkBase, Ln as resolveNotificationTapAddress, M as HUB_MDNS_SERVICE_TYPE, N as HUB_MDNS_TXT_KEYS, Pn as resolveHubAddressRoles, Zt as isDefaultAppConnectionEndpoint, di as EventCategory, er as validateCustomAddress, l as CAMSTACK_APP_LINK_ORIGIN, pt as checkRoleAddress, sn as localNetworkCapability, xr as BaseAddon } from "../../dist-DjD2M79P.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";
1
+ import { B as NetworkTunnelStartedDataSchema, Cr as BaseAddon, Fn as resolveHubAddressRoles, M as HUB_MDNS_SERVICE_TYPE, N as HUB_MDNS_TXT_KEYS, Qt as isDefaultAppConnectionEndpoint, Rn as resolveNotificationTapAddress, Yt as isAppLinkBase, cn as localNetworkCapability, jn as resolveAppConnections, l as CAMSTACK_APP_LINK_ORIGIN, mt as checkRoleAddress, nr as validateCustomAddress, pi as EventCategory, wn as pickAppLinkHub } from "../../dist-m5JkT8UN.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-DMlQTdPU.mjs";
3
3
  import { z } from "zod";
4
4
  import { isIP } from "node:net";
5
- import * as os from "node:os";
5
+ import * as os$1 from "node:os";
6
6
  import { readFileSync } from "node:fs";
7
7
  //#region src/builtins/local-network/address-book.ts
8
8
  /**
@@ -1186,7 +1186,7 @@ var LocalNetworkAddon = class extends BaseAddon {
1186
1186
  }
1187
1187
  }
1188
1188
  enumerate() {
1189
- return enumerateOsInterfaces(os.networkInterfaces(), readLinuxIpv6Flags());
1189
+ return enumerateOsInterfaces(os$1.networkInterfaces(), readLinuxIpv6Flags());
1190
1190
  }
1191
1191
  /**
1192
1192
  * Replace rotated IPv6 and drop addresses that no longer exist, without
@@ -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-DVe0Nsp8.js");
6
+ const require_dist = require("../../dist-CEAyXW3Q.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 { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-DjD2M79P.mjs";
1
+ import { Cr as BaseAddon, un as logDestinationCapability } from "../../dist-m5JkT8UN.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