litmus-cli 1.4.71 → 1.4.72

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 (45) hide show
  1. package/README.md +39 -9
  2. package/dist/commands/connect.d.ts +1 -0
  3. package/dist/commands/connect.d.ts.map +1 -1
  4. package/dist/commands/connect.js +37 -36
  5. package/dist/commands/connect.js.map +1 -1
  6. package/dist/commands/forward.d.ts +4 -16
  7. package/dist/commands/forward.d.ts.map +1 -1
  8. package/dist/commands/forward.js +19 -70
  9. package/dist/commands/forward.js.map +1 -1
  10. package/dist/commands/ssh.d.ts +3 -0
  11. package/dist/commands/ssh.d.ts.map +1 -0
  12. package/dist/commands/ssh.js +50 -0
  13. package/dist/commands/ssh.js.map +1 -0
  14. package/dist/index.js +16 -5
  15. package/dist/index.js.map +1 -1
  16. package/dist/lib/auto-forward.d.ts +29 -0
  17. package/dist/lib/auto-forward.d.ts.map +1 -0
  18. package/dist/lib/auto-forward.js +229 -0
  19. package/dist/lib/auto-forward.js.map +1 -0
  20. package/dist/lib/cursor-session.d.ts +6 -0
  21. package/dist/lib/cursor-session.d.ts.map +1 -1
  22. package/dist/lib/cursor-session.js +21 -1
  23. package/dist/lib/cursor-session.js.map +1 -1
  24. package/dist/lib/environment-checks.d.ts +1 -2
  25. package/dist/lib/environment-checks.d.ts.map +1 -1
  26. package/dist/lib/environment-checks.js +4 -9
  27. package/dist/lib/environment-checks.js.map +1 -1
  28. package/dist/lib/hook-logger.cjs +25 -19
  29. package/dist/lib/install-ssh-forward-hook.d.ts +6 -0
  30. package/dist/lib/install-ssh-forward-hook.d.ts.map +1 -0
  31. package/dist/lib/install-ssh-forward-hook.js +57 -0
  32. package/dist/lib/install-ssh-forward-hook.js.map +1 -0
  33. package/dist/lib/port-forward.d.ts +16 -0
  34. package/dist/lib/port-forward.d.ts.map +1 -0
  35. package/dist/lib/port-forward.js +46 -0
  36. package/dist/lib/port-forward.js.map +1 -0
  37. package/dist/lib/ssh-client.d.ts +6 -1
  38. package/dist/lib/ssh-client.d.ts.map +1 -1
  39. package/dist/lib/ssh-client.js +44 -4
  40. package/dist/lib/ssh-client.js.map +1 -1
  41. package/dist/lib/ssh-forward-hook.d.ts +13 -0
  42. package/dist/lib/ssh-forward-hook.d.ts.map +1 -0
  43. package/dist/lib/ssh-forward-hook.js +93 -0
  44. package/dist/lib/ssh-forward-hook.js.map +1 -0
  45. package/package.json +2 -2
@@ -1,9 +1,23 @@
1
- import net from "net";
2
- import readline from "readline";
1
+ import { tunnelArgs, localPortFree, localPortListening } from "../lib/port-forward.js";
3
2
  import chalk from "chalk";
4
3
  import { runConnect } from "./connect.js";
4
+ import { autoForward } from "../lib/auto-forward.js";
5
5
  import { fatal } from "../lib/errors.js";
6
6
  import { openSshTunnel, SSH_CONNECTION_FAILED } from "../lib/ssh-client.js";
7
+ /**
8
+ * ENG-3188: `litmus forward <token> [ports...]` opens the app a candidate runs in their
9
+ * workspace at `localhost` on their own computer, from one command.
10
+ *
11
+ * It is `litmus connect --ide ssh` up to the shell (the same key, workspace start, ssh
12
+ * config and preflight), then `ssh -N -L …` in place of the shell. A local forward
13
+ * reaches any port, a server listening on `localhost` only, and needs no dev-server
14
+ * config, which the browser links (ENG-2390) cannot offer.
15
+ *
16
+ * Without arguments, discover running apps continuously (ENG-3201). Explicit ports
17
+ * keep their selective meaning and work on older workspace images too.
18
+ * `5174:5173` forwards the workspace's 5173 to this computer's 5174.
19
+ */
20
+ export { tunnelArgs, localPortFree, localPortListening } from "../lib/port-forward.js";
7
21
  /** How long a tunnel must stay up for its drop to count as a drop, not a failure to connect. */
8
22
  const STABLE_MS = 10000;
9
23
  /** Failures to connect in a row before we stop retrying. */
@@ -34,21 +48,6 @@ export function parsePortArgs(args) {
34
48
  }
35
49
  return out;
36
50
  }
37
- /** `ssh` arguments for the tunnel. */
38
- export function tunnelArgs(alias, forwards) {
39
- return [
40
- "-N",
41
- // A forward that cannot bind is a failure to report, not a tunnel that is half up.
42
- "-o", "ExitOnForwardFailure=yes",
43
- "-o", "ServerAliveInterval=30",
44
- "-o", "ServerAliveCountMax=3",
45
- // Every connection to a port with nothing running on it would otherwise print
46
- // "channel N: open failed" into the candidate's terminal.
47
- "-o", "LogLevel=QUIET",
48
- ...forwards.flatMap((f) => ["-L", `${f.local}:localhost:${f.remote}`]),
49
- alias,
50
- ];
51
- }
52
51
  export function forwardingLines(forwards) {
53
52
  return [
54
53
  "",
@@ -60,30 +59,6 @@ export function forwardingLines(forwards) {
60
59
  "",
61
60
  ];
62
61
  }
63
- /** Whether this computer can listen on `port`, which ssh is about to need. */
64
- export function localPortFree(port) {
65
- return new Promise((resolve) => {
66
- const server = net.createServer();
67
- server.once("error", () => resolve(false));
68
- server.listen(port, "127.0.0.1", () => server.close(() => resolve(true)));
69
- });
70
- }
71
- /**
72
- * Whether something accepts connections on `port` here. ssh binds a forward's local
73
- * port only once it has connected and authenticated, so this is how we know the tunnel
74
- * is up. A connect, never a listen: a listen could hold the port at the moment ssh
75
- * binds it, and `ExitOnForwardFailure` would end the tunnel over it.
76
- */
77
- export function localPortListening(port) {
78
- return new Promise((resolve) => {
79
- const socket = net.connect({ port, host: "127.0.0.1" });
80
- socket.setTimeout(1000);
81
- const done = (up) => { socket.destroy(); resolve(up); };
82
- socket.once("connect", () => done(true));
83
- socket.once("error", () => done(false));
84
- socket.once("timeout", () => done(false));
85
- });
86
- }
87
62
  /** Calls `ready` once every forward is listening, unless ssh exits first. */
88
63
  async function whenListening(forwards, exited, ready) {
89
64
  while (!exited()) {
@@ -96,34 +71,6 @@ async function whenListening(forwards, exited, ready) {
96
71
  await new Promise((r) => setTimeout(r, READY_POLL_MS));
97
72
  }
98
73
  }
99
- function askForPorts() {
100
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
101
- return new Promise((resolve) => {
102
- rl.question(" Which port does your app run on? (for example 5173): ", (answer) => {
103
- rl.close();
104
- resolve(answer);
105
- });
106
- });
107
- }
108
- async function choosePorts(named, published) {
109
- if (named.length)
110
- return named;
111
- if (published.length)
112
- return published.map((p) => ({ local: p, remote: p }));
113
- if (!process.stdin.isTTY) {
114
- fatal("No port to forward.", "Name your app's port after the token, for example: litmus forward <token> 5173");
115
- }
116
- for (;;) {
117
- try {
118
- const chosen = parsePortArgs((await askForPorts()).split(/\s+/));
119
- if (chosen.length)
120
- return chosen;
121
- }
122
- catch (err) {
123
- console.log(chalk.yellow(` ${err instanceof Error ? err.message : String(err)}`));
124
- }
125
- }
126
- }
127
74
  async function holdTunnel(alias, forwards) {
128
75
  for (const f of forwards) {
129
76
  if (!(await localPortFree(f.local))) {
@@ -181,7 +128,9 @@ export async function runForward(token, portArgs, opts = {}) {
181
128
  await runConnect(token, "ssh", {
182
129
  verbose: opts.verbose,
183
130
  skills: false,
184
- tunnel: async (alias, published) => holdTunnel(alias, await choosePorts(named, published)),
131
+ tunnel: async (alias) => named.length
132
+ ? holdTunnel(alias, named)
133
+ : autoForward(alias, { args: tunnelArgs, free: localPortFree, listening: localPortListening }),
185
134
  });
186
135
  }
187
136
  //# sourceMappingURL=forward.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forward.js","sourceRoot":"","sources":["../../src/commands/forward.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forward.js","sourceRoot":"","sources":["../../src/commands/forward.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** The shell owns stdin and Ctrl+C; the connection owns discovery and its children. */
2
+ export declare function runSsh(alias: string): Promise<void>;
3
+ //# sourceMappingURL=ssh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/commands/ssh.ts"],"names":[],"mappings":"AAIA,uFAAuF;AACvF,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCzD"}
@@ -0,0 +1,50 @@
1
+ import { autoForward } from "../lib/auto-forward.js";
2
+ import { tunnelArgs, localPortFree, localPortListening } from "../lib/port-forward.js";
3
+ import { openSshSession, startManagedSshTunnel, SSH_CONNECTION_FAILED } from "../lib/ssh-client.js";
4
+ /** The shell owns stdin and Ctrl+C; the connection owns discovery and its children. */
5
+ export async function runSsh(alias) {
6
+ // Only our generated aliases, never SSH options or a shell command.
7
+ if (!/^litmus-[a-zA-Z0-9-]+$/.test(alias))
8
+ throw new Error("Use the litmus-… SSH alias from your assessment page.");
9
+ const abort = new AbortController();
10
+ const ignoreInterrupt = () => { };
11
+ process.on("SIGINT", ignoreInterrupt);
12
+ let terminated = 0;
13
+ const terminate = () => { terminated = 143; abort.abort(); };
14
+ const hangup = () => { terminated = 129; abort.abort(); };
15
+ process.on("SIGTERM", terminate);
16
+ process.on("SIGHUP", hangup);
17
+ const forwarding = autoForward(alias, { args: tunnelArgs, free: localPortFree, listening: localPortListening }, {
18
+ // A separate process group keeps a shell Ctrl+C from killing the tunnels.
19
+ // We still own and await every child; none is unref'd or left behind.
20
+ start: (args) => startManagedSshTunnel(args, undefined, true),
21
+ log: (line) => console.error(`\r\n${line}`),
22
+ }, abort.signal, { handleSignals: false, startupMessage: " App ports will forward automatically to localhost while this SSH session is open." }).catch(() => {
23
+ if (!abort.signal.aborted)
24
+ console.error("\r\n Automatic port forwarding stopped. Your SSH shell is still available. Reconnect to retry.");
25
+ });
26
+ try {
27
+ const status = await openSshSession(alias, "ssh", undefined, abort.signal);
28
+ if (status === null) {
29
+ console.error(" Couldn't start ssh. Install OpenSSH, then run the connection command again.");
30
+ process.exitCode = 1;
31
+ }
32
+ else if (terminated) {
33
+ process.exitCode = terminated;
34
+ }
35
+ else {
36
+ if (status === SSH_CONNECTION_FAILED)
37
+ console.error(` If the connection dropped, reconnect with: ssh ${alias}`);
38
+ if (status)
39
+ process.exitCode = status;
40
+ }
41
+ }
42
+ finally {
43
+ abort.abort();
44
+ await forwarding;
45
+ process.off("SIGINT", ignoreInterrupt);
46
+ process.off("SIGTERM", terminate);
47
+ process.off("SIGHUP", hangup);
48
+ }
49
+ }
50
+ //# sourceMappingURL=ssh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/commands/ssh.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { runDiagnoseConnection } from "./commands/diagnose-connection.js";
3
3
  import { program } from "commander";
4
+ import { cursorSessionFlags } from "./lib/cursor-session.js";
4
5
  import { runInit } from "./commands/init.js";
5
6
  import { runConnect } from "./commands/connect.js";
7
+ import { runSsh } from "./commands/ssh.js";
6
8
  import { runForward } from "./commands/forward.js";
7
9
  import { runPush } from "./commands/push.js";
8
10
  import { runSubmit } from "./commands/submit.js";
@@ -44,12 +46,9 @@ program
44
46
  process.exit(1);
45
47
  }
46
48
  });
47
- program
48
- .command("connect [token]")
49
+ cursorSessionFlags(program.command("connect [token]"))
49
50
  .description("Open your assessment workspace in your editor of choice (codespace)")
50
51
  .option("--ide <editor>", "Where to open: vscode (native VS Code), cursor (native Cursor), browser, or ssh")
51
- .option("--cursor-session-cleanup", "Experimental: disconnect the ended Cursor IDE and remove its recent entry; does not delete chats")
52
- .option("--cursor-agent-window", "Experimental: install the Litmus companion to hand this IDE workspace to Agents Window")
53
52
  .option("--verbose", "Print what your editor wrote while opening, for support")
54
53
  .option("--skills", "Import your AI skills (~/.claude/skills, ~/.agents/skills, ...) into the workspace without asking")
55
54
  .option("--no-skills", "Don't offer to import your AI skills")
@@ -64,6 +63,18 @@ program
64
63
  process.exit(1);
65
64
  }
66
65
  });
66
+ program
67
+ .command("ssh <alias>")
68
+ .description("Open a configured workspace SSH shell with automatic localhost forwarding")
69
+ .action(async (alias) => {
70
+ try {
71
+ await runSsh(alias);
72
+ }
73
+ catch (err) {
74
+ console.error(err instanceof Error ? err.message : String(err));
75
+ process.exitCode = 1;
76
+ }
77
+ });
67
78
  program
68
79
  .command("diagnose-connection [token]")
69
80
  .description("Collect connection diagnostics without changing your editor or workspace")
@@ -80,7 +91,7 @@ program
80
91
  });
81
92
  program
82
93
  .command("forward [token] [ports...]")
83
- .description("Open the app you run in your workspace at localhost on this computer (5173, or 5174:5173)")
94
+ .description("Automatically forward workspace apps to localhost; optionally choose ports (5173, or 5174:5173)")
84
95
  .option("--verbose", "Print more detail, for support")
85
96
  .action(async (token, ports, opts) => {
86
97
  try {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { startManagedSshTunnel } from "./ssh-client.js";
2
+ type Tunnel = ReturnType<typeof startManagedSshTunnel>;
3
+ type Forward = {
4
+ local: number;
5
+ remote: number;
6
+ };
7
+ export declare function parseDiscoveredPorts(body: unknown): number[];
8
+ /** Bounded HTTP over our loopback SSH forward; no proxy env, tokens or remote exec. */
9
+ export declare function readDiscoveredPorts(local: number, signal: AbortSignal): Promise<number[]>;
10
+ export declare function unusedLocalPort(excluded?: ReadonlySet<number>): Promise<number>;
11
+ declare function pause(ms: number, signal: AbortSignal): Promise<void>;
12
+ export interface AutoForwardDeps {
13
+ args: (alias: string, forwards: Forward[]) => string[];
14
+ free: (port: number) => Promise<boolean>;
15
+ listening: (port: number) => Promise<boolean>;
16
+ start: (args: string[]) => Tunnel;
17
+ read: (port: number, signal: AbortSignal) => Promise<number[]>;
18
+ reserve: (excluded?: ReadonlySet<number>) => Promise<number>;
19
+ log: (message: string) => void;
20
+ now: () => number;
21
+ pause: typeof pause;
22
+ }
23
+ /** One signal owner and reconciliation loop; adding a port never restarts another. */
24
+ export declare function autoForward(alias: string, network: Pick<AutoForwardDeps, "args" | "free" | "listening">, overrides?: Partial<AutoForwardDeps>, externalSignal?: AbortSignal, options?: {
25
+ handleSignals?: boolean;
26
+ startupMessage?: string;
27
+ }): Promise<void>;
28
+ export {};
29
+ //# sourceMappingURL=auto-forward.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-forward.d.ts","sourceRoot":"","sources":["../../src/lib/auto-forward.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAQvD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACtD,KAAK,OAAO,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAO5D;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBzF;AAED,wBAAsB,eAAe,CAAC,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBhG;AAED,iBAAS,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7D;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;IACtD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7C,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9D,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5D,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,GAAG,EAAE,MAAM,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,KAAK,CAAA;CACpB;AAKD,sFAAsF;AACtF,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,EAC7D,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,EACxC,cAAc,CAAC,EAAE,WAAW,EAC5B,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACjE,OAAO,CAAC,IAAI,CAAC,CAuIf"}
@@ -0,0 +1,229 @@
1
+ import http from "http";
2
+ import net from "net";
3
+ import { startManagedSshTunnel } from "./ssh-client.js";
4
+ const DISCOVERY_PORT = 3998;
5
+ const MAX_PORTS = 256;
6
+ const DENIED = new Set([2222, 3000, DISCOVERY_PORT, 3999, 8053, 8080, 8081, 8443, 9090]);
7
+ const POLL_MS = 2000;
8
+ const RETRY_MS = 2000;
9
+ const CONNECT_MS = 20000;
10
+ export function parseDiscoveredPorts(body) {
11
+ const data = body;
12
+ if (!data || data.version !== 1 || !Array.isArray(data.ports) || data.ports.length > MAX_PORTS ||
13
+ data.ports.some((p) => !Number.isInteger(p) || p < 1024 || p > 65535 || DENIED.has(p))) {
14
+ throw new Error("Invalid workspace port discovery response");
15
+ }
16
+ return [...new Set(data.ports)].sort((a, b) => a - b);
17
+ }
18
+ /** Bounded HTTP over our loopback SSH forward; no proxy env, tokens or remote exec. */
19
+ export function readDiscoveredPorts(local, signal) {
20
+ return new Promise((resolve, reject) => {
21
+ const req = http.get({ host: "127.0.0.1", port: local, path: "/ports", agent: false, signal }, (res) => {
22
+ let body = "";
23
+ res.setEncoding("utf8");
24
+ res.on("data", (chunk) => {
25
+ body += chunk;
26
+ if (body.length > 8192)
27
+ req.destroy(new Error("Discovery response too large"));
28
+ });
29
+ res.on("error", reject);
30
+ res.on("end", () => {
31
+ try {
32
+ if (res.statusCode !== 200)
33
+ throw new Error("Workspace discovery unavailable");
34
+ resolve(parseDiscoveredPorts(JSON.parse(body)));
35
+ }
36
+ catch (err) {
37
+ reject(err);
38
+ }
39
+ });
40
+ });
41
+ const deadline = setTimeout(() => req.destroy(new Error("Discovery request timed out")), 3000);
42
+ req.on("error", reject);
43
+ req.on("close", () => clearTimeout(deadline));
44
+ });
45
+ }
46
+ export async function unusedLocalPort(excluded = new Set()) {
47
+ const held = [];
48
+ try {
49
+ for (;;) {
50
+ const server = net.createServer();
51
+ held.push(server);
52
+ await new Promise((resolve, reject) => {
53
+ server.once("error", reject);
54
+ server.listen(0, "127.0.0.1", resolve);
55
+ });
56
+ const port = server.address().port;
57
+ if (!excluded.has(port))
58
+ return port;
59
+ // Hold rejected sockets until selection finishes so the allocator cannot
60
+ // keep returning the same excluded port. At most excluded.size + 1 sockets.
61
+ }
62
+ }
63
+ finally {
64
+ await Promise.all(held.map((s) => new Promise((resolve) => s.close(() => resolve()))));
65
+ }
66
+ }
67
+ function pause(ms, signal) {
68
+ return new Promise((resolve) => {
69
+ if (signal.aborted) {
70
+ resolve();
71
+ return;
72
+ }
73
+ const finish = () => { clearTimeout(timer); signal.removeEventListener("abort", finish); resolve(); };
74
+ const timer = setTimeout(finish, ms);
75
+ signal.addEventListener("abort", finish, { once: true });
76
+ });
77
+ }
78
+ /** One signal owner and reconciliation loop; adding a port never restarts another. */
79
+ export async function autoForward(alias, network, overrides = {}, externalSignal, options = {}) {
80
+ const d = { ...network, start: startManagedSshTunnel, read: readDiscoveredPorts,
81
+ reserve: unusedLocalPort, log: console.log, now: Date.now, pause, ...overrides };
82
+ const abort = new AbortController();
83
+ const stop = () => abort.abort();
84
+ if (options.handleSignals !== false) {
85
+ process.on("SIGINT", stop);
86
+ process.on("SIGTERM", stop);
87
+ }
88
+ externalSignal?.addEventListener("abort", stop, { once: true });
89
+ if (externalSignal?.aborted)
90
+ stop();
91
+ const entries = new Map();
92
+ let control;
93
+ const entry = (local, remote) => ({ local, remote, done: false, status: 0,
94
+ ready: false, announced: false, started: 0, failures: 0, next: 0, blocked: false });
95
+ const hint = (port) => `${port === 65535 ? 65534 : port + 1}:${port}`;
96
+ let lastPoll = -Infinity;
97
+ let lastSuccess = d.now();
98
+ let everDiscovered = false;
99
+ let warned = false;
100
+ let limitWarned = false;
101
+ async function tick(e, isControl = false) {
102
+ if (e.child && e.done) {
103
+ e.child = undefined;
104
+ e.ready = false;
105
+ e.failures = d.now() - e.started >= 10000 ? 0 : e.failures + 1;
106
+ if (e.status === null)
107
+ throw new Error("Couldn't start ssh. Install OpenSSH, then run litmus forward again.");
108
+ if (e.failures >= 3) {
109
+ if (isControl) {
110
+ if (![...entries.values()].some((f) => f.ready && !f.done)) {
111
+ throw new Error("Couldn't keep the discovery connection open. Check the workspace and run litmus forward again.");
112
+ }
113
+ d.log(" Discovery connection failed; existing forwards remain open. Retrying in 30 seconds...");
114
+ e.failures = 0;
115
+ e.next = d.now() + 30000;
116
+ return;
117
+ }
118
+ e.blocked = true;
119
+ d.log(` Port ${e.local} could not reconnect. Other forwards remain open. Rerun litmus forward to retry.`);
120
+ return;
121
+ }
122
+ e.next = d.now() + RETRY_MS;
123
+ }
124
+ if (e.blocked || abort.signal.aborted)
125
+ return;
126
+ if (!e.child && d.now() >= e.next) {
127
+ if ((isControl && entries.has(e.local)) || !(await d.free(e.local))) {
128
+ if (isControl) {
129
+ e.local = await d.reserve(new Set(entries.keys()));
130
+ return;
131
+ }
132
+ if (!e.announced)
133
+ d.log(` Port ${e.local} is already in use on this computer. Use another port: litmus forward <token> ${hint(e.remote)}`);
134
+ e.announced = true; // Warn once, but retry if the local port is released.
135
+ e.next = d.now() + POLL_MS;
136
+ return;
137
+ }
138
+ if (abort.signal.aborted)
139
+ return;
140
+ e.done = false;
141
+ e.ready = false;
142
+ e.started = d.now();
143
+ const child = d.start(d.args(alias, [e]));
144
+ e.child = child;
145
+ void child.exited.then((status) => { e.status = status; e.done = true; });
146
+ }
147
+ if (e.child && !e.done && !e.ready) {
148
+ const up = await d.listening(e.local);
149
+ if (up && !e.done && !abort.signal.aborted) {
150
+ e.ready = true;
151
+ if (!isControl) {
152
+ d.log(` http://localhost:${e.local}${e.announced ? " (connected)" : ""}`);
153
+ e.announced = true;
154
+ }
155
+ }
156
+ else if (d.now() - e.started > CONNECT_MS) {
157
+ await e.child.stop();
158
+ }
159
+ }
160
+ }
161
+ try {
162
+ control = entry(await d.reserve(), DISCOVERY_PORT);
163
+ d.log(options.startupMessage ?? " Watching for apps in your workspace. Start a server in its terminal; keep this window open. Ctrl+C stops.");
164
+ while (!abort.signal.aborted) {
165
+ await tick(control, true);
166
+ if (control.ready && !control.done && d.now() - lastPoll >= POLL_MS) {
167
+ lastPoll = d.now();
168
+ try {
169
+ const ports = parseDiscoveredPorts({ version: 1, ports: await d.read(control.local, abort.signal) });
170
+ if (warned)
171
+ d.log(" Port discovery reconnected.");
172
+ warned = false;
173
+ everDiscovered = true;
174
+ lastSuccess = d.now();
175
+ for (const port of ports) {
176
+ if (!entries.has(port)) {
177
+ if (entries.size >= MAX_PORTS) {
178
+ if (!limitWarned)
179
+ d.log(" Forward limit reached (256). Rerun with explicit ports to choose another set.");
180
+ limitWarned = true;
181
+ break;
182
+ }
183
+ entries.set(port, entry(port, port));
184
+ }
185
+ }
186
+ }
187
+ catch {
188
+ if (abort.signal.aborted)
189
+ break;
190
+ if (!warned && d.now() - lastSuccess >= 10000) {
191
+ warned = true;
192
+ d.log(everDiscovered
193
+ ? " Port discovery is unavailable; existing forwards remain open. Retrying..."
194
+ : " This workspace is not answering port discovery. An older workspace may need explicit ports: litmus forward <token> 5173. Retrying...");
195
+ }
196
+ }
197
+ }
198
+ if (entries.has(control.local)) {
199
+ // The private connection must yield to an app discovered on its port.
200
+ // Select outside every known app port, including not-yet-bound forwards.
201
+ const local = await d.reserve(new Set(entries.keys()));
202
+ await control.child?.stop();
203
+ control = entry(local, DISCOVERY_PORT);
204
+ lastPoll = -Infinity;
205
+ }
206
+ // At most one new application connection per tick; no burst of SSH logins.
207
+ let launched = false;
208
+ for (const e of entries.values()) {
209
+ if (!e.child && launched)
210
+ continue;
211
+ const before = e.child;
212
+ await tick(e);
213
+ if (!before && e.child)
214
+ launched = true;
215
+ }
216
+ await d.pause(250, abort.signal);
217
+ }
218
+ }
219
+ finally {
220
+ stop();
221
+ await Promise.all([control, ...entries.values()].flatMap((e) => e?.child ? [e.child.stop()] : []));
222
+ if (options.handleSignals !== false) {
223
+ process.off("SIGINT", stop);
224
+ process.off("SIGTERM", stop);
225
+ }
226
+ externalSignal?.removeEventListener("abort", stop);
227
+ }
228
+ }
229
+ //# sourceMappingURL=auto-forward.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-forward.js","sourceRoot":"","sources":["../../src/lib/auto-forward.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
+ import type { Command } from "commander";
2
+ export declare function cursorSessionFlags(command: Command): Command;
1
3
  export interface CursorSessionOptions {
2
4
  handoff: boolean;
3
5
  cleanup: boolean;
4
6
  }
7
+ export declare function cursorSessionOptions(opts: {
8
+ cursorAgentWindow?: boolean;
9
+ cursorSessionCleanup?: boolean;
10
+ }, platform?: NodeJS.Platform): CursorSessionOptions;
5
11
  /** Build from our bundled source; never download executable code at connect time. */
6
12
  export declare function buildCursorSessionVsix(destination: string): Promise<void>;
7
13
  export declare function prepareCursorSession(command: string, alias: string, backendUrl: string, token: string, options: CursorSessionOptions, home?: string, platform?: NodeJS.Platform): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-session.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-session.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,oBAAoB;IAAG,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE;AAE5E,qFAAqF;AACrF,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EACjE,OAAO,EAAE,oBAAoB,EAC7B,IAAI,SAAe,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAChE,OAAO,CAAC,OAAO,CAAC,CA0ClB"}
1
+ {"version":3,"file":"cursor-session.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAexC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAK5D;AAED,MAAM,WAAW,oBAAoB;IAAG,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE;AAE5E,wBAAgB,oBAAoB,CAClC,IAAI,EAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE,EACrE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,oBAAoB,CAKtB;AAED,qFAAqF;AACrF,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EACjE,OAAO,EAAE,oBAAoB,EAC7B,IAAI,SAAe,EAAE,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAChE,OAAO,CAAC,OAAO,CAAC,CAiDlB"}