@camstack/system 1.2.434 → 1.2.435

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/autotrack/index.js +1 -1
  8. package/dist/builtins/autotrack/index.mjs +1 -1
  9. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +2 -2
  10. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +2 -2
  11. package/dist/builtins/calendars/calendars.addon.js +1 -1
  12. package/dist/builtins/calendars/calendars.addon.mjs +1 -1
  13. package/dist/builtins/camera-grid/index.js +1 -1
  14. package/dist/builtins/camera-grid/index.mjs +1 -1
  15. package/dist/builtins/composer/composer.addon.js +2 -2
  16. package/dist/builtins/composer/composer.addon.mjs +2 -2
  17. package/dist/builtins/console-logging/index.js +1 -1
  18. package/dist/builtins/console-logging/index.mjs +1 -1
  19. package/dist/builtins/core-blocks/core-blocks.addon.js +2 -2
  20. package/dist/builtins/core-blocks/core-blocks.addon.mjs +2 -2
  21. package/dist/builtins/device-manager/device-manager.addon.js +2 -2
  22. package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
  23. package/dist/builtins/hub-forwarder/index.js +1 -1
  24. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  25. package/dist/builtins/keychain/index.js +3 -3
  26. package/dist/builtins/keychain/index.mjs +3 -3
  27. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  28. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  29. package/dist/builtins/local-auth/local-auth.addon.js +2 -2
  30. package/dist/builtins/local-auth/local-auth.addon.mjs +2 -2
  31. package/dist/builtins/local-network/local-network.addon.d.ts +4 -2
  32. package/dist/builtins/local-network/local-network.addon.js +23 -13
  33. package/dist/builtins/local-network/local-network.addon.mjs +23 -13
  34. package/dist/builtins/loki-logging/index.js +1 -1
  35. package/dist/builtins/loki-logging/index.mjs +1 -1
  36. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  37. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  38. package/dist/builtins/platform-probe/index.js +1 -1
  39. package/dist/builtins/platform-probe/index.mjs +1 -1
  40. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  41. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  42. package/dist/builtins/snapshot/index.js +1 -1
  43. package/dist/builtins/snapshot/index.mjs +1 -1
  44. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  45. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  46. package/dist/builtins/sqlite-storage/index.js +1 -1
  47. package/dist/builtins/sqlite-storage/index.mjs +1 -1
  48. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +3 -3
  49. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +3 -3
  50. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  51. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  52. package/dist/builtins/system-config/system-config.addon.js +2 -2
  53. package/dist/builtins/system-config/system-config.addon.mjs +2 -2
  54. package/dist/builtins/winston-logging/index.js +1 -1
  55. package/dist/builtins/winston-logging/index.mjs +1 -1
  56. package/dist/{composition-sources-B7R1oQnY.js → composition-sources-Cm42mgbv.js} +1 -1
  57. package/dist/{composition-sources-CqrDyHM1.mjs → composition-sources-_7W2Ly9s.mjs} +1 -1
  58. package/dist/{constants-CuOfMdYe.js → constants-DL87WgeN.js} +1 -1
  59. package/dist/{constants-CrMPWOug.mjs → constants-DoiTA134.mjs} +1 -1
  60. package/dist/{device-ca-CDjGQQPd.mjs → device-ca-B6YJZus6.mjs} +1 -1
  61. package/dist/{device-ca-D21ZP00q.js → device-ca-WXuKc8AX.js} +1 -1
  62. package/dist/{dist-CYcBqnXk.mjs → dist-Bz4_y8Xy.mjs} +43 -5
  63. package/dist/{dist-CCH3XPqO.js → dist-CnUtkSwN.js} +48 -4
  64. package/dist/file-host-worker.js +1 -1
  65. package/dist/file-host-worker.mjs +1 -1
  66. package/dist/index.js +5 -5
  67. package/dist/index.mjs +5 -5
  68. package/dist/{restore-archive-Do0QwAik.js → restore-archive-BNoFLAg8.js} +1 -1
  69. package/dist/{restore-archive-5ml7uYMf.mjs → restore-archive-DJYuznWP.mjs} +1 -1
  70. package/dist/{retired-settings-keys-CyDdyjLP.mjs → retired-settings-keys-9nA85bwT.mjs} +1 -1
  71. package/dist/{retired-settings-keys-CEiCaI_j.js → retired-settings-keys-CO3RqsDw.js} +1 -1
  72. package/dist/{wal-maintenance-LZYd8iT-.js → wal-maintenance-D3gwRj1B.js} +0 -0
  73. package/dist/{wal-maintenance-DgLLPK14.mjs → wal-maintenance-DLrbapzi.mjs} +0 -0
  74. package/package.json +1 -1
@@ -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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { Z as addonPagesCapability, br as BaseAddon, fi as EventCategory, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
1
+ import { Q as addonPagesCapability, br as errMsg, pi as EventCategory, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { $ as addonWidgetsCapability, br as BaseAddon, fi as EventCategory, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
1
+ import { br as errMsg, et as addonWidgetsCapability, pi as EventCategory, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { Ir as createEvent, br as BaseAddon, et as alertsCapability, fi as EventCategory, i as AlertSchema, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
1
+ import { Lr as createEvent, br as errMsg, i as AlertSchema, pi as EventCategory, tt as alertsCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { En as ptzAutotrackCapability, Gr as isEvent, br as BaseAddon, fi as EventCategory, k as FIRST_LEVEL_MACRO_CLASSES, rt as bareAddonId, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
1
+ import { Dn as ptzAutotrackCapability, Kr as isEvent, br as errMsg, it as bareAddonId, k as FIRST_LEVEL_MACRO_CLASSES, pi as EventCategory, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
7
- const require_restore_archive = require("../../restore-archive-Do0QwAik.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.js");
7
+ const require_restore_archive = require("../../restore-archive-BNoFLAg8.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 { Kn as storageOccupancyCapability, Zr as nodePin, br as BaseAddon, fi as EventCategory, fn as mayWriteToLocation, li as toNodeId, nt as backupCapability } from "../../dist-CYcBqnXk.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-5ml7uYMf.mjs";
1
+ import { Qr as nodePin, pi as EventCategory, pn as mayWriteToLocation, qn as storageOccupancyCapability, rt as backupCapability, ui as toNodeId, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-DJYuznWP.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { br as BaseAddon, h as CalendarPreferencesSchema, lt as calendarsCapability } from "../../dist-CYcBqnXk.mjs";
1
+ import { h as CalendarPreferencesSchema, ut as calendarsCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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, Ir as createEvent, Jn as streamCatalogCapability, S as DERIVED_CAMERA_SILENCED_CAP_NAMES, Un as snapshotCapability, Ur as hydrateSchema, ar as buildFfmpegArgs, br as BaseAddon, fi as EventCategory, gn as motionCapability, gr as DeviceFeature, o as BaseDevice, pn as memoizePinnedFfmpeg, ut as cameraGridLayoutCapability, vr as DeviceType, wt as declarationOwnerNodeId, yr as errMsg, z as MOTION_CLOSE_AFTER_MS } from "../../dist-CYcBqnXk.mjs";
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, dt as cameraGridLayoutCapability, mn as memoizePinnedFfmpeg, o as BaseDevice, or as buildFfmpegArgs, pi as EventCategory, xr as BaseAddon, yr as DeviceType, z as MOTION_CLOSE_AFTER_MS } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
7
- const require_composition_sources = require("../../composition-sources-B7R1oQnY.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.js");
7
+ const require_composition_sources = require("../../composition-sources-Cm42mgbv.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 { Bt as expressionContainsBuiltinCall, Cn as planComposition, D as DeclaredDevices, Ir as createEvent, Lt as evaluateCompositionField, at as buildCapabilityLookup, br as BaseAddon, cr as composedDeviceStableId, d as COMPOSED_ITEM_FIXED_FIELDS, dr as compositionSliceKey, fi as EventCategory, fr as compositionSourceKey, hr as toExpressionValue, ir as COMPOSER_ADDON_ID, lr as compositionFeatureEnabled, mr as disarmRoseMemory, mt as compositionFieldKey, o as BaseDevice, or as cloneStatefulExpressionMemory, pr as createStatefulExpressionMemory, pt as composerCapability, r as ALL_CAPABILITY_DEFINITIONS, sr as composedDeviceRef, ur as compositionItemFieldPath, vr as DeviceType, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
2
- import { n as normalizedNativeOwner } from "../../composition-sources-CqrDyHM1.mjs";
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, 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, pi as EventCategory, 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-Bz4_y8Xy.mjs";
2
+ import { n as normalizedNativeOwner } from "../../composition-sources-_7W2Ly9s.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { br as BaseAddon, cn as logDestinationCapability } from "../../dist-CYcBqnXk.mjs";
1
+ import { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#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-CCH3XPqO.js");
4
- const require_composition_sources = require("../../composition-sources-B7R1oQnY.js");
3
+ const require_dist = require("../../dist-CnUtkSwN.js");
4
+ const require_composition_sources = require("../../composition-sources-Cm42mgbv.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,5 +1,5 @@
1
- import { Cn as planComposition, D as DeclaredDevices, Mn as resolveCoreBlockFiles, On as replacedFieldKeys, Ot as describeComposableCaps, Qn as validateComposition, Ur as hydrateSchema, _n as normalizeCoreBlockWrite, _t as coreBlockComposition, at as buildCapabilityLookup, br as BaseAddon, bt as coreBlocksCapability, f as COMPOSER_RUNNER_ID, fr as compositionSourceKey, g as CoreBlockSchema, gt as coreBlockAddonId, ht as compositionSourceRefs, jn as resolveCoreBlockEntry, m as CORE_BLOCK_ADDON_PREFIX, p as CORE_BLOCKS_ADDON_ID, r as ALL_CAPABILITY_DEFINITIONS, sr as composedDeviceRef, vt as coreBlockIdFromAddonId, yr as errMsg, yt as coreBlockSourceKind } from "../../dist-CYcBqnXk.mjs";
2
- import { t as describeCompositionSources } from "../../composition-sources-CqrDyHM1.mjs";
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-Bz4_y8Xy.mjs";
2
+ import { t as describeCompositionSources } from "../../composition-sources-_7W2Ly9s.mjs";
3
3
  import { createRequire } from "node:module";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { customizationBlockName } from "@camstack/types/node";
@@ -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-CCH3XPqO.js");
7
- const require_retired_settings_keys = require("../../retired-settings-keys-CEiCaI_j.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.js");
7
+ const require_retired_settings_keys = require("../../retired-settings-keys-CO3RqsDw.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, At as deviceExtensionCapability, Et as defineExtensionSlotProvider, Fr as collectZodSecretPaths, Ft as enumerateItemArrayFields, Gt as formatMinutes, Hn as siteZoneKey, It as enumerateSchemaFields, Jr as isSecretMarker, Kr as isKeychainStoredField, Ln as runtimeStatePolicyFor, Mt as deviceStateCapability, Nt as deviceStatusCapability, O as DeviceStatusSchema, Or as SECRET_CLEAR, R as MINUTES_PER_DAY, U as STREAM_PROFILE_META, Wr as isDeviceConfigCap, Yr as isSecretMarkerLike, _r as DeviceRole, br as BaseAddon, c as CAMERA_SWITCH_ORDER, ci as sleep$1, ct as buildStreamParamsConfigSchema, di as transformSecretWrite, dt as canonicalIconKey, fi as EventCategory, gr as DeviceFeature, ii as resolveSecretMarkers, j as FieldClaimSchema, jt as deviceManagerCapability, kr as WELL_KNOWN_TAB_MAP, oi as secretTreeFromPaths, qr as isSecretClear, r as ALL_CAPABILITY_DEFINITIONS, rn as legacyAutoLinkIds, sn as locationIconKey, u as CAP_NAMES_WITH_STATUS, ui as toSecretFieldView, vn as normalizeUnit, vr as DeviceType, x as DAY_NAMES, xn as parseStreamParamsFormPatch, xt as createDeviceExtensionProvider, yr as errMsg, zt as expandContainer } from "../../dist-CYcBqnXk.mjs";
2
- import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-CyDdyjLP.mjs";
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, ai as resolveSecretMarkers, br as errMsg, c as CAMERA_SWITCH_ORDER, cn as locationIconKey, di as toSecretFieldView, fi as transformSecretWrite, ft as canonicalIconKey, in as legacyAutoLinkIds, j as FieldClaimSchema, jt as deviceExtensionCapability, kr as SECRET_CLEAR, li as sleep$1, lt as buildStreamParamsConfigSchema, pi as EventCategory, qr as isKeychainStoredField, r as ALL_CAPABILITY_DEFINITIONS, si as secretTreeFromPaths, u as CAP_NAMES_WITH_STATUS, vr as DeviceRole, x as DAY_NAMES, xr as BaseAddon, yn as normalizeUnit, yr as DeviceType } from "../../dist-Bz4_y8Xy.mjs";
2
+ import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-9nA85bwT.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { br as BaseAddon, cn as logDestinationCapability } from "../../dist-CYcBqnXk.mjs";
1
+ import { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  //#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-CCH3XPqO.js");
7
- const require_device_ca = require("../../device-ca-D21ZP00q.js");
8
- const require_constants = require("../../constants-CuOfMdYe.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.js");
7
+ const require_device_ca = require("../../device-ca-WXuKc8AX.js");
8
+ const require_constants = require("../../constants-DL87WgeN.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 { Hr as formatSecretScope, P as KEYCHAIN_RESET_TRIGGER_ACTOR, Qr as normalizeSecretOwner, br as BaseAddon, fi as EventCategory, nn as keychainCapability, ti as parseSecretRef, tn as keychainAdminCapability } from "../../dist-CYcBqnXk.mjs";
2
- import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-CDjGQQPd.mjs";
3
- import { a as MESH_CA_KEY_REF, p as CLUSTER_SECRET_SETTINGS_KEY } from "../../constants-CrMPWOug.mjs";
1
+ import { $r as normalizeSecretOwner, P as KEYCHAIN_RESET_TRIGGER_ACTOR, Ur as formatSecretScope, ni as parseSecretRef, nn as keychainAdminCapability, pi as EventCategory, rn as keychainCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.mjs";
2
+ import { d as JWT_SIGNING_KEY_REF, n as DEVICE_CA_KEY_REF, p as SYSTEM_SECRET_OWNER } from "../../device-ca-B6YJZus6.mjs";
3
+ import { a as MESH_CA_KEY_REF, p as CLUSTER_SECRET_SETTINGS_KEY } from "../../constants-DoiTA134.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-CCH3XPqO.js");
3
+ const require_dist = require("../../dist-CnUtkSwN.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 { B as RECORDING_SOURCE_CAMSTACK_ADDON, Ir as createEvent, V as RecordingStatusSchema, br as BaseAddon, fi as EventCategory, yr as errMsg } from "../../dist-CYcBqnXk.mjs";
1
+ import { H as RecordingStatusSchema, Lr as createEvent, V as RECORDING_SOURCE_CAMSTACK_ADDON, br as errMsg, pi as EventCategory, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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-D21ZP00q.js");
9
+ const require_device_ca = require("../../device-ca-WXuKc8AX.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");
@@ -1,8 +1,8 @@
1
1
  import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
2
- import { C as DEVICE_ENROLLMENT_TTL_MS, G as SsoBridgeClaimsSchema, W as ScopedTokenSchema, Wt as formatDeviceRevoker, X as UserRecordSchema, Zn as userManagementCapability, a as ApiKeyRecordSchema, br as BaseAddon, kt as deviceCredentialsCapability, ot as buildDeviceEnrollmentLink, st as buildDeviceSignatureMessage, tt as authProviderCapability, w as DEVICE_NONCE_TTL_MS } from "../../dist-CYcBqnXk.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-Bz4_y8Xy.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-CDjGQQPd.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-B6YJZus6.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";
@@ -75,6 +75,8 @@ export declare class LocalNetworkAddon extends BaseAddon<LocalNetworkConfig> {
75
75
  /** Optional public hostname tracked from `NetworkTunnelStarted`/
76
76
  * `Stopped` events on the bus. */
77
77
  private publicHostname;
78
+ /** False for a Quick tunnel: shown in the palette, never picked automatically (D860). */
79
+ private publicHostnameStable;
78
80
  /**
79
81
  * Mesh-reachable endpoint (Tailscale MagicDNS / 100.x), learned from
80
82
  * the `MeshNetworkChanged` event-tail and refreshed by a pull-reconcile
@@ -142,7 +144,7 @@ export declare class LocalNetworkAddon extends BaseAddon<LocalNetworkConfig> {
142
144
  * `onInitialize`. This setter exists for tests + future direct
143
145
  * callers; cleared by passing an empty string.
144
146
  */
145
- setPublicHostname(hostname: string): void;
147
+ setPublicHostname(hostname: string, stable?: boolean): void;
146
148
  /**
147
149
  * Replace the cached mesh endpoint. Set from the `MeshNetworkChanged`
148
150
  * event-tail + the pull-reconcile; exposed for tests + future direct
@@ -270,7 +272,7 @@ export interface LanHttpAdvertisement {
270
272
  * only emitted on `includeAppLink: true`.
271
273
  */
272
274
  export declare function appLinkEndpoint(): ConnectionEndpoint;
273
- export declare function buildEndpoints(interfaces: readonly LocalInterface[], port: number, includeLoopback: boolean, ipv4Only: boolean, publicHostname: string, scheme?: "http" | "https", meshEndpoint?: MeshEndpointCache | null, lanHttp?: LanHttpAdvertisement | null): ConnectionEndpoint[];
275
+ export declare function buildEndpoints(interfaces: readonly LocalInterface[], port: number, includeLoopback: boolean, ipv4Only: boolean, publicHostname: string, scheme?: "http" | "https", meshEndpoint?: MeshEndpointCache | null, lanHttp?: LanHttpAdvertisement | null, publicHostnameStable?: boolean): ConnectionEndpoint[];
274
276
  /**
275
277
  * First-boot heuristic: which addresses should the allowlist start
276
278
  * with? Includes LAN + Wi-Fi IPv4 addresses + plausible IPv6:
@@ -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-CCH3XPqO.js");
3
+ const require_dist = require("../../dist-CnUtkSwN.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");
@@ -608,6 +608,8 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
608
608
  /** Optional public hostname tracked from `NetworkTunnelStarted`/
609
609
  * `Stopped` events on the bus. */
610
610
  publicHostname = "";
611
+ /** False for a Quick tunnel: shown in the palette, never picked automatically (D860). */
612
+ publicHostnameStable = true;
611
613
  /**
612
614
  * Mesh-reachable endpoint (Tailscale MagicDNS / 100.x), learned from
613
615
  * the `MeshNetworkChanged` event-tail and refreshed by a pull-reconcile
@@ -783,7 +785,7 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
783
785
  httpPort: this.resolvedHttpPort(),
784
786
  httpsPort,
785
787
  localHostname: this.config.localHostname || null
786
- } : null);
788
+ } : null, this.publicHostnameStable);
787
789
  }
788
790
  async onInitialize() {
789
791
  if (!this.config.bootSeeded) {
@@ -916,11 +918,14 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
916
918
  }, ALLOWLIST_RECONCILE_INTERVAL_MS);
917
919
  this.allowlistTimer.unref?.();
918
920
  this.ctx.eventBus?.subscribe({ category: require_dist.EventCategory.NetworkTunnelStarted }, (event) => {
919
- const data = event.data ?? {};
920
- if (typeof data.url === "string") try {
921
- const hostname = new URL(data.url).hostname;
922
- if (hostname && !hostname.endsWith(".placeholder") && !hostname.startsWith("pending.")) this.setPublicHostname(hostname);
923
- } catch {}
921
+ const parsed = require_dist.NetworkTunnelStartedDataSchema.safeParse(event.data ?? {});
922
+ if (parsed.success) {
923
+ const data = parsed.data;
924
+ try {
925
+ const hostname = new URL(data.url).hostname;
926
+ if (hostname && !hostname.endsWith(".placeholder") && !hostname.startsWith("pending.")) this.setPublicHostname(hostname, data.stable !== false);
927
+ } catch {}
928
+ }
924
929
  });
925
930
  this.ctx.eventBus?.subscribe({ category: require_dist.EventCategory.NetworkTunnelStopped }, () => this.setPublicHostname(""));
926
931
  this.ctx.eventBus?.subscribe({ category: require_dist.EventCategory.MeshNetworkChanged }, (event) => {
@@ -1031,10 +1036,14 @@ var LocalNetworkAddon = class extends require_dist.BaseAddon {
1031
1036
  * `onInitialize`. This setter exists for tests + future direct
1032
1037
  * callers; cleared by passing an empty string.
1033
1038
  */
1034
- setPublicHostname(hostname) {
1035
- if (this.publicHostname === hostname) return;
1039
+ setPublicHostname(hostname, stable = true) {
1040
+ if (this.publicHostname === hostname && this.publicHostnameStable === stable) return;
1036
1041
  this.publicHostname = hostname;
1037
- this.ctx.logger.info("local-network: public hostname updated", { meta: { hostname: hostname || "(cleared)" } });
1042
+ this.publicHostnameStable = stable;
1043
+ this.ctx.logger.info("local-network: public hostname updated", { meta: {
1044
+ hostname: hostname || "(cleared)",
1045
+ stable
1046
+ } });
1038
1047
  }
1039
1048
  /**
1040
1049
  * Replace the cached mesh endpoint. Set from the `MeshNetworkChanged`
@@ -1363,7 +1372,7 @@ function appLinkEndpoint() {
1363
1372
  priority: -1
1364
1373
  };
1365
1374
  }
1366
- function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostname, scheme = "http", meshEndpoint = null, lanHttp = null) {
1375
+ function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostname, scheme = "http", meshEndpoint = null, lanHttp = null, publicHostnameStable = true) {
1367
1376
  const out = [];
1368
1377
  let priority = 0;
1369
1378
  const preferred = pickPreferred(interfaces);
@@ -1406,13 +1415,14 @@ function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostn
1406
1415
  emit(iface, "lan-ipv6", `${formatKind(iface.kind)} — ${iface.name} (IPv6)`, `${lanScheme}://[${iface.address}]:${lanPort}`, 10 + priority++);
1407
1416
  }
1408
1417
  if (publicHostname) out.push({
1409
- label: "Public tunnel",
1418
+ label: publicHostnameStable ? "Public tunnel" : "Public tunnel (temporary address)",
1410
1419
  baseUrl: `https://${publicHostname}`,
1411
1420
  kind: "public",
1412
1421
  interfaceKind: "public",
1413
1422
  plausible: true,
1414
1423
  plausibleReason: "",
1415
- priority: 100
1424
+ priority: 100,
1425
+ ...publicHostnameStable ? {} : { stable: false }
1416
1426
  });
1417
1427
  if (meshEndpoint && meshEndpoint.host) out.push({
1418
1428
  label: "Mesh (Tailscale)",
@@ -1,4 +1,4 @@
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";
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, er as validateCustomAddress, l as CAMSTACK_APP_LINK_ORIGIN, pi as EventCategory, pt as checkRoleAddress, sn as localNetworkCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.mjs";
2
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";
3
3
  import { z } from "zod";
4
4
  import { isIP } from "node:net";
@@ -605,6 +605,8 @@ var LocalNetworkAddon = class extends BaseAddon {
605
605
  /** Optional public hostname tracked from `NetworkTunnelStarted`/
606
606
  * `Stopped` events on the bus. */
607
607
  publicHostname = "";
608
+ /** False for a Quick tunnel: shown in the palette, never picked automatically (D860). */
609
+ publicHostnameStable = true;
608
610
  /**
609
611
  * Mesh-reachable endpoint (Tailscale MagicDNS / 100.x), learned from
610
612
  * the `MeshNetworkChanged` event-tail and refreshed by a pull-reconcile
@@ -780,7 +782,7 @@ var LocalNetworkAddon = class extends BaseAddon {
780
782
  httpPort: this.resolvedHttpPort(),
781
783
  httpsPort,
782
784
  localHostname: this.config.localHostname || null
783
- } : null);
785
+ } : null, this.publicHostnameStable);
784
786
  }
785
787
  async onInitialize() {
786
788
  if (!this.config.bootSeeded) {
@@ -913,11 +915,14 @@ var LocalNetworkAddon = class extends BaseAddon {
913
915
  }, ALLOWLIST_RECONCILE_INTERVAL_MS);
914
916
  this.allowlistTimer.unref?.();
915
917
  this.ctx.eventBus?.subscribe({ category: EventCategory.NetworkTunnelStarted }, (event) => {
916
- const data = event.data ?? {};
917
- if (typeof data.url === "string") try {
918
- const hostname = new URL(data.url).hostname;
919
- if (hostname && !hostname.endsWith(".placeholder") && !hostname.startsWith("pending.")) this.setPublicHostname(hostname);
920
- } catch {}
918
+ const parsed = NetworkTunnelStartedDataSchema.safeParse(event.data ?? {});
919
+ if (parsed.success) {
920
+ const data = parsed.data;
921
+ try {
922
+ const hostname = new URL(data.url).hostname;
923
+ if (hostname && !hostname.endsWith(".placeholder") && !hostname.startsWith("pending.")) this.setPublicHostname(hostname, data.stable !== false);
924
+ } catch {}
925
+ }
921
926
  });
922
927
  this.ctx.eventBus?.subscribe({ category: EventCategory.NetworkTunnelStopped }, () => this.setPublicHostname(""));
923
928
  this.ctx.eventBus?.subscribe({ category: EventCategory.MeshNetworkChanged }, (event) => {
@@ -1028,10 +1033,14 @@ var LocalNetworkAddon = class extends BaseAddon {
1028
1033
  * `onInitialize`. This setter exists for tests + future direct
1029
1034
  * callers; cleared by passing an empty string.
1030
1035
  */
1031
- setPublicHostname(hostname) {
1032
- if (this.publicHostname === hostname) return;
1036
+ setPublicHostname(hostname, stable = true) {
1037
+ if (this.publicHostname === hostname && this.publicHostnameStable === stable) return;
1033
1038
  this.publicHostname = hostname;
1034
- this.ctx.logger.info("local-network: public hostname updated", { meta: { hostname: hostname || "(cleared)" } });
1039
+ this.publicHostnameStable = stable;
1040
+ this.ctx.logger.info("local-network: public hostname updated", { meta: {
1041
+ hostname: hostname || "(cleared)",
1042
+ stable
1043
+ } });
1035
1044
  }
1036
1045
  /**
1037
1046
  * Replace the cached mesh endpoint. Set from the `MeshNetworkChanged`
@@ -1360,7 +1369,7 @@ function appLinkEndpoint() {
1360
1369
  priority: -1
1361
1370
  };
1362
1371
  }
1363
- function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostname, scheme = "http", meshEndpoint = null, lanHttp = null) {
1372
+ function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostname, scheme = "http", meshEndpoint = null, lanHttp = null, publicHostnameStable = true) {
1364
1373
  const out = [];
1365
1374
  let priority = 0;
1366
1375
  const preferred = pickPreferred(interfaces);
@@ -1403,13 +1412,14 @@ function buildEndpoints(interfaces, port, includeLoopback, ipv4Only, publicHostn
1403
1412
  emit(iface, "lan-ipv6", `${formatKind(iface.kind)} — ${iface.name} (IPv6)`, `${lanScheme}://[${iface.address}]:${lanPort}`, 10 + priority++);
1404
1413
  }
1405
1414
  if (publicHostname) out.push({
1406
- label: "Public tunnel",
1415
+ label: publicHostnameStable ? "Public tunnel" : "Public tunnel (temporary address)",
1407
1416
  baseUrl: `https://${publicHostname}`,
1408
1417
  kind: "public",
1409
1418
  interfaceKind: "public",
1410
1419
  plausible: true,
1411
1420
  plausibleReason: "",
1412
- priority: 100
1421
+ priority: 100,
1422
+ ...publicHostnameStable ? {} : { stable: false }
1413
1423
  });
1414
1424
  if (meshEndpoint && meshEndpoint.host) out.push({
1415
1425
  label: "Mesh (Tailscale)",
@@ -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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { br as BaseAddon, cn as logDestinationCapability } from "../../dist-CYcBqnXk.mjs";
1
+ import { ln as logDestinationCapability, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { 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";
1
+ import { Lr as createEvent, On as reducePoints, Wt as foldSnapshotByFunction, br as errMsg, hn as metricsProviderCapability, jn as resolveBucketMs, pi as EventCategory, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { 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";
2
+ import { Ft as enumerateInferenceDevices, Tn as platformProbeCapability, Vn as scoreRuntimes, Vr as emitReadiness, br as errMsg, pi as EventCategory, xr as BaseAddon } from "../../dist-Bz4_y8Xy.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-CCH3XPqO.js");
6
+ const require_dist = require("../../dist-CnUtkSwN.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 { br as BaseAddon, fi as EventCategory } from "../../dist-CYcBqnXk.mjs";
1
+ import { pi as EventCategory, xr as BaseAddon } from "../../dist-Bz4_y8Xy.mjs";
2
2
  //#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
3
3
  /**
4
4
  * Reconcile the durable `enabledProviders` set against authoritative