@jonathanyee/devtunnel-ctl 0.1.0 → 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/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # devtunnel-ctl
2
2
 
3
- A per-user background service and CLI for **SSH-only** Microsoft Dev Tunnels forwarding. It uses the Microsoft TypeScript SDK directly, owns stable loopback ports, checks real SSH banners, and replaces stale SDK connections when bounded resumable recovery fails.
3
+ A per-user service and CLI for resilient Microsoft Dev Tunnels hosting and **SSH-only client forwarding**. Both use the Microsoft TypeScript SDK. Client forwarding owns stable loopback ports, checks real SSH banners, and replaces stale SDK connections when bounded resumable recovery fails.
4
4
 
5
5
  This is a first version, not a transparent SSH-session migration tool. A fresh SDK client can terminate existing SSH sessions. Use `tmux` on the remote machine when session continuity matters. No remote settings or SSH configuration are modified.
6
6
 
7
7
  ## Installation
8
8
 
9
- Requires Node.js 24 or later, npm, macOS or Linux, and an installed Microsoft `devtunnel` CLI. The authentication helper is not bundled. On macOS/Homebrew its default path is `/opt/homebrew/bin/devtunnel`; on Linux pass its actual absolute path to `init --helper`. The local daemon does not support Windows, but can connect to remote SSH endpoints running inside WSL.
9
+ Requires Node.js 24 or later, npm, and an installed Microsoft `devtunnel` CLI. Client forwarding supports macOS and Linux, including WSL. Foreground hosting also supports native Windows. The authentication helper is not bundled. On macOS/Homebrew its default path is `/opt/homebrew/bin/devtunnel`; on Linux pass its actual absolute path to `init --helper`. On Windows, pass an absolute `--helper` path to `devtunnel.exe` when hosting. The client daemon and its control commands remain unsupported on Windows.
10
10
 
11
11
  ### From npm
12
12
 
@@ -60,7 +60,52 @@ export PATH="$HOME/.local/bin:$PATH"
60
60
 
61
61
  This local installation remains tied to the checkout. Otherwise use `node /absolute/path/to/devtunnel-ctl/dist/main.js` throughout.
62
62
 
63
- ## Profiles and commands
63
+ ## Host an existing tunnel
64
+
65
+ Replace an existing `devtunnel host host-name` invocation with:
66
+
67
+ ```sh
68
+ devtunnel-ctl host host-name --probe-port 22
69
+ # Select the installed authentication helper explicitly if needed:
70
+ devtunnel-ctl host host-name --helper /absolute/path/devtunnel \
71
+ --probe-port 22 --probe-port 3000
72
+ ```
73
+
74
+ On native Windows:
75
+
76
+ ```powershell
77
+ devtunnel-ctl host host-name --helper 'C:\Tools\devtunnel.exe' --probe-port 22
78
+ ```
79
+
80
+ Hosting preserves **all ports already configured on the tunnel**, not just SSH or the selected probe ports. It does not create tunnels, change access policies, or enable anonymous access. Existing port changes are refreshed periodically; removing a port stops new forwarded connections on that port. Sign in explicitly with the selected helper's `user login` command before hosting.
81
+
82
+ **Starting a host may displace an existing host for that tunnel.** Stop or migrate the old host deliberately. A displaced supervised host reports `host-superseded` and stops rather than repeatedly taking the tunnel back. Recovery can disconnect active clients on every hosted port.
83
+
84
+ The foreground command owns a disposable SDK worker. It retries unexpected worker exit, lost heartbeats, relay failures and persistent forwarding failures with jittered backoff capped at 15 seconds. Relay WebSocket keepalives send a ping after 10 seconds without incoming traffic and allow 10 seconds for a response, even without probes. An established relay gets up to eight seconds for resumable reconnect before replacement. Service Retry-After delays take precedence. Operations and shutdown have deadlines; a replacement cannot overlap a worker whose exit is unconfirmed.
85
+
86
+ `--probe-port` is optional, repeatable, and limited to 16 distinct configured ports. Each check compares direct local TCP connectivity with an independent authenticated connection through the tunnel. Consecutive forwarding failures can replace the host after a 30-second startup cooldown. An unavailable local application does not trigger host-restart loops. Probes need connect permission in addition to the host permission required for hosting.
87
+
88
+ Output is sanitized JSON. The command reports relay connectivity before checking probe ports. `connected` means the relay is connected; `verified` means every selected TCP probe passed; `degraded` reports local-service or probe failures. `localUnavailable`, `verifiedPorts`, and `probeFault` distinguish those conditions. Without explicit probes, the command never reports `verified`. A TCP connection check does not establish application correctness.
89
+
90
+ Sign-in rejection, permission denial, invalid configuration, takeover by another host and failed owned-endpoint cleanup stop automatic hosting. Fix the reported condition, then explicitly restart. Terminal host faults appear as `fault` output and a successful supervisor exit, which prevents launchd from restarting them. A cleanup failure during explicit shutdown still emits `host-cleanup-failed`. Do not interpret exit code zero alone as proof of healthy hosting.
91
+
92
+ Restart a loaded macOS job with `host-service stop TUNNEL` followed by `host-service start TUNNEL`.
93
+
94
+ Foreground mode works on macOS, Linux/WSL and Windows. On macOS, install a separate per-tunnel login service:
95
+
96
+ ```sh
97
+ devtunnel-ctl host-service install host-name --probe-port 22
98
+ devtunnel-ctl host-service start host-name
99
+ devtunnel-ctl host-service status host-name
100
+ devtunnel-ctl host-service stop host-name
101
+ devtunnel-ctl host-service uninstall host-name
102
+ ```
103
+
104
+ Install accepts `--helper`, `--cluster` and repeated `--probe-port` options, and **does not start hosting**. Use the same tunnel, cluster and global `--state-dir` when addressing the job. Installation pins absolute runtime, entrypoint and helper paths. Stop/uninstall/reinstall to change those paths or probe settings. Host jobs do not share the client daemon or its configuration.
105
+
106
+ On macOS and Linux, each tunnel keeps private bounded logs and status under `STATE/hosts/IDENTITY/`. `host-service status` distinguishes launchd registration from a fresh status snapshot belonging to its current PID. A stopped job's historical status is not a responsive host. Uninstall retains logs and status. Windows foreground mode writes no POSIX state and rejects `--state-dir`; Linux and Windows service installation are not supported.
107
+
108
+ ## Client profiles and commands
64
109
 
65
110
  Each profile maps one remote SSH port to one fixed local port. Both `127.0.0.1:PORT` and `[::1]:PORT` are bound exclusively; there is no LAN listener and no automatic port shifting. A conflict on either address fails that profile explicitly. An IPv6-disabled environment must enable IPv6 loopback before using this version.
66
111
 
@@ -88,7 +133,7 @@ Existing aliases remain unchanged when the same local port is assigned to a prof
88
133
 
89
134
  ## Authentication
90
135
 
91
- The SDK performs connection and forwarding work. The Microsoft CLI is used **only** for explicit sign-in and acquiring short-lived, connect-scoped tunnel tokens:
136
+ The SDK performs hosting, connection and forwarding work. The Microsoft CLI is used **only** for explicit sign-in and acquiring short-lived tunnel tokens. Client forwarding requests connect scope; hosting requests host scope and its optional independent probes request connect scope. Scope-specific caches and in-flight acquisitions stay separate:
92
137
 
93
138
  ```sh
94
139
  devtunnel-ctl login
@@ -106,7 +151,7 @@ The parser accepts a JSON string containing a JWT or an object with a `token` JW
106
151
 
107
152
  Specify the cluster explicitly (`ID.CLUSTER` or `--cluster`) for predictable routing. For an unqualified ID, the currently issued token's validated-format `clusterId` claim is used only as a routing hint, not as proof of authorization. If that hint is absent, status requests an explicit cluster rather than guessing. TLS and SDK host-key checks remain enabled; endpoint metadata without published host public keys is rejected, including during refresh. The SDK's default E2E encryption request is preserved.
108
153
 
109
- ## Recovery policy
154
+ ## Client recovery policy
110
155
 
111
156
  | Signal or condition | Behavior |
112
157
  | --- | --- |
@@ -211,6 +256,8 @@ npm test
211
256
 
212
257
  Tests use Node's built-in runner and type stripping. They cover private configuration and helper handling, actual dual-loopback binds/conflicts, forwarding backpressure and half-close, queued-write draining after remote EOF, abrupt remote closure, SSH banners, fake-clock recovery/deadlines/long gaps, stale async completions, authentication/endpoint refresh, redaction/rotation, malformed and oversized IPC, concurrent daemon locking, and real CLI/daemon subprocess restart flows. Large-response assertions compare byte counts and equality without rendering multi-megabyte buffer diffs. All verification daemons are isolated and shut down by their tests.
213
258
 
259
+ Host tests additionally exercise scope separation, worker crashes and forced shutdown, missing heartbeats, takeover stops, probe/local-service classification, owned-endpoint cleanup and macOS host-job generation. Windows CI runs the portable host tests separately from POSIX daemon tests. These checks do not establish live host recovery or install/start a real service.
260
+
214
261
  ## Package verification and publishing
215
262
 
216
263
  The npm package is `@jonathanyee/devtunnel-ctl`; the installed command remains `devtunnel-ctl`. The project is MIT-licensed; see [LICENSE](LICENSE).
@@ -229,7 +276,7 @@ npm run package:check -- --verify-only --expected-version 0.1.0
229
276
 
230
277
  - Allows only `dist`, package metadata, README, license and `npm-shrinkwrap.json`; it rejects source, tests, scripts, workflows and unexpected files.
231
278
  - Installs the tarball into an isolated temporary global prefix, without development dependencies, credentials or installation scripts.
232
- - Runs the installed command outside the checkout, verifies its runtime dependencies are inside that prefix, and exercises an isolated daemon/status/paused-profile flow without connecting to real tunnels.
279
+ - Runs the installed command outside the checkout, verifies its runtime dependencies are inside that prefix, exercises an isolated daemon/status/paused-profile flow, and checks host-worker dispatch with a deliberately missing helper. These checks do not connect to real tunnels.
233
280
  - Stops that daemon and removes temporary installation/state directories.
234
281
  - Writes the checked tarball and `result.json` under ignored `.artifacts/`. The result includes SHA-512 integrity; `--verify-only` rejects incomplete reports or modified artifacts.
235
282
 
package/dist/auth.d.ts CHANGED
@@ -10,14 +10,15 @@ type Reference = {
10
10
  tunnelId: string;
11
11
  clusterId?: string;
12
12
  };
13
+ export type TokenScope = 'connect' | 'host';
13
14
  export declare class TokenProvider {
14
15
  private readonly cache;
15
16
  private readonly flights;
16
17
  readonly path: string;
17
18
  private readonly runner;
18
19
  constructor(path: string, runner?: Runner);
19
- get(ref: Reference, signal?: AbortSignal, refresh?: boolean): Promise<Token>;
20
+ get(ref: Reference, signal?: AbortSignal, refresh?: boolean, scope?: TokenScope): Promise<Token>;
20
21
  clear(): void;
21
- invalidate(ref: Reference): void;
22
+ invalidate(ref: Reference, scope?: TokenScope): void;
22
23
  }
23
24
  export {};
package/dist/auth.js CHANGED
@@ -97,8 +97,9 @@ export class TokenProvider {
97
97
  path;
98
98
  runner;
99
99
  constructor(path, runner = runHelper) { this.path = path; this.runner = runner; }
100
- async get(ref, signal, refresh = false) {
101
- const key = ref.tunnelId + (ref.clusterId ? `.${ref.clusterId}` : '');
100
+ async get(ref, signal, refresh = false, scope = 'connect') {
101
+ const tunnel = ref.tunnelId + (ref.clusterId ? `.${ref.clusterId}` : '');
102
+ const key = `${scope}:${tunnel}`;
102
103
  if (signal?.aborted)
103
104
  throw new Fault('aborted');
104
105
  if (refresh)
@@ -113,7 +114,7 @@ export class TokenProvider {
113
114
  }
114
115
  if (!flight) {
115
116
  const controller = new AbortController();
116
- const promise = this.runner(this.path, ['token', key, '--scopes', 'connect', '--json'], controller.signal)
117
+ const promise = this.runner(this.path, ['token', tunnel, '--scopes', scope, '--json'], controller.signal)
117
118
  .then(output => {
118
119
  if (controller.signal.aborted)
119
120
  throw new Fault('aborted');
@@ -142,8 +143,8 @@ export class TokenProvider {
142
143
  flight.controller.abort();
143
144
  this.flights.clear();
144
145
  }
145
- invalidate(ref) {
146
- const key = ref.tunnelId + (ref.clusterId ? `.${ref.clusterId}` : '');
146
+ invalidate(ref, scope = 'connect') {
147
+ const key = `${scope}:${ref.tunnelId}${ref.clusterId ? `.${ref.clusterId}` : ''}`;
147
148
  this.cache.delete(key);
148
149
  }
149
150
  }
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export declare const help = "devtunnel-ctl - resilient SSH-only Dev Tunnels forwarding\n\n init [--helper /absolute/path/devtunnel]\n daemon Foreground service; Ctrl-C stops it\n profile add NAME --tunnel ID[.CLUSTER] --local PORT [--remote 22] [--cluster ID] [--paused]\n profile list | status [NAME] [--json]\n pause NAME|all | resume NAME|all | reconnect NAME|all\n logs [--follow] Recent sanitized logs from the running daemon\n login [--device-code] [--github] Explicit devtunnel sign-in only\n service install|start|stop|uninstall|status\n\nGlobal: --state-dir /absolute/private/directory, --help\nState defaults to ~/.devtunnel-ctl. Start a daemon before modifying profiles.\nReconnect never unpauses. Stable ports never shift. Fresh clients may break SSH sessions.\n";
1
+ export declare const help = "devtunnel-ctl - resilient Dev Tunnels hosting and SSH forwarding\n\n init [--helper /absolute/path/devtunnel]\n host TUNNEL[.CLUSTER] [--helper /absolute/path/devtunnel] [--cluster ID] [--probe-port PORT ...]\n host-service install|start|stop|uninstall|status TUNNEL [--cluster ID]\n install also accepts --helper and repeatable --probe-port (macOS only)\n daemon Foreground service; Ctrl-C stops it\n profile add NAME --tunnel ID[.CLUSTER] --local PORT [--remote 22] [--cluster ID] [--paused]\n profile list | status [NAME] [--json]\n pause NAME|all | resume NAME|all | reconnect NAME|all\n logs [--follow] Recent sanitized logs from the running daemon\n login [--device-code] [--github] Explicit devtunnel sign-in only\n service install|start|stop|uninstall|status\n\nGlobal: --state-dir /absolute/private/directory, --help\nState defaults to ~/.devtunnel-ctl. Start a daemon before modifying profiles.\nReconnect never unpauses. Stable ports never shift. Fresh clients may break SSH sessions.\nHost preserves all configured ports. Probes check only explicitly selected ports.\nStarting a host may displace another host. Replacement disconnects active clients.\nWindows supports foreground host only; pass --helper with an absolute devtunnel.exe path.\n";
2
2
  export declare function cli(args: string[], entry: string): Promise<void>;
3
3
  export declare function report(error: unknown): void;
package/dist/cli.js CHANGED
@@ -8,9 +8,15 @@ import { request } from "./rpc.js";
8
8
  import { Daemon } from "./daemon.js";
9
9
  import { DaemonLock } from "./lock.js";
10
10
  import { service } from "./launchd.js";
11
- export const help = `devtunnel-ctl - resilient SSH-only Dev Tunnels forwarding
11
+ import { validateHost } from "./host.js";
12
+ import { runHost } from "./host-process.js";
13
+ import { hostService, serveHost } from "./host-service.js";
14
+ export const help = `devtunnel-ctl - resilient Dev Tunnels hosting and SSH forwarding
12
15
 
13
16
  init [--helper /absolute/path/devtunnel]
17
+ host TUNNEL[.CLUSTER] [--helper /absolute/path/devtunnel] [--cluster ID] [--probe-port PORT ...]
18
+ host-service install|start|stop|uninstall|status TUNNEL [--cluster ID]
19
+ install also accepts --helper and repeatable --probe-port (macOS only)
14
20
  daemon Foreground service; Ctrl-C stops it
15
21
  profile add NAME --tunnel ID[.CLUSTER] --local PORT [--remote 22] [--cluster ID] [--paused]
16
22
  profile list | status [NAME] [--json]
@@ -22,12 +28,16 @@ export const help = `devtunnel-ctl - resilient SSH-only Dev Tunnels forwarding
22
28
  Global: --state-dir /absolute/private/directory, --help
23
29
  State defaults to ~/.devtunnel-ctl. Start a daemon before modifying profiles.
24
30
  Reconnect never unpauses. Stable ports never shift. Fresh clients may break SSH sessions.
31
+ Host preserves all configured ports. Probes check only explicitly selected ports.
32
+ Starting a host may displace another host. Replacement disconnects active clients.
33
+ Windows supports foreground host only; pass --helper with an absolute devtunnel.exe path.
25
34
  `;
26
35
  function argumentsFor(args) {
27
36
  try {
28
37
  return parseArgs({ args, allowPositionals: true, strict: true, options: {
29
38
  'state-dir': { type: 'string' }, helper: { type: 'string' }, tunnel: { type: 'string' },
30
39
  local: { type: 'string' }, remote: { type: 'string' }, cluster: { type: 'string' },
40
+ 'probe-port': { type: 'string', multiple: true },
31
41
  paused: { type: 'boolean' }, json: { type: 'boolean' }, follow: { type: 'boolean' },
32
42
  'device-code': { type: 'boolean' }, github: { type: 'boolean' }, help: { type: 'boolean', short: 'h' },
33
43
  } });
@@ -47,10 +57,40 @@ export async function cli(args, entry) {
47
57
  const allowed = {
48
58
  init: ['helper'], daemon: [], profile: sub === 'add' ? ['tunnel', 'local', 'remote', 'cluster', 'paused'] : ['json'],
49
59
  status: ['json'], pause: [], resume: [], reconnect: [], logs: ['follow'], login: ['device-code', 'github'], service: [],
60
+ host: ['helper', 'cluster', 'probe-port'],
61
+ 'host-service': sub === 'install' ? ['helper', 'cluster', 'probe-port'] : ['cluster'],
50
62
  };
51
63
  if (!command || !(command in allowed) || Object.keys(flags).some(k => k !== 'state-dir' && !allowed[command].includes(k))) {
52
64
  throw new Fault('invalid-config', 'Unknown command or misplaced option. Run devtunnel-ctl --help.');
53
65
  }
66
+ if (command === 'host' || command === 'host-service') {
67
+ const actions = ['install', 'start', 'stop', 'uninstall', 'status'];
68
+ const tunnelId = command === 'host' ? sub : name;
69
+ if (!tunnelId || words.length !== (command === 'host' ? 2 : 3) ||
70
+ (command === 'host-service' && !actions.includes(sub ?? '')))
71
+ throw new Fault('invalid-config', 'Use host TUNNEL or host-service ACTION TUNNEL.');
72
+ if (process.platform === 'win32' && (command !== 'host' || flags['state-dir'])) {
73
+ throw new Fault('invalid-config', 'Windows supports foreground host only, without --state-dir. Pass an absolute --helper path.');
74
+ }
75
+ const store = new Store(stateDir(flags['state-dir']));
76
+ const helperPath = flags.helper ?? (process.platform === 'win32' ? undefined : (await store.load()).helperPath);
77
+ if (!helperPath)
78
+ throw new Fault('invalid-config', 'Specify --helper with the absolute path to devtunnel.exe.');
79
+ const options = validateHost({ tunnelId, clusterId: flags.cluster, helperPath,
80
+ probePorts: (flags['probe-port'] ?? []).map(Number) });
81
+ if (command === 'host-service') {
82
+ console.log(JSON.stringify(await hostService(sub, options, store.dir, entry)));
83
+ return;
84
+ }
85
+ console.error('Hosting may displace another host. Recovery replacements can disconnect existing clients.');
86
+ if (process.platform === 'win32')
87
+ await runHost(options, message => console.log(JSON.stringify(message)));
88
+ else
89
+ await serveHost(options, store.dir);
90
+ return;
91
+ }
92
+ if (process.platform === 'win32')
93
+ throw new Fault('invalid-config', 'Windows supports foreground host only. Client daemon and service commands require macOS or Linux.');
54
94
  const store = new Store(stateDir(flags['state-dir']));
55
95
  await store.init();
56
96
  const socket = join(store.dir, 'control.sock');
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/core.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type FaultCode = 'login-required' | 'access-denied' | 'port-conflict' | 'remote-unavailable' | 'retrying' | 'throttled' | 'timeout' | 'aborted' | 'invalid-config' | 'protocol' | 'daemon-unavailable' | 'internal';
1
+ export type FaultCode = 'login-required' | 'access-denied' | 'port-conflict' | 'remote-unavailable' | 'retrying' | 'throttled' | 'timeout' | 'aborted' | 'invalid-config' | 'protocol' | 'daemon-unavailable' | 'internal' | 'host-superseded' | 'host-cleanup-failed';
2
2
  export declare class Fault extends Error {
3
3
  readonly code: FaultCode;
4
4
  readonly retryAfterMs: number;
package/dist/core.js CHANGED
@@ -11,6 +11,8 @@ const messages = {
11
11
  protocol: 'Invalid or oversized control message.',
12
12
  'daemon-unavailable': 'Daemon unavailable. Run devtunnel-ctl daemon or start the installed service.',
13
13
  internal: 'Operation failed. Check configuration and sanitized service logs.',
14
+ 'host-superseded': 'Another host took over this tunnel. Automatic hosting stopped to avoid reconnect contention.',
15
+ 'host-cleanup-failed': 'Owned host endpoint cleanup failed. Automatic hosting stopped; inspect this tunnel before starting another host.',
14
16
  };
15
17
  export class Fault extends Error {
16
18
  code;
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { HostMessage, HostOptions } from './host.ts';
2
+ import { retireHostEndpoint } from './host-sdk.ts';
3
+ export declare function runHostWorker(options: HostOptions, emit: (message: HostMessage) => void, signal: AbortSignal, entry?: URL, retire?: typeof retireHostEndpoint): Promise<void>;
4
+ export declare function runHost(options: HostOptions, report: (message: HostMessage) => void, parent?: AbortSignal): Promise<void>;
@@ -0,0 +1,110 @@
1
+ import { fork } from 'node:child_process';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { Fault, safeFault } from "./core.js";
4
+ import { parseHostMessage, superviseHost } from "./host.js";
5
+ import { retireHostEndpoint } from "./host-sdk.js";
6
+ export async function runHostWorker(options, emit, signal, entry = new URL(import.meta.url.endsWith('.ts') ? './host-worker.ts' : './host-worker.js', import.meta.url), retire = retireHostEndpoint) {
7
+ if (signal.aborted)
8
+ return;
9
+ let endpoint;
10
+ let failure;
11
+ await new Promise((resolve, reject) => {
12
+ const child = fork(fileURLToPath(entry), [], {
13
+ execArgv: [], stdio: ['ignore', 'ignore', 'ignore', 'ipc'],
14
+ env: { ...process.env, NODE_OPTIONS: '', NODE_PATH: '' },
15
+ });
16
+ let stopping = false, exited = false;
17
+ let terminate;
18
+ let kill;
19
+ const stop = () => {
20
+ if (stopping || exited)
21
+ return;
22
+ stopping = true;
23
+ if (child.connected)
24
+ child.send({ kind: 'stop' }, error => { if (error && !exited)
25
+ child.kill('SIGTERM'); });
26
+ terminate = setTimeout(() => { if (!exited)
27
+ child.kill('SIGTERM'); }, 2500);
28
+ kill = setTimeout(() => { if (!exited)
29
+ child.kill('SIGKILL'); }, 3000);
30
+ };
31
+ signal.addEventListener('abort', stop, { once: true });
32
+ child.once('spawn', () => {
33
+ if (signal.aborted) {
34
+ stop();
35
+ return;
36
+ }
37
+ child.send({ kind: 'start', options }, error => {
38
+ if (error) {
39
+ failure ??= new Fault('protocol');
40
+ stop();
41
+ }
42
+ });
43
+ });
44
+ child.on('message', value => {
45
+ if (stopping)
46
+ return;
47
+ const message = parseHostMessage(value);
48
+ if (!message) {
49
+ failure ??= new Fault('protocol');
50
+ stop();
51
+ return;
52
+ }
53
+ if (message.kind === 'endpoint') {
54
+ if (endpoint && (endpoint.id !== message.id || endpoint.clusterId !== message.clusterId)) {
55
+ failure ??= new Fault('protocol');
56
+ stop();
57
+ return;
58
+ }
59
+ endpoint = message;
60
+ child.send({ kind: 'endpoint-recorded', id: message.id }, error => {
61
+ if (error && !exited) {
62
+ failure ??= new Fault('protocol');
63
+ stop();
64
+ }
65
+ });
66
+ }
67
+ else {
68
+ if (message.kind === 'fault')
69
+ failure ??= new Fault(message.code, undefined, message.retryAfterMs);
70
+ emit(message);
71
+ }
72
+ });
73
+ child.once('error', () => { failure ??= new Fault('invalid-config', 'Cannot start the host worker. Check the Node runtime and installed package.'); });
74
+ child.once('close', () => {
75
+ exited = true;
76
+ clearTimeout(terminate);
77
+ clearTimeout(kill);
78
+ signal.removeEventListener('abort', stop);
79
+ if (!signal.aborted)
80
+ reject(failure ?? new Fault('retrying'));
81
+ else
82
+ resolve();
83
+ });
84
+ if (signal.aborted)
85
+ stop();
86
+ }).catch(error => { failure ??= safeFault(error); });
87
+ if (endpoint)
88
+ await retire(options, endpoint);
89
+ if (failure && !signal.aborted)
90
+ throw failure;
91
+ }
92
+ export async function runHost(options, report, parent) {
93
+ const stop = new AbortController();
94
+ const abort = () => stop.abort();
95
+ parent?.addEventListener('abort', abort, { once: true });
96
+ if (parent?.aborted)
97
+ stop.abort();
98
+ const signals = process.platform === 'win32' ? ['SIGINT', 'SIGTERM', 'SIGBREAK'] : ['SIGINT', 'SIGTERM'];
99
+ for (const signal of signals)
100
+ process.once(signal, abort);
101
+ try {
102
+ await superviseHost(options, { worker: runHostWorker, report }, stop.signal);
103
+ }
104
+ finally {
105
+ parent?.removeEventListener('abort', abort);
106
+ for (const signal of signals)
107
+ process.off(signal, abort);
108
+ }
109
+ }
110
+ //# sourceMappingURL=host-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-process.js","sourceRoot":"","sources":["../src/host-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Agent } from 'node:https';
2
+ import { TunnelRelayTunnelHost } from '@microsoft/dev-tunnels-connections';
3
+ import { TunnelManagementHttpClient } from '@microsoft/dev-tunnels-management';
4
+ import { TokenProvider } from './auth.ts';
5
+ import type { HostMessage, HostOptions, HostStatus } from './host.ts';
6
+ import { sleep } from './host.ts';
7
+ type HostManagement = TunnelManagementHttpClient & {
8
+ readonly httpsAgent: Agent;
9
+ };
10
+ export declare function hostManagement(agent: Agent): HostManagement;
11
+ export declare function localPort(port: number, signal: AbortSignal): Promise<void>;
12
+ interface ProbeDependencies {
13
+ local(port: number, signal: AbortSignal): Promise<void>;
14
+ remote(port: number, signal: AbortSignal): Promise<void>;
15
+ }
16
+ export declare class HostProbe {
17
+ private readonly ports;
18
+ private readonly deps;
19
+ private readonly failures;
20
+ private retryAt;
21
+ constructor(ports: number[], deps: ProbeDependencies);
22
+ check(ports: number[], signal: AbortSignal, age: number): Promise<{
23
+ status: HostStatus;
24
+ replace: boolean;
25
+ }>;
26
+ }
27
+ interface HostSdkDependencies {
28
+ tokens?: TokenProvider;
29
+ management?(agent: Agent): TunnelManagementHttpClient;
30
+ host?(management: HostManagement): TunnelRelayTunnelHost;
31
+ now?(): number;
32
+ wait?: typeof sleep;
33
+ }
34
+ export declare function runHostSdk(options: HostOptions, report: (message: HostMessage) => void | Promise<void>, parent: AbortSignal, deps?: HostSdkDependencies): Promise<void>;
35
+ export declare function retireHostEndpoint(options: HostOptions, endpoint: Extract<HostMessage, {
36
+ kind: 'endpoint';
37
+ }>, deps?: Pick<HostSdkDependencies, 'tokens' | 'management'>): Promise<void>;
38
+ export {};