linkshell-cli 0.8.1 → 0.9.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.
@@ -3,6 +3,8 @@ export declare function silenceSqliteWarning(): void;
3
3
  interface HostConfig {
4
4
  /** v2 gateway base URL (ws:// or wss://), or "off". Unset: the official gateway once logged in. */
5
5
  gateway?: string;
6
+ /** Set once `linkshell setup` has run here (by itself on the first start, or by hand). */
7
+ setup?: "done";
6
8
  }
7
9
  /** LinkShell's own gateway: a Pro account's computers are reachable there. */
8
10
  export declare const OFFICIAL_GATEWAY = "wss://gateway.itool.tech";
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../../src/commands/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../../../src/commands/host.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export interface ScreenAccess {
2
2
  supported: boolean;
3
+ /** Whether what captures the screen is there: LinkShell.app on a Mac (installed with the CLI), ffmpeg on Linux. */
3
4
  ffmpeg: boolean;
4
5
  recording: boolean | null;
5
6
  control: boolean | null;
@@ -11,6 +12,15 @@ export declare function screenAccess(ask?: boolean): Promise<ScreenAccess | "old
11
12
  export declare function screenReady(access: ScreenAccess): boolean;
12
13
  /** One line for `status`, `doctor` and the host's start: what works, and the command for the rest. */
13
14
  export declare function describeScreen(access: ScreenAccess | "old" | undefined): string | undefined;
15
+ type Print = (line?: string) => void;
16
+ /**
17
+ * Gets this computer's screen ready for the phone, as far as it can be, saying
18
+ * what it finds. On a Mac the two permissions are LinkShell.app's: its own
19
+ * window comes up on this computer, takes the user to each switch and ticks
20
+ * them off, and this waits beside it. True when everything is in place.
21
+ */
22
+ export declare function setUpScreen(out: Print, interactive: boolean): Promise<boolean>;
14
23
  export declare function runScreenSetup(options: {
15
24
  check?: boolean;
16
25
  }): Promise<void>;
26
+ export {};
@@ -27,9 +27,9 @@ export function describeScreen(access) {
27
27
  if (access === "old")
28
28
  return "restart the host to check (linkshell host stop && linkshell host --daemon)";
29
29
  if (!access.supported)
30
- return "not available on this system";
30
+ return process.platform === "darwin" ? "needs a Mac with Apple silicon" : "not available on this system";
31
31
  if (!access.ffmpeg)
32
- return `needs ffmpeg (${process.platform === "darwin" ? "brew install ffmpeg" : "install it with your package manager"})`;
32
+ return process.platform === "darwin" ? MISSING_APP : "needs ffmpeg (install it with your package manager)";
33
33
  if (process.platform !== "darwin")
34
34
  return "can be watched (controlling it needs macOS)";
35
35
  if (access.recording === null || access.control === null)
@@ -39,96 +39,104 @@ export function describeScreen(access) {
39
39
  const missing = [!access.recording && "watching", !access.control && "controlling"].filter(Boolean).join(" and ");
40
40
  return `${missing} isn't allowed yet — set it up with: linkshell screen`;
41
41
  }
42
+ /** A Mac without LinkShell.app: the optional package that carries it wasn't installed (npm run with --omit=optional, or a failed download). */
43
+ const MISSING_APP = "LinkShell.app is missing — reinstall with: npm install -g linkshell-cli";
42
44
  const PERMISSIONS = {
43
- recording: {
44
- label: "Watching the screen",
45
- where: "Screen & System Audio Recording (录屏与系统录音)",
46
- },
47
- control: {
48
- label: "Controlling it",
49
- where: "Accessibility (辅助功能)",
50
- },
45
+ recording: "Watching the screen",
46
+ control: "Controlling it",
51
47
  };
52
- export async function runScreenSetup(options) {
53
- const out = (line = "") => process.stdout.write(`${line}\n`);
54
- const row = (ok, label, detail) => out(` ${ok ? green("✓") : red("✗")} ${label.padEnd(22)} ${detail}`);
55
- out("\n LinkShell screen\n");
56
- if (!hostRuntimeOk()) {
57
- row(false, "Host", `needs Node.js 22.13 or newer (this is ${process.version})`);
58
- process.exitCode = 1;
59
- return;
60
- }
61
- if (!options.check)
62
- await ensureHostRunning();
48
+ const row = (out, ok, label, detail) => out(` ${ok ? green("✓") : red("✗")} ${label.padEnd(22)} ${detail}`);
49
+ /**
50
+ * Gets this computer's screen ready for the phone, as far as it can be, saying
51
+ * what it finds. On a Mac the two permissions are LinkShell.app's: its own
52
+ * window comes up on this computer, takes the user to each switch and ticks
53
+ * them off, and this waits beside it. True when everything is in place.
54
+ */
55
+ export async function setUpScreen(out, interactive) {
63
56
  let access = await screenAccess();
64
57
  if (!access) {
65
- row(false, "Host", "not running — start it with: linkshell host --daemon");
66
- process.exitCode = 1;
67
- return;
58
+ row(out, false, "Host", "not running — start it with: linkshell host --daemon");
59
+ return false;
68
60
  }
69
61
  if (access === "old") {
70
- row(false, "Host", "is older than this CLI — restart it (stops running agent turns):");
71
- out(" linkshell host stop && linkshell host --daemon\n");
72
- process.exitCode = 1;
73
- return;
62
+ row(out, false, "Host", "is older than this CLI — restart it (stops running agent turns):");
63
+ out(" linkshell host stop && linkshell host --daemon");
64
+ return false;
74
65
  }
75
66
  if (!access.supported) {
76
- row(false, "Screen", "not available on this system");
77
- process.exitCode = 1;
78
- return;
67
+ row(out, false, "Screen", process.platform === "darwin" ? "needs a Mac with Apple silicon" : "not available on this system");
68
+ return false;
79
69
  }
80
- row(access.ffmpeg, "ffmpeg", access.ffmpeg ? "found" : `not installed — ${process.platform === "darwin" ? "brew install ffmpeg" : "install it with your package manager"}, then run this again`);
81
70
  if (process.platform !== "darwin") {
82
- out(`\n ${access.ffmpeg ? "The screen can be watched from the phone." : ""} Controlling it needs macOS.\n`);
83
- if (!access.ffmpeg)
84
- process.exitCode = 1;
85
- return;
71
+ row(out, access.ffmpeg, "ffmpeg", access.ffmpeg ? "found" : "not installed — install it with your package manager, then run this again");
72
+ if (access.ffmpeg)
73
+ out(dim(" The screen can be watched from the phone; controlling it needs macOS."));
74
+ return access.ffmpeg;
75
+ }
76
+ if (!access.ffmpeg) {
77
+ row(out, false, "LinkShell.app", "missing from this installation — reinstall with: npm install -g linkshell-cli");
78
+ return false;
86
79
  }
87
80
  if (access.recording === null || access.control === null) {
88
- row(false, "Permissions", access.problem ?? "could not be checked");
89
- process.exitCode = 1;
90
- return;
81
+ row(out, false, "Permissions", access.problem ?? "could not be checked");
82
+ return false;
91
83
  }
92
- const app = access.app || "LinkShell";
93
- const interactive = !options.check && process.stdin.isTTY === true;
94
- for (const kind of ["recording", "control"]) {
95
- const permission = PERMISSIONS[kind];
96
- if (access[kind]) {
97
- row(true, permission.label, "allowed");
98
- continue;
99
- }
100
- if (!interactive) {
101
- row(false, permission.label, "not allowed yet");
102
- continue;
103
- }
104
- // The system's own question comes up on this computer, and its settings open at the switch.
105
- await screenAccess(true);
106
- out(` ${red("✗")} ${permission.label.padEnd(22)} not allowed yet`);
107
- out(` System Settings has opened at Privacy & Security › ${permission.where}.`);
108
- out(` Turn on the switch for "${app}" there.${kind === "recording" ? " If macOS offers to quit and reopen it, later is fine." : ""}`);
109
- out(dim(" Waiting for the switch… (Ctrl+C to stop; run this again any time)"));
110
- const deadline = Date.now() + 10 * 60_000;
111
- let allowed = false;
112
- while (!allowed && Date.now() < deadline) {
113
- await new Promise((resolve) => setTimeout(resolve, 1500));
114
- const now = await screenAccess().catch(() => undefined);
115
- if (now && now !== "old") {
116
- access = now;
117
- allowed = now[kind] === true;
84
+ const kinds = ["recording", "control"];
85
+ const said = new Set();
86
+ const tell = (now) => {
87
+ for (const kind of kinds) {
88
+ if (now[kind] && !said.has(kind)) {
89
+ said.add(kind);
90
+ row(out, true, PERMISSIONS[kind], "allowed");
118
91
  }
119
92
  }
120
- if (!allowed) {
121
- out(`\n Still not allowed. Run ${"`linkshell screen`"} again when you are at the switch.\n`);
122
- process.exitCode = 1;
123
- return;
124
- }
125
- row(true, permission.label, "allowed");
93
+ };
94
+ tell(access);
95
+ if (screenReady(access))
96
+ return true;
97
+ if (!interactive) {
98
+ for (const kind of kinds)
99
+ if (!access[kind])
100
+ row(out, false, PERMISSIONS[kind], "not allowed yet");
101
+ return false;
102
+ }
103
+ // The app's own window: it has the system ask, opens the settings at each switch, and shows what is done.
104
+ await screenAccess(true);
105
+ const missing = kinds.filter((kind) => !access[kind]).length;
106
+ out(` A LinkShell window has opened on this Mac: turn on the ${missing === 2 ? "two switches" : "switch"} it shows.`);
107
+ out(dim(" Waiting… (Ctrl+C to stop; `linkshell screen` picks up where this left off)"));
108
+ const deadline = Date.now() + 10 * 60_000;
109
+ while (Date.now() < deadline) {
110
+ await new Promise((resolve) => setTimeout(resolve, 1500));
111
+ const now = await screenAccess().catch(() => undefined);
112
+ if (!now || now === "old")
113
+ continue;
114
+ access = now;
115
+ tell(now);
116
+ if (screenReady(now))
117
+ return true;
126
118
  }
127
- if (screenReady(access)) {
128
- out(`\n ${green("Ready.")} In the app: 电脑 › 屏幕. To take the pointer and keyboard, pick 触控板 or 点按 in the viewer's toolbar.\n`);
119
+ for (const kind of kinds)
120
+ if (!access[kind])
121
+ row(out, false, PERMISSIONS[kind], "still not allowed");
122
+ return false;
123
+ }
124
+ export async function runScreenSetup(options) {
125
+ const out = (line = "") => process.stdout.write(`${line}\n`);
126
+ out("\n LinkShell screen\n");
127
+ if (!hostRuntimeOk()) {
128
+ row(out, false, "Host", `needs Node.js 22.13 or newer (this is ${process.version})`);
129
+ process.exitCode = 1;
130
+ return;
131
+ }
132
+ if (!options.check)
133
+ await ensureHostRunning();
134
+ const interactive = !options.check && process.stdin.isTTY === true;
135
+ if (await setUpScreen(out, interactive)) {
136
+ out(process.platform === "darwin" ? `\n ${green("Ready.")} In the app: 电脑 › 屏幕. To take the pointer and keyboard, pick 触控板 or 点按 in the viewer's toolbar.\n` : "");
129
137
  }
130
138
  else {
131
- out(`\n Not ready yet${access.ffmpeg ? "" : ": install ffmpeg"}${interactive ? "" : "; run `linkshell screen` in a terminal to set it up"}.\n`);
139
+ out(`\n Not ready yet${interactive ? "" : "; run `linkshell screen` in a terminal to set it up"}.\n`);
132
140
  process.exitCode = 1;
133
141
  }
134
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../../src/commands/screen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../../src/commands/screen.ts"],"names":[],"mappings":"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"}
@@ -1 +1,11 @@
1
- export declare function runSetup(): Promise<void>;
1
+ /** Whether this installation has been through setup (or said no to it). */
2
+ export declare function setupDone(): Promise<boolean>;
3
+ /** The whole of it. `from`: who is running it — said aloud only when it wasn't asked for. */
4
+ export declare function runSetup(version: string, from?: "command" | "first-start"): Promise<void>;
5
+ /**
6
+ * The first start on a computer: the host has just been started by someone at
7
+ * a terminal, and nothing has ever been set up here. Rather than leave the
8
+ * rest for the day it is needed (by then nobody is at the computer), it is
9
+ * done now. Once: a second start says nothing.
10
+ */
11
+ export declare function offerSetup(version: string): Promise<boolean>;
@@ -1,44 +1,106 @@
1
1
  import * as readline from "node:readline";
2
- import { hostname } from "node:os";
3
- import { loadConfig, saveConfig, getConfigPath } from "../config.js";
4
- function ask(rl, question, defaultValue) {
5
- const suffix = defaultValue ? ` (${defaultValue})` : "";
6
- return new Promise((resolve) => {
7
- rl.question(` ${question}${suffix}: `, (answer) => {
8
- resolve(answer.trim() || defaultValue || "");
9
- });
10
- });
2
+ import { isLoggedIn, loadAuth } from "../auth.js";
3
+ import { assertHostRuntime, ensureHostRunning, joinGatewayAfterLogin, readHostConfig, withRunningHost, writeHostConfig } from "./host.js";
4
+ import { setUpScreen } from "./screen.js";
5
+ // `linkshell setup`: everything a new installation needs, once, in order —
6
+ // the host running, the screen's permissions, a phone that can reach this
7
+ // computer. Someone who installs and never comes back to the terminal should
8
+ // leave with all of it done: the first `linkshell host --daemon` runs this by
9
+ // itself (see `offerSetup`).
10
+ const green = (text) => `\x1b[32m${text}\x1b[0m`;
11
+ const dim = (text) => `\x1b[2m${text}\x1b[0m`;
12
+ const bold = (text) => `\x1b[1m${text}\x1b[0m`;
13
+ function ask(question) {
14
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
15
+ return new Promise((resolve) => rl.question(question, (answer) => {
16
+ rl.close();
17
+ resolve(answer.trim().toLowerCase());
18
+ }));
11
19
  }
12
- function defaultShell() {
13
- if (process.platform === "win32") {
14
- return process.env.COMSPEC ?? "cmd.exe";
20
+ async function home() {
21
+ const { defaultHome } = await import("@linkshell/host");
22
+ return defaultHome();
23
+ }
24
+ /** Whether this installation has been through setup (or said no to it). */
25
+ export async function setupDone() {
26
+ return readHostConfig(await home()).setup !== undefined;
27
+ }
28
+ async function remember(outcome) {
29
+ const at = await home();
30
+ writeHostConfig(at, { ...readHostConfig(at), setup: outcome });
31
+ }
32
+ /** The phone's way to this computer: an account both are signed in to, or a pairing through a gateway. */
33
+ async function setUpPhone(out, interactive) {
34
+ const gateway = await withRunningHost((client) => client.call("gateway.status", {}));
35
+ if (isLoggedIn()) {
36
+ const email = loadAuth()?.email;
37
+ if (gateway?.status === "online") {
38
+ out(` ${green("✓")} Signed in${email ? ` as ${email}` : ""}: this computer is online.`);
39
+ out(dim(" Open LinkShell on your phone and sign in with the same account — it shows up there, no pairing needed."));
40
+ return true;
41
+ }
42
+ // Signed in, not online yet (a host started before the login, or no subscription): say which.
43
+ await joinGatewayAfterLogin("pro");
44
+ return (await withRunningHost((client) => client.call("gateway.status", {})))?.status === "online";
45
+ }
46
+ if (gateway && gateway.status !== "off" && gateway.devices.length > 0) {
47
+ out(` ${green("✓")} Paired with ${gateway.devices.map((device) => device.name).join(", ")}.`);
48
+ return true;
15
49
  }
16
- return process.env.SHELL ?? "/bin/bash";
50
+ if (gateway && gateway.status !== "off") {
51
+ out(" This computer uses your own gateway. Pair your phone with: linkshell pair");
52
+ return false;
53
+ }
54
+ if (!interactive) {
55
+ out(" Not connected to a phone yet: linkshell login (LinkShell account), or your own gateway and linkshell pair.");
56
+ return false;
57
+ }
58
+ out(" Your phone reaches this computer through your LinkShell account (Pro), from anywhere.");
59
+ const answer = await ask(" Sign in now? It opens your browser. [Y/n] ");
60
+ if (answer === "n" || answer === "no") {
61
+ out(dim(" Later: linkshell login — or with your own gateway: linkshell host --gateway <url>, then linkshell pair"));
62
+ return false;
63
+ }
64
+ const { runLogin } = await import("./login.js");
65
+ const result = await runLogin();
66
+ if (!result)
67
+ return false;
68
+ await joinGatewayAfterLogin(result.plan);
69
+ return (await withRunningHost((client) => client.call("gateway.status", {})))?.status === "online";
70
+ }
71
+ /** The whole of it. `from`: who is running it — said aloud only when it wasn't asked for. */
72
+ export async function runSetup(version, from = "command") {
73
+ const out = (line = "") => process.stdout.write(`${line}\n`);
74
+ const interactive = process.stdin.isTTY === true && process.stdout.isTTY === true;
75
+ assertHostRuntime();
76
+ out(`\n ${bold("LinkShell setup")}${from === "first-start" ? dim(" (first start on this computer; again any time with: linkshell setup)") : ""}\n`);
77
+ out(` ${bold("1")} The host`);
78
+ await ensureHostRunning();
79
+ out(` ${green("✓")} Running (${version}); it keeps running in the background.\n`);
80
+ out(` ${bold("2")} The screen ${dim("— watch and control this computer from the phone")}`);
81
+ const screen = await setUpScreen(out, interactive);
82
+ out();
83
+ out(` ${bold("3")} Your phone`);
84
+ const phone = await setUpPhone(out, interactive);
85
+ out();
86
+ // Run where nobody could answer, it has set nothing up: the first start at a terminal still offers it.
87
+ if (interactive)
88
+ await remember("done");
89
+ if (screen && phone)
90
+ out(` ${green("All set.")} Open LinkShell on your phone.\n`);
91
+ else
92
+ out(` Done for now. ${[!screen && "The screen: linkshell screen", !phone && "The phone: linkshell login, or linkshell pair"].filter(Boolean).join(" · ")}\n`);
17
93
  }
18
- export async function runSetup() {
19
- const existing = loadConfig();
20
- const rl = readline.createInterface({
21
- input: process.stdin,
22
- output: process.stdout,
23
- });
24
- process.stdout.write("\n LinkShell Setup\n\n");
25
- process.stdout.write(" Tip: leave Gateway URL empty to use the built-in gateway (recommended for LAN use).\n\n");
26
- const gateway = await ask(rl, "Gateway URL (leave empty for built-in)", "");
27
- const command = await ask(rl, "Terminal command (the shell or CLI you want to bridge)", existing.command ?? defaultShell());
28
- const clientName = await ask(rl, "Client name", existing.clientName ?? hostname());
29
- const hostnameName = await ask(rl, "Hostname (display name for your machine)", existing.hostname ?? hostname());
30
- rl.close();
31
- const config = {
32
- gateway: gateway || undefined,
33
- provider: "custom",
34
- command: command || undefined,
35
- clientName,
36
- hostname: hostnameName || undefined,
37
- };
38
- saveConfig(config);
39
- process.stdout.write(`\n \x1b[32mConfig saved to ${getConfigPath()}\x1b[0m\n\n`);
40
- process.stdout.write(" Next steps:\n");
41
- process.stdout.write(" linkshell doctor — verify your setup\n");
42
- process.stdout.write(" linkshell start — start a bridge session\n\n");
94
+ /**
95
+ * The first start on a computer: the host has just been started by someone at
96
+ * a terminal, and nothing has ever been set up here. Rather than leave the
97
+ * rest for the day it is needed (by then nobody is at the computer), it is
98
+ * done now. Once: a second start says nothing.
99
+ */
100
+ export async function offerSetup(version) {
101
+ if (process.stdin.isTTY !== true || process.stdout.isTTY !== true || (await setupDone()))
102
+ return false;
103
+ await runSetup(version, "first-start");
104
+ return true;
43
105
  }
44
106
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGrE,SAAS,GAAG,CACV,EAAsB,EACtB,QAAgB,EAChB,YAAqB;IAErB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACjD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2FAA2F,CAC5F,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,wCAAwC,EAAE,EAAE,CAAC,CAAC;IAE5E,MAAM,OAAO,GAAG,MAAM,GAAG,CACvB,EAAE,EACF,wDAAwD,EACxD,QAAQ,CAAC,OAAO,IAAI,YAAY,EAAE,CACnC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,GAAG,CAC1B,EAAE,EACF,aAAa,EACb,QAAQ,CAAC,UAAU,IAAI,QAAQ,EAAE,CAClC,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,GAAG,CAC5B,EAAE,EACF,0CAA0C,EAC1C,QAAQ,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAChC,CAAC;IAEF,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,MAAM,MAAM,GAAoB;QAC9B,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,UAAU;QACV,QAAQ,EAAE,YAAY,IAAI,SAAS;KACpC,CAAC;IAEF,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+BAA+B,aAAa,EAAE,aAAa,CAC5D,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ const config = loadConfig();
45
45
  const program = new Command();
46
46
  program
47
47
  .name("linkshell")
48
- .description("Your coding agents and terminals, on your phone. Run `linkshell host --daemon`, then `linkshell pair` (or `linkshell login` for the official gateway).")
48
+ .description("Your coding agents and terminals, on your phone. Start with `linkshell setup`.")
49
49
  .version(pkg.version);
50
50
  // ── host (v2 session daemon) ────────────────────────────────────────
51
51
  const hostCmd = program
@@ -85,7 +85,10 @@ const hostCmd = program
85
85
  process.stderr.write(` Log: ${daemon.getLogFile("host")}\n`);
86
86
  process.stderr.write(` Status: linkshell host status\n`);
87
87
  process.stderr.write(` Stop: linkshell host stop\n`);
88
- // The screen needs setting up once, at the computer: said here, where someone is.
88
+ // The first start here: the rest of the setup happens now, while someone is at the computer.
89
+ const { offerSetup } = await import("./commands/setup.js");
90
+ if (await offerSetup(pkg.version))
91
+ process.exit(process.exitCode ?? 0);
89
92
  const { screenAccess, describeScreen, screenReady } = await import("./commands/screen.js");
90
93
  const screen = await screenAccess().catch(() => undefined);
91
94
  if (screen && (screen === "old" || !screenReady(screen)))
@@ -467,7 +470,7 @@ gatewayCmd
467
470
  // ── screen ──────────────────────────────────────────────────────────
468
471
  program
469
472
  .command("screen")
470
- .description("Set this computer up for watching and controlling its screen from the phone (permissions, ffmpeg)")
473
+ .description("Set this computer up for watching and controlling its screen from the phone (the two macOS permissions; on Linux, ffmpeg)")
471
474
  .option("--check", "Only say what is and isn't ready")
472
475
  .action(async (options) => {
473
476
  const { runScreenSetup } = await import("./commands/screen.js");
@@ -524,9 +527,10 @@ program
524
527
  });
525
528
  program
526
529
  .command("setup")
527
- .description("Configure the v1 bridge (`linkshell start`)")
530
+ .description("Set this computer up, once: the host, the screen's permissions, and your phone")
528
531
  .action(async () => {
529
- await runSetup();
532
+ await runSetup(pkg.version);
533
+ process.exit(process.exitCode ?? 0);
530
534
  });
531
535
  program
532
536
  .command("upgrade")
@@ -617,6 +621,14 @@ program
617
621
  }
618
622
  process.stderr.write(" Connect: linkshell start --gateway <url>\n\n");
619
623
  });
624
+ // `linkshell` by itself, on a computer where nothing has been set up yet: the setup, rather than a page of help.
625
+ program.action(async () => {
626
+ const { setupDone } = await import("./commands/setup.js");
627
+ if (process.stdin.isTTY !== true || process.stdout.isTTY !== true || (await setupDone()))
628
+ return program.help();
629
+ await runSetup(pkg.version);
630
+ process.exit(process.exitCode ?? 0);
631
+ });
620
632
  program.parseAsync(process.argv).catch((error) => {
621
633
  const message = error instanceof Error ? error.message : String(error);
622
634
  process.stderr.write(`${message}\n`);