@hamedb89/localghost 0.1.13 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { D as DevHostEntry, R as ReadDevHostsOptions, a as ResolvedDevHostsPath, b as ConstructGhostTunnelUrlInput, c as GhostTunnelTransportOptions, d as GhostTunnelTransportConfig, e as GhostTunnelRoute, f as GhostTunnelConfig, C as ConfigPattern, G as GhostTunnelOptions } from './tunnel-BA52DD9e.js';
2
2
  export { g as GhostTunnelAdapterOptions, h as GhostTunnelAdapterProvider, i as GhostTunnelAdapterStrategy, j as GhostTunnelAdapterTransport, k as GhostTunnelDisplayDefaults, l as GhostTunnelDomainOptions, m as GhostTunnelMode, n as GhostTunnelNamespaceConfig, o as GhostTunnelNamespaceOptions, p as GhostTunnelNamespaceTag, q as GhostTunnelNamespaceValues, r as GhostTunnelPreviewOptions, s as GhostTunnelTransportKind, t as GhostTunnelTunnelStoreEnv, u as GhostTunnelTunnelStoreOptions, v as GhostTunnelTunnelStoreProvider, L as LOCALGHOST_CONFIG_FILE, w as assertSecureGhostTunnelRequest, x as constructGhostTunnelHost, y as constructGhostTunnelURL, z as constructGhostTunnelUrl, A as findLocalMdnsHosts, B as getConfigFileCandidates, E as getDevHostsPath, F as getGhostTunnelDefaultDisplayUrl, H as getGhostTunnelDisplayUrl, I as getGhostTunnelDisplayUrls, J as getGhostTunnelEntryHost, K as getGhostTunnelPreviewUrl, M as getGhostTunnelWildcardHost, N as getProjectName, O as parseDevHosts, P as parseGhostTunnelHost, Q as readDevHosts, S as resolveDevHostsPath, T as resolveGhostTunnelConfig, U as sanitizeProjectName } from './tunnel-BA52DD9e.js';
3
3
  import * as execa from 'execa';
4
+ import { ChildProcess } from 'node:child_process';
4
5
 
5
6
  declare const LOCALGHOST_ACTIVITY_VERSION = 1;
6
7
  type LocalghostRunMode = "dev" | "run" | "vite";
@@ -15,6 +16,7 @@ type LocalghostRunRecord = {
15
16
  configPath?: string;
16
17
  caddyfilePath?: string;
17
18
  caddyPid?: number;
19
+ caddyPgid?: number;
18
20
  childPid?: number;
19
21
  childCommand?: string[];
20
22
  https?: boolean;
@@ -70,6 +72,9 @@ declare function unregisterLocalghostSetup(options: {
70
72
  declare function renderLocalghostBanner(): string;
71
73
  declare function renderCompactLocalghostBanner(): string;
72
74
 
75
+ declare const LOCALGHOST_AGENT_GUIDE = "# Localghost agent guide\n\nLocalghost owns the local development proxy and the app process boundary.\n\n## Preferred repository setup\n\nFor a normal repository, use this package script:\n\n \"dev\": \"localghost\"\n\nFor an explicit app command, keep the raw command separate:\n\n \"dev\": \"localghost run -- vite\"\n \"dev:raw\": \"vite\"\n\nUse `localghost dev` only when the Caddy proxy should run without starting the app.\n\n## Useful commands\n\n- `localghost`: detect and run the repository development command.\n- `localghost run -- <command>`: wrap an explicit app command.\n- `localghost dev`: run only the local Caddy proxy.\n- `localghost status --ready`: check project setup.\n- `localghost repair`: repair managed hosts and Caddy setup.\n- `localghost ps --json`: inspect Localghost-managed repositories, instances, and ports.\n- `localghost routes`: inspect hostname-to-port routing.\n- `localghost doctor`: check machine prerequisites, ports, and registry state.\n- `localghost repair --reallocate-port`: move an occupied project port to a stable available port.\n\n## Configuration\n\n- Commit repository defaults in `localghost.config.mjs`.\n- Keep hostname and requested-port routes in `.localghost`.\n- CLI flags override repository configuration for one invocation.\n- Localghost remembers active project and instance port assignments in user state under `~/.localghost`.\n- Do not edit the registry manually and do not start Caddy separately.\n\n## Port behavior\n\nLocalghost remembers ports by canonical repository path and instance key. Concurrent Localghost instances receive distinct ports. The operating-system bind check remains authoritative when another tool already owns a port.\n";
76
+ declare function formatLocalghostAgentGuide(format?: "text" | "json"): string;
77
+
73
78
  declare const LOCALGHOST_GHOST_TUNNEL_FILE = ".ghosttunnel";
74
79
  type ReadGhostTunnelOptions = ReadDevHostsOptions;
75
80
  declare function resolveGhostTunnelPath(options?: ReadGhostTunnelOptions | string): ResolvedDevHostsPath;
@@ -318,6 +323,15 @@ declare function resolveGhostTunnelIpRedirect(input: ResolveGhostTunnelIpRedirec
318
323
  type CaddyModeOptions = {
319
324
  https?: boolean;
320
325
  };
326
+ type CaddyProcessStopResult = {
327
+ stopped: number[];
328
+ alreadyExited: number[];
329
+ failed: Array<{
330
+ pid: number;
331
+ error: unknown;
332
+ }>;
333
+ };
334
+ type CaddyProcessKiller = (pid: number, signal: NodeJS.Signals) => void;
321
335
  declare function getCaddyfilePath(cwd?: string): string;
322
336
  declare function renderCaddyfile(entries: DevHostEntry[], options?: CaddyModeOptions): string;
323
337
  declare function writeCaddyfile(entries: DevHostEntry[], cwd?: string, options?: CaddyModeOptions): Promise<string>;
@@ -326,7 +340,9 @@ declare function runCaddy(path: string): Promise<void>;
326
340
  declare function startCaddy(path: string): execa.ResultPromise<{
327
341
  cwd: string;
328
342
  stdio: "inherit" | "pipe";
343
+ detached: boolean;
329
344
  }>;
345
+ declare function stopCaddyProcesses(pids: Iterable<number>, killProcess?: CaddyProcessKiller): CaddyProcessStopResult;
330
346
  declare function trustCaddy(path: string): Promise<void>;
331
347
 
332
348
  type ResolveGhostTunnelRequestInput = {
@@ -402,6 +418,10 @@ type LocalghostContextOptions = {
402
418
  bindHost?: string | boolean;
403
419
  primaryHost?: string;
404
420
  dynamicPort?: boolean;
421
+ reservePort?: boolean;
422
+ instanceKey?: string;
423
+ reservedPorts?: Iterable<number>;
424
+ registryOwnerToken?: string;
405
425
  autoRepair?: boolean;
406
426
  command?: string[];
407
427
  services?: LocalghostServiceOptions[];
@@ -427,6 +447,7 @@ type LocalghostContext = {
427
447
  wwwAlias: boolean;
428
448
  ghostTunnel: GhostTunnelConfig;
429
449
  projectConfigPath?: string;
450
+ releasePort?: () => Promise<boolean>;
430
451
  };
431
452
  type LocalghostProjectConfig = Omit<LocalghostContextOptions, "cwd" | "localghostConfig">;
432
453
  type LocalghostProjectConfigResult = {
@@ -447,9 +468,34 @@ type DoctorResult = {
447
468
  version?: string;
448
469
  installHint: string;
449
470
  };
471
+ ports: {
472
+ configured?: number;
473
+ available?: boolean;
474
+ registryPath: string;
475
+ staleLeases: Array<{
476
+ projectCwd: string;
477
+ instanceKey: string;
478
+ port: number;
479
+ pid: number;
480
+ }>;
481
+ duplicateAllocations: Array<{
482
+ port: number;
483
+ projects: string[];
484
+ }>;
485
+ currentAllocation?: {
486
+ projectCwd: string;
487
+ instanceKey: string;
488
+ port: number;
489
+ };
490
+ };
491
+ };
492
+ type DoctorOptions = {
493
+ cwd?: string;
494
+ configFiles?: string[];
495
+ configPattern?: ConfigPattern;
450
496
  };
451
497
  declare function checkCaddy(): Promise<DoctorResult["caddy"]>;
452
- declare function runDoctor(): Promise<DoctorResult>;
498
+ declare function runDoctor(options?: DoctorOptions): Promise<DoctorResult>;
453
499
 
454
500
  type LocalghostEnvironment = NodeJS.ProcessEnv;
455
501
  declare function getProductionReason(env?: LocalghostEnvironment): "LOCALGHOST_ENV=production" | "NODE_ENV=production" | "VERCEL_ENV=production" | "NETLIFY=true and CONTEXT=production" | "CF_PAGES_BRANCH matches CF_PAGES_PRODUCTION_BRANCH" | null;
@@ -504,6 +550,74 @@ type FindAvailablePortOptions = {
504
550
  declare function isPortAvailable(port: number, host?: string): Promise<boolean>;
505
551
  declare function findAvailablePort(startPort: number, options?: FindAvailablePortOptions): Promise<number>;
506
552
 
553
+ type ProcessSignal = NodeJS.Signals;
554
+ type ProcessKiller = (pid: number, signal: ProcessSignal) => void;
555
+ declare function signalManagedProcessPid(pid: number | undefined, signal: ProcessSignal, killProcess?: ProcessKiller): boolean;
556
+ declare function signalManagedProcess(child: Pick<ChildProcess, "pid" | "kill" | "killed">, signal: ProcessSignal): boolean;
557
+
558
+ declare const LOCALGHOST_REGISTRY_FILE = "registry.json";
559
+ declare const LOCALGHOST_REGISTRY_LOCK_FILE = "registry.lock";
560
+ type PortAvailabilityCheck = (port: number, host?: string) => boolean | Promise<boolean>;
561
+ type LocalghostRegistryEntry = {
562
+ projectCwd: string;
563
+ instanceKey: string;
564
+ port: number;
565
+ updatedAt: number;
566
+ };
567
+ type LocalghostLease = {
568
+ projectCwd: string;
569
+ instanceKey: string;
570
+ port: number;
571
+ pid: number;
572
+ acquiredAt: number;
573
+ expiresAt: number;
574
+ ownerToken: string;
575
+ };
576
+ type LocalghostRegistryData = {
577
+ version: 1;
578
+ allocations: LocalghostRegistryEntry[];
579
+ leases: LocalghostLease[];
580
+ };
581
+ type LocalghostRegistryOptions = {
582
+ stateRoot?: string;
583
+ cwd?: string;
584
+ pid?: number;
585
+ ownerToken?: string;
586
+ now?: () => number;
587
+ isProcessRunning?: (pid: number) => boolean;
588
+ availabilityCheck?: PortAvailabilityCheck;
589
+ lockTimeoutMs?: number;
590
+ lockRetryMs?: number;
591
+ lockStaleMs?: number;
592
+ };
593
+ type AcquireLocalghostPortOptions = {
594
+ projectCwd?: string;
595
+ instanceKey: string;
596
+ startPort?: number;
597
+ maxAttempts?: number;
598
+ reservedPorts?: Iterable<number>;
599
+ leaseTtlMs?: number;
600
+ host?: string;
601
+ };
602
+ type LocalghostRegistry = {
603
+ root: string;
604
+ registryPath: string;
605
+ lockPath: string;
606
+ ownerToken: string;
607
+ acquirePort(options: AcquireLocalghostPortOptions): Promise<LocalghostLease>;
608
+ releasePort(options: {
609
+ projectCwd?: string;
610
+ instanceKey: string;
611
+ }): Promise<boolean>;
612
+ read(): Promise<LocalghostRegistryData>;
613
+ prune(): Promise<{
614
+ removedLeases: number;
615
+ }>;
616
+ };
617
+ declare function getLocalghostRegistryRoot(env?: NodeJS.ProcessEnv): string;
618
+ declare function canonicalizeLocalghostProjectCwd(cwd?: string): string;
619
+ declare function createLocalghostRegistry(options?: LocalghostRegistryOptions): LocalghostRegistry;
620
+
507
621
  type DomainRoute = {
508
622
  host: string;
509
623
  port: number;
@@ -571,7 +685,7 @@ type CreateVercelGhostTunnelHandlerOptions = {
571
685
  declare function createVercelGhostTunnelHandler(options: CreateVercelGhostTunnelHandlerOptions): (request: VercelGhostTunnelRequestLike, response: VercelGhostTunnelResponseLike) => Promise<void>;
572
686
 
573
687
  declare const LOCALGHOST_PACKAGE_NAME = "@hamedb89/localghost";
574
- declare const LOCALGHOST_VERSION = "0.1.13";
688
+ declare const LOCALGHOST_VERSION = "0.2.0";
575
689
  declare const UPDATE_CHECK_CACHE_TTL_MS: number;
576
690
  declare const UPDATE_CHECK_NOTIFY_TTL_MS: number;
577
691
  declare const UPDATE_CHECK_TIMEOUT_MS = 900;
@@ -608,4 +722,4 @@ declare function maybeNotifyAboutUpdate(options?: {
608
722
  disabled?: boolean;
609
723
  }): Promise<void>;
610
724
 
611
- export { type ActiveRelayRoute, type CaddyModeOptions, ConfigPattern, type ConstructGhostTunnelIpUrlInput, ConstructGhostTunnelUrlInput, type CreateVercelGhostTunnelHandlerOptions, DEFAULT_GHOST_TUNNEL_IP_TRANSPORT_TTL_SECONDS, DEFAULT_GHOST_TUNNEL_RESPONSE_TTL_SECONDS, DEFAULT_GHOST_TUNNEL_TRANSPORT_QUERY_PARAM, DEFAULT_RELAY_ALLOWED_TARGET_HOSTS, DEFAULT_RELAY_BLOCKED_PORTS, DEFAULT_RELAY_LIMITS, DEFAULT_RELAY_TARGET_POLICY, type DetectedDevCommand, type DetectedDevService, DevHostEntry, type DoctorResult, type DomainRoute, type DomainRouteOptions, type FindAvailablePortOptions, type GhostTunnelAgent, type GhostTunnelAgentOptions, GhostTunnelConfig, type GhostTunnelHttpResponse, type GhostTunnelIpTransportClaim, GhostTunnelOptions, type GhostTunnelQueuedRequest, type GhostTunnelQueuedResponse, GhostTunnelRoute, type GhostTunnelRouteHeartbeat, type GhostTunnelStore, type GhostTunnelStoreEnv, GhostTunnelTransportConfig, GhostTunnelTransportOptions, type InitOptions, type InitResult, LOCALGHOST_ACTIVITY_VERSION, LOCALGHOST_GHOST_TUNNEL_FILE, LOCALGHOST_PACKAGE_NAME, LOCALGHOST_STATE_FILE, LOCALGHOST_VERSION, type LocalghostActivity, type LocalghostContext, type LocalghostContextOptions, type LocalghostEnvironment, type LocalghostPackageManager, type LocalghostProjectConfig, type LocalghostProjectConfigResult, type LocalghostRunMode, type LocalghostRunRecord, type LocalghostServiceOptions, type LocalghostSetupRecord, type LocalghostState, type LocalghostStateAction, type PackageManager, ReadDevHostsOptions, type ReadGhostTunnelOptions, type RedisGhostTunnelEnvResolution, type RedisGhostTunnelStoreOptions, type RegisterLocalghostRunInput, type RegisterLocalghostSetupInput, type RelayAccessMode, type RelayLimits, type RelayLocalTarget, type RelayOfflineResponse, type RelayProtocol, type RelayRouteClaim, type RelayRouteRegistrationInput, type RelayTargetPolicy, type RemoveSystemHostsResult, type ResolveGhostTunnelIpRedirectInput, type ResolveGhostTunnelRequestInput, ResolvedDevHostsPath, type ResolvedGhostTunnelIpRedirect, type ResolvedGhostTunnelRequest, type ServeGhostTunnelLocalRequestInput, type SignedGhostTunnelIpTransportClaim, type SignedRelayRouteClaim, UPDATE_CHECK_CACHE_TTL_MS, UPDATE_CHECK_NOTIFY_TTL_MS, UPDATE_CHECK_TIMEOUT_MS, type UpdateCheckCache, type UpdateCheckResult, type UpdateSystemHostsResult, type VercelGhostTunnelRequestLike, type VercelGhostTunnelResponseLike, type WriteLocalghostStateInput, assertExactRelayHost, assertLocalDevelopment, assertRelayLocalTarget, authenticateRelayAgentToken, checkCaddy, checkForUpdate, compareVersions, constructGhostTunnelIpUrl, createGhostTunnelQueuedRequest, createGhostTunnelRouteHeartbeat, createMemoryGhostTunnelStore, createRedisGhostTunnelStore, createRedisGhostTunnelStoreFromEnv, createRelayRouteRegistration, createVercelGhostTunnelHandler, decodeGhostTunnelBody, defineLocalghostConfig, detectDevCommand, detectDevPackageManager, detectDevServices, detectPackageManager, encodeGhostTunnelBody, findAvailablePort, findGhostTunnelEntry, formatDetectedDevCommand, formatDetectedDevServices, formatDomainRoutes, formatGhostTunnel, formatUpdateMessage, getCaddyfilePath, getDomainRoutes, getGhostTunnelPath, getLocalghostActivityPath, getLocalghostStatePath, getProductionEnvKeys, getProductionReason, getSystemHostsPath, getUpdateCheckCachePath, initLocalghost, isNewerVersion, isPortAvailable, isProcessRunning, isProductionLike, isRelayRouteActive, isUpdateCheckDisabled, listGhostTunnelEntries, listLocalghostRuns, listLocalghostSetups, markUpdateNotified, maybeNotifyAboutUpdate, packageAddCommand, packageRunCommand, patchLocalghostState, pruneLocalghostActivity, readGhostTunnelEntries, readLocalghostActivity, readLocalghostProjectConfig, readLocalghostState, redactRelayHeaders, redactRelayLogUrl, registerLocalghostRun, registerLocalghostSetup, removeManagedBlock, removeSystemHosts, renderCaddyfile, renderCompactLocalghostBanner, renderGhostTunnelRelayOfflineResponse, renderGhostTunnelRouteMissingResponse, renderHostsBlock, renderLocalghostBanner, renderRelayOfflineResponse, resolveGhostTunnelIpRedirect, resolveGhostTunnelPath, resolveGhostTunnelRequest, resolveLocalghostContext, resolveRedisGhostTunnelEnv, runCaddy, runDoctor, serveGhostTunnelLocalRequest, shouldNotifyAboutUpdate, signGhostTunnelIpTransportClaim, signRelayRouteClaim, startCaddy, startGhostTunnelAgent, stripRelayForwardHeaders, trustCaddy, unregisterLocalghostRun, unregisterLocalghostSetup, updateSystemHosts, upsertManagedBlock, validateCaddyfile, verifyGhostTunnelIpTransportClaim, verifyRelayRouteClaim, writeCaddyfile, writeLocalghostActivity, writeLocalghostState };
725
+ export { type AcquireLocalghostPortOptions, type ActiveRelayRoute, type CaddyModeOptions, type CaddyProcessKiller, type CaddyProcessStopResult, ConfigPattern, type ConstructGhostTunnelIpUrlInput, ConstructGhostTunnelUrlInput, type CreateVercelGhostTunnelHandlerOptions, DEFAULT_GHOST_TUNNEL_IP_TRANSPORT_TTL_SECONDS, DEFAULT_GHOST_TUNNEL_RESPONSE_TTL_SECONDS, DEFAULT_GHOST_TUNNEL_TRANSPORT_QUERY_PARAM, DEFAULT_RELAY_ALLOWED_TARGET_HOSTS, DEFAULT_RELAY_BLOCKED_PORTS, DEFAULT_RELAY_LIMITS, DEFAULT_RELAY_TARGET_POLICY, type DetectedDevCommand, type DetectedDevService, DevHostEntry, type DoctorOptions, type DoctorResult, type DomainRoute, type DomainRouteOptions, type FindAvailablePortOptions, type GhostTunnelAgent, type GhostTunnelAgentOptions, GhostTunnelConfig, type GhostTunnelHttpResponse, type GhostTunnelIpTransportClaim, GhostTunnelOptions, type GhostTunnelQueuedRequest, type GhostTunnelQueuedResponse, GhostTunnelRoute, type GhostTunnelRouteHeartbeat, type GhostTunnelStore, type GhostTunnelStoreEnv, GhostTunnelTransportConfig, GhostTunnelTransportOptions, type InitOptions, type InitResult, LOCALGHOST_ACTIVITY_VERSION, LOCALGHOST_AGENT_GUIDE, LOCALGHOST_GHOST_TUNNEL_FILE, LOCALGHOST_PACKAGE_NAME, LOCALGHOST_REGISTRY_FILE, LOCALGHOST_REGISTRY_LOCK_FILE, LOCALGHOST_STATE_FILE, LOCALGHOST_VERSION, type LocalghostActivity, type LocalghostContext, type LocalghostContextOptions, type LocalghostEnvironment, type LocalghostLease, type LocalghostPackageManager, type LocalghostProjectConfig, type LocalghostProjectConfigResult, type LocalghostRegistry, type LocalghostRegistryData, type LocalghostRegistryEntry, type LocalghostRegistryOptions, type LocalghostRunMode, type LocalghostRunRecord, type LocalghostServiceOptions, type LocalghostSetupRecord, type LocalghostState, type LocalghostStateAction, type PackageManager, type PortAvailabilityCheck, ReadDevHostsOptions, type ReadGhostTunnelOptions, type RedisGhostTunnelEnvResolution, type RedisGhostTunnelStoreOptions, type RegisterLocalghostRunInput, type RegisterLocalghostSetupInput, type RelayAccessMode, type RelayLimits, type RelayLocalTarget, type RelayOfflineResponse, type RelayProtocol, type RelayRouteClaim, type RelayRouteRegistrationInput, type RelayTargetPolicy, type RemoveSystemHostsResult, type ResolveGhostTunnelIpRedirectInput, type ResolveGhostTunnelRequestInput, ResolvedDevHostsPath, type ResolvedGhostTunnelIpRedirect, type ResolvedGhostTunnelRequest, type ServeGhostTunnelLocalRequestInput, type SignedGhostTunnelIpTransportClaim, type SignedRelayRouteClaim, UPDATE_CHECK_CACHE_TTL_MS, UPDATE_CHECK_NOTIFY_TTL_MS, UPDATE_CHECK_TIMEOUT_MS, type UpdateCheckCache, type UpdateCheckResult, type UpdateSystemHostsResult, type VercelGhostTunnelRequestLike, type VercelGhostTunnelResponseLike, type WriteLocalghostStateInput, assertExactRelayHost, assertLocalDevelopment, assertRelayLocalTarget, authenticateRelayAgentToken, canonicalizeLocalghostProjectCwd, checkCaddy, checkForUpdate, compareVersions, constructGhostTunnelIpUrl, createGhostTunnelQueuedRequest, createGhostTunnelRouteHeartbeat, createLocalghostRegistry, createMemoryGhostTunnelStore, createRedisGhostTunnelStore, createRedisGhostTunnelStoreFromEnv, createRelayRouteRegistration, createVercelGhostTunnelHandler, decodeGhostTunnelBody, defineLocalghostConfig, detectDevCommand, detectDevPackageManager, detectDevServices, detectPackageManager, encodeGhostTunnelBody, findAvailablePort, findGhostTunnelEntry, formatDetectedDevCommand, formatDetectedDevServices, formatDomainRoutes, formatGhostTunnel, formatLocalghostAgentGuide, formatUpdateMessage, getCaddyfilePath, getDomainRoutes, getGhostTunnelPath, getLocalghostActivityPath, getLocalghostRegistryRoot, getLocalghostStatePath, getProductionEnvKeys, getProductionReason, getSystemHostsPath, getUpdateCheckCachePath, initLocalghost, isNewerVersion, isPortAvailable, isProcessRunning, isProductionLike, isRelayRouteActive, isUpdateCheckDisabled, listGhostTunnelEntries, listLocalghostRuns, listLocalghostSetups, markUpdateNotified, maybeNotifyAboutUpdate, packageAddCommand, packageRunCommand, patchLocalghostState, pruneLocalghostActivity, readGhostTunnelEntries, readLocalghostActivity, readLocalghostProjectConfig, readLocalghostState, redactRelayHeaders, redactRelayLogUrl, registerLocalghostRun, registerLocalghostSetup, removeManagedBlock, removeSystemHosts, renderCaddyfile, renderCompactLocalghostBanner, renderGhostTunnelRelayOfflineResponse, renderGhostTunnelRouteMissingResponse, renderHostsBlock, renderLocalghostBanner, renderRelayOfflineResponse, resolveGhostTunnelIpRedirect, resolveGhostTunnelPath, resolveGhostTunnelRequest, resolveLocalghostContext, resolveRedisGhostTunnelEnv, runCaddy, runDoctor, serveGhostTunnelLocalRequest, shouldNotifyAboutUpdate, signGhostTunnelIpTransportClaim, signRelayRouteClaim, signalManagedProcess, signalManagedProcessPid, startCaddy, startGhostTunnelAgent, stopCaddyProcesses, stripRelayForwardHeaders, trustCaddy, unregisterLocalghostRun, unregisterLocalghostSetup, updateSystemHosts, upsertManagedBlock, validateCaddyfile, verifyGhostTunnelIpTransportClaim, verifyRelayRouteClaim, writeCaddyfile, writeLocalghostActivity, writeLocalghostState };