linkshell-cli 0.10.74 → 0.10.76
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/cli/src/commands/desktop-workspace.js +62 -9
- package/dist/cli/src/commands/desktop-workspace.js.map +1 -1
- package/dist/cli/src/commands/desktop.d.ts +90 -74
- package/dist/cli/src/commands/desktop.js +87 -1
- package/dist/cli/src/commands/desktop.js.map +1 -1
- package/dist/cli/src/commands/login-error.d.ts +9 -0
- package/dist/cli/src/commands/login-error.js +14 -0
- package/dist/cli/src/commands/login-error.js.map +1 -0
- package/dist/cli/src/commands/login.d.ts +2 -7
- package/dist/cli/src/commands/login.js +23 -52
- package/dist/cli/src/commands/login.js.map +1 -1
- package/dist/cli/src/commands/sign-in.d.ts +77 -0
- package/dist/cli/src/commands/sign-in.js +390 -0
- package/dist/cli/src/commands/sign-in.js.map +1 -0
- package/dist/cli/src/index.js +2 -1
- package/dist/cli/src/index.js.map +1 -1
- package/dist/cli/tsconfig.tsbuildinfo +1 -1
- package/dist/client-core/src/account-errors.d.ts +17 -0
- package/dist/client-core/src/account-errors.js +82 -0
- package/dist/client-core/src/account-errors.js.map +1 -0
- package/dist/host/src/acp-settings.js +1 -1
- package/dist/host/src/acp-settings.js.map +1 -1
- package/dist/host/src/computer-preview.d.ts +1 -9
- package/dist/host/src/drivers/acp/antigravity.d.ts +13 -0
- package/dist/host/src/drivers/acp/antigravity.js +13 -0
- package/dist/host/src/drivers/acp/antigravity.js.map +1 -1
- package/dist/host/src/drivers/acp/driver.d.ts +14 -1
- package/dist/host/src/drivers/acp/driver.js +45 -3
- package/dist/host/src/drivers/acp/driver.js.map +1 -1
- package/dist/host/src/drivers/acp/mapper.d.ts +2 -0
- package/dist/host/src/drivers/acp/mapper.js +6 -1
- package/dist/host/src/drivers/acp/mapper.js.map +1 -1
- package/dist/host/src/drivers/acp/questions.js +2 -2
- package/dist/host/src/drivers/acp/questions.js.map +1 -1
- package/dist/host/src/drivers/claude/app-sessions.d.ts +58 -0
- package/dist/host/src/drivers/claude/app-sessions.js +183 -0
- package/dist/host/src/drivers/claude/app-sessions.js.map +1 -0
- package/dist/host/src/drivers/claude/driver.d.ts +22 -1
- package/dist/host/src/drivers/claude/driver.js +99 -11
- package/dist/host/src/drivers/claude/driver.js.map +1 -1
- package/dist/host/src/drivers/claude/holders.d.ts +3 -1
- package/dist/host/src/drivers/claude/holders.js +4 -0
- package/dist/host/src/drivers/claude/holders.js.map +1 -1
- package/dist/host/src/drivers/claude/routing.d.ts +19 -0
- package/dist/host/src/drivers/claude/routing.js +145 -0
- package/dist/host/src/drivers/claude/routing.js.map +1 -0
- package/dist/host/src/drivers/claude/tasks.d.ts +2 -2
- package/dist/host/src/drivers/claude/transcript.d.ts +389 -344
- package/dist/host/src/drivers/claude/transcript.js +97 -22
- package/dist/host/src/drivers/claude/transcript.js.map +1 -1
- package/dist/host/src/drivers/codex/driver.d.ts +15 -0
- package/dist/host/src/drivers/codex/driver.js +47 -9
- package/dist/host/src/drivers/codex/driver.js.map +1 -1
- package/dist/host/src/drivers/codex/mapper.d.ts +41 -7
- package/dist/host/src/drivers/codex/mapper.js +167 -26
- package/dist/host/src/drivers/codex/mapper.js.map +1 -1
- package/dist/host/src/drivers/codex/mcp-apps.d.ts +69 -0
- package/dist/host/src/drivers/codex/mcp-apps.js +340 -0
- package/dist/host/src/drivers/codex/mcp-apps.js.map +1 -0
- package/dist/host/src/drivers/codex/settings.d.ts +13 -0
- package/dist/host/src/drivers/codex/settings.js +22 -6
- package/dist/host/src/drivers/codex/settings.js.map +1 -1
- package/dist/host/src/drivers/types.d.ts +50 -1
- package/dist/host/src/fs.d.ts +9 -9
- package/dist/host/src/hub.d.ts +120 -83
- package/dist/host/src/hub.js +157 -13
- package/dist/host/src/hub.js.map +1 -1
- package/dist/host/src/input.d.ts +43 -89
- package/dist/host/src/input.js +1 -1
- package/dist/host/src/input.js.map +1 -1
- package/dist/host/src/rpc/mcp.d.ts +8 -0
- package/dist/host/src/rpc/mcp.js +33 -0
- package/dist/host/src/rpc/mcp.js.map +1 -0
- package/dist/host/src/rpc/server.js +16 -2
- package/dist/host/src/rpc/server.js.map +1 -1
- package/dist/host/src/screen-session.d.ts +3 -17
- package/dist/host/src/screen-session.js +2 -2
- package/dist/host/src/screen-session.js.map +1 -1
- package/dist/host/src/store.d.ts +7 -0
- package/dist/host/src/store.js +27 -3
- package/dist/host/src/store.js.map +1 -1
- package/dist/host/src/terminals.d.ts +12 -6
- package/dist/host/src/terminals.js +29 -2
- package/dist/host/src/terminals.js.map +1 -1
- package/dist/host/src/usage.d.ts +5 -0
- package/dist/host/src/usage.js +10 -2
- package/dist/host/src/usage.js.map +1 -1
- package/dist/wire/src/acp.d.ts +68 -430
- package/dist/wire/src/acp.js +5 -5
- package/dist/wire/src/acp.js.map +1 -1
- package/dist/wire/src/async-questions.d.ts +2 -10
- package/dist/wire/src/computer-preview.d.ts +1 -15
- package/dist/wire/src/computer-preview.js +1 -1
- package/dist/wire/src/computer-preview.js.map +1 -1
- package/dist/wire/src/content.d.ts +205 -370
- package/dist/wire/src/content.js +4 -4
- package/dist/wire/src/content.js.map +1 -1
- package/dist/wire/src/editor.d.ts +48 -592
- package/dist/wire/src/envelopes.d.ts +53 -0
- package/dist/wire/src/envelopes.js +263 -0
- package/dist/wire/src/envelopes.js.map +1 -0
- package/dist/wire/src/goal.d.ts +15 -48
- package/dist/wire/src/index.d.ts +2 -0
- package/dist/wire/src/index.js +2 -0
- package/dist/wire/src/index.js.map +1 -1
- package/dist/wire/src/live-activity.d.ts +83 -212
- package/dist/wire/src/live-activity.js +1 -1
- package/dist/wire/src/live-activity.js.map +1 -1
- package/dist/wire/src/model.d.ts +454 -2277
- package/dist/wire/src/model.js +24 -0
- package/dist/wire/src/model.js.map +1 -1
- package/dist/wire/src/relay.d.ts +41 -267
- package/dist/wire/src/relay.js +1 -1
- package/dist/wire/src/relay.js.map +1 -1
- package/dist/wire/src/rpc-mcp.d.ts +84 -0
- package/dist/wire/src/rpc-mcp.js +78 -0
- package/dist/wire/src/rpc-mcp.js.map +1 -0
- package/dist/wire/src/rpc.d.ts +6747 -30929
- package/dist/wire/src/rpc.js +35 -7
- package/dist/wire/src/rpc.js.map +1 -1
- package/dist/wire/src/side.d.ts +13 -61
- package/dist/wire/src/updates.d.ts +1743 -6652
- package/dist/wire/src/updates.js +14 -1
- package/dist/wire/src/updates.js.map +1 -1
- package/dist/wire/src/usage.d.ts +17 -195
- package/dist/wire/src/watch.d.ts +223 -1141
- package/dist/wire/src/workflow.d.ts +46 -139
- package/package.json +4 -4
- package/src/commands/desktop-workspace.ts +69 -11
- package/src/commands/desktop.ts +71 -1
- package/src/commands/login-error.ts +12 -0
- package/src/commands/login.ts +13 -62
- package/src/commands/sign-in.ts +408 -0
- package/src/index.ts +2 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { loadAuth } from "../auth.js";
|
|
2
2
|
import { runLogin } from "./login.js";
|
|
3
|
+
import { loginWithOAuth, loginWithPassword, openInBrowser, OAUTH_PROVIDERS } from "./sign-in.js";
|
|
3
4
|
import { runLogout } from "./logout.js";
|
|
4
5
|
import { followAccountGateway, joinGatewayAfterLogin, readHostConfig, writeHostConfig, refreshGateway } from "./host.js";
|
|
5
6
|
import { execFile, spawn } from "node:child_process";
|
|
@@ -42,6 +43,45 @@ export async function desktopSnapshot(version) {
|
|
|
42
43
|
return result ? { ...base, status: "running", ...result } : { ...base, status: readPid("host") ? "unreachable" : "stopped" };
|
|
43
44
|
}
|
|
44
45
|
/** The new password, as JSON on stdin (never on the command line, where `ps` shows it). */
|
|
46
|
+
/**
|
|
47
|
+
* The gateway the window chose: `off`, or the address of one's own (ws, wss, http or https; the
|
|
48
|
+
* host speaks WebSocket to either). The official one is `connect-gateway`.
|
|
49
|
+
*/
|
|
50
|
+
export function gatewayChoice(raw) {
|
|
51
|
+
if (raw === "off")
|
|
52
|
+
return "off";
|
|
53
|
+
if (typeof raw !== "string" || !raw.trim() || raw.length > 2048)
|
|
54
|
+
throw new Error("请输入网关地址");
|
|
55
|
+
let url;
|
|
56
|
+
try {
|
|
57
|
+
url = new URL(raw.trim());
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
throw new Error("网关地址格式不正确,例如 wss://gateway.example.com");
|
|
61
|
+
}
|
|
62
|
+
if (!["ws:", "wss:", "http:", "https:"].includes(url.protocol) || !url.hostname)
|
|
63
|
+
throw new Error("网关地址需要以 wss://、ws://、https:// 或 http:// 开头");
|
|
64
|
+
if (url.username || url.password)
|
|
65
|
+
throw new Error("网关地址里不能带用户名或密码");
|
|
66
|
+
return url.toString().replace(/\/+$/, "");
|
|
67
|
+
}
|
|
68
|
+
async function jsonInput(input) {
|
|
69
|
+
const chunks = [];
|
|
70
|
+
let length = 0;
|
|
71
|
+
for await (const chunk of input) {
|
|
72
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
73
|
+
length += buffer.length;
|
|
74
|
+
if (length > 8192)
|
|
75
|
+
throw new Error("输入过长");
|
|
76
|
+
chunks.push(buffer);
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
return JSON.parse(Buffer.concat(chunks).toString("utf8")) ?? {};
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return {};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
45
85
|
async function passwordInput(input) {
|
|
46
86
|
const chunks = [];
|
|
47
87
|
let length = 0;
|
|
@@ -61,6 +101,26 @@ async function passwordInput(input) {
|
|
|
61
101
|
throw new Error("密码需要 4 到 128 位");
|
|
62
102
|
return password;
|
|
63
103
|
}
|
|
104
|
+
/** Email and password, as JSON on stdin like the access password: never on the command line. */
|
|
105
|
+
async function credentialsInput(input) {
|
|
106
|
+
const chunks = [];
|
|
107
|
+
let length = 0;
|
|
108
|
+
for await (const chunk of input) {
|
|
109
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
110
|
+
length += buffer.length;
|
|
111
|
+
if (length > 4096)
|
|
112
|
+
throw new Error("登录信息过长,请检查邮箱和密码");
|
|
113
|
+
chunks.push(buffer);
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const value = JSON.parse(Buffer.concat(chunks).toString("utf8"));
|
|
117
|
+
if (typeof value?.email === "string" && typeof value?.password === "string" && value.email.trim() && value.password) {
|
|
118
|
+
return { email: value.email, password: value.password };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch { /* Never echo an input that contains a password. */ }
|
|
122
|
+
throw new Error("请输入邮箱和密码。");
|
|
123
|
+
}
|
|
64
124
|
async function redemptionInput(input) {
|
|
65
125
|
const chunks = [];
|
|
66
126
|
let length = 0;
|
|
@@ -79,7 +139,7 @@ async function redemptionInput(input) {
|
|
|
79
139
|
catch { /* Never echo an input that contains the activation code. */ }
|
|
80
140
|
throw new Error("激活码请求无效,请刷新账号后重试");
|
|
81
141
|
}
|
|
82
|
-
export async function runDesktop(version, action, input = process.stdin) {
|
|
142
|
+
export async function runDesktop(version, action, input = process.stdin, options = {}) {
|
|
83
143
|
silenceSqliteWarning();
|
|
84
144
|
try {
|
|
85
145
|
if (action === "redeem-pro") {
|
|
@@ -148,6 +208,24 @@ export async function runDesktop(version, action, input = process.stdin) {
|
|
|
148
208
|
throw new Error("登录未完成或已超时,请重试。");
|
|
149
209
|
await joinGatewayAfterLogin(result.plan);
|
|
150
210
|
}
|
|
211
|
+
else if (action === "login-password") {
|
|
212
|
+
const result = await loginWithPassword(await credentialsInput(input));
|
|
213
|
+
await joinGatewayAfterLogin(result.plan);
|
|
214
|
+
}
|
|
215
|
+
else if (action === "login-oauth") {
|
|
216
|
+
const provider = options.provider;
|
|
217
|
+
if (!OAUTH_PROVIDERS.includes(provider))
|
|
218
|
+
throw new Error("不支持的登录方式");
|
|
219
|
+
const result = await loginWithOAuth({
|
|
220
|
+
provider,
|
|
221
|
+
// A line before the result: the window shows the link to reopen or copy while it waits.
|
|
222
|
+
open: (url) => {
|
|
223
|
+
process.stdout.write(`${JSON.stringify({ event: "authorize", provider, url })}\n`);
|
|
224
|
+
openInBrowser(url);
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
await joinGatewayAfterLogin(result.plan);
|
|
228
|
+
}
|
|
151
229
|
else if (action === "logout")
|
|
152
230
|
await runLogout();
|
|
153
231
|
else if (action === "connect-gateway") {
|
|
@@ -161,6 +239,14 @@ export async function runDesktop(version, action, input = process.stdin) {
|
|
|
161
239
|
await ensureHostRunning();
|
|
162
240
|
await refreshGateway(15_000);
|
|
163
241
|
}
|
|
242
|
+
else if (action === "set-gateway") {
|
|
243
|
+
if (process.env.LINKSHELL_GATEWAY)
|
|
244
|
+
throw new Error("网关由启动环境指定,请移除 LINKSHELL_GATEWAY 后重新打开 App。");
|
|
245
|
+
const gateway = gatewayChoice((await jsonInput(input)).gateway);
|
|
246
|
+
writeHostConfig(linkshellDir(), { ...readHostConfig(linkshellDir()), gateway });
|
|
247
|
+
await ensureHostRunning();
|
|
248
|
+
await refreshGateway(15_000);
|
|
249
|
+
}
|
|
164
250
|
else if (action === "set-password")
|
|
165
251
|
await applyAccessPassword(await passwordInput(input));
|
|
166
252
|
else if (action === "remove-password")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../../../src/commands/desktop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../../../src/commands/desktop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type AccountErrorCode } from "../../../client-core/src/account-errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* A sign-in that did not finish, with a message the desktop can show as is. Kept apart from the
|
|
4
|
+
* sign-in code so callers (and their tests) can recognise one without loading the network code.
|
|
5
|
+
*/
|
|
6
|
+
export declare class LoginError extends Error {
|
|
7
|
+
readonly code: AccountErrorCode;
|
|
8
|
+
constructor(code: AccountErrorCode);
|
|
9
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { accountErrorMessage } from "../../../client-core/src/account-errors.js";
|
|
2
|
+
/**
|
|
3
|
+
* A sign-in that did not finish, with a message the desktop can show as is. Kept apart from the
|
|
4
|
+
* sign-in code so callers (and their tests) can recognise one without loading the network code.
|
|
5
|
+
*/
|
|
6
|
+
export class LoginError extends Error {
|
|
7
|
+
code;
|
|
8
|
+
constructor(code) {
|
|
9
|
+
super(accountErrorMessage(code));
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.name = "LoginError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=login-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login-error.js","sourceRoot":"","sources":["../../../../src/commands/login-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAyB,MAAM,4CAA4C,CAAC;AAExG;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACd;IAArB,YAAqB,IAAsB;QACzC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;QADd,SAAI,GAAJ,IAAI,CAAkB;QAEzC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type LoginResult } from "./sign-in.js";
|
|
2
|
+
export type { LoginResult } from "./sign-in.js";
|
|
1
3
|
/**
|
|
2
4
|
* CLI login via iTool OAuth flow.
|
|
3
5
|
*
|
|
@@ -7,13 +9,6 @@
|
|
|
7
9
|
* 4. iTool redirects back to localhost with Supabase tokens
|
|
8
10
|
* 5. Save tokens to ~/.linkshell/auth.json
|
|
9
11
|
*/
|
|
10
|
-
export interface LoginResult {
|
|
11
|
-
success: boolean;
|
|
12
|
-
plan: "pro" | "free";
|
|
13
|
-
email: string;
|
|
14
|
-
userId: string;
|
|
15
|
-
accessToken: string;
|
|
16
|
-
}
|
|
17
12
|
export declare function runLogin(options?: {
|
|
18
13
|
signal?: AbortSignal;
|
|
19
14
|
}): Promise<LoginResult | null>;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import * as http from "node:http";
|
|
2
2
|
import { execFileSync } from "node:child_process";
|
|
3
|
-
import {
|
|
4
|
-
import { cacheMembership } from "../pro-membership.js";
|
|
5
|
-
import { fetchProMembership } from "../../../client-core/src/pro-membership.js";
|
|
3
|
+
import { completeLogin } from "./sign-in.js";
|
|
6
4
|
const ITOOL_AUTH_URL = "https://itool.tech/en/auth/linkshell";
|
|
7
5
|
// Served from the CLI's loopback server, so it has to carry its own styles and
|
|
8
6
|
// copy: it can't load anything from itool.tech.
|
|
@@ -92,6 +90,15 @@ const CALLBACK_PAGE = `<!DOCTYPE html>
|
|
|
92
90
|
</script>
|
|
93
91
|
</body>
|
|
94
92
|
</html>`;
|
|
93
|
+
/**
|
|
94
|
+
* CLI login via iTool OAuth flow.
|
|
95
|
+
*
|
|
96
|
+
* 1. Start a temporary local HTTP server to receive the callback
|
|
97
|
+
* 2. Open browser to iTool's LinkShell auth page
|
|
98
|
+
* 3. User logs in/registers on iTool
|
|
99
|
+
* 4. iTool redirects back to localhost with Supabase tokens
|
|
100
|
+
* 5. Save tokens to ~/.linkshell/auth.json
|
|
101
|
+
*/
|
|
95
102
|
export async function runLogin(options = {}) {
|
|
96
103
|
if (options.signal?.aborted)
|
|
97
104
|
return null;
|
|
@@ -100,10 +107,13 @@ export async function runLogin(options = {}) {
|
|
|
100
107
|
let timeout;
|
|
101
108
|
let completion;
|
|
102
109
|
let finished = false;
|
|
110
|
+
// Ends an account check still in flight, so a login that timed out or was cancelled never saves.
|
|
111
|
+
const stopped = new AbortController();
|
|
103
112
|
const finish = (result) => {
|
|
104
113
|
if (finished)
|
|
105
114
|
return;
|
|
106
115
|
finished = true;
|
|
116
|
+
stopped.abort();
|
|
107
117
|
clearTimeout(timeout);
|
|
108
118
|
clearTimeout(completion);
|
|
109
119
|
options.signal?.removeEventListener("abort", abort);
|
|
@@ -133,65 +143,26 @@ export async function runLogin(options = {}) {
|
|
|
133
143
|
res.end("Missing tokens");
|
|
134
144
|
return;
|
|
135
145
|
}
|
|
136
|
-
|
|
137
|
-
let userId = "";
|
|
138
|
-
let email = "";
|
|
139
|
-
let plan = "free";
|
|
140
|
-
let membership = { plan: "unknown", planExpiresAt: null };
|
|
146
|
+
let result;
|
|
141
147
|
try {
|
|
142
|
-
|
|
143
|
-
headers: {
|
|
144
|
-
Authorization: `Bearer ${accessToken}`,
|
|
145
|
-
apikey: SUPABASE_ANON_KEY,
|
|
146
|
-
},
|
|
147
|
-
signal: options.signal ? AbortSignal.any([options.signal, AbortSignal.timeout(10_000)]) : AbortSignal.timeout(10_000),
|
|
148
|
-
});
|
|
149
|
-
if (userRes.ok) {
|
|
150
|
-
const user = (await userRes.json());
|
|
151
|
-
userId = user.id;
|
|
152
|
-
email = user.email ?? "";
|
|
153
|
-
const profile = await fetchProMembership({ userId, accessToken, supabaseUrl: SUPABASE_URL, anonKey: SUPABASE_ANON_KEY, signal: options.signal });
|
|
154
|
-
plan = profile.plan;
|
|
155
|
-
membership = { plan: profile.plan, planExpiresAt: profile.expiresAt ?? null };
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
catch { }
|
|
159
|
-
if (finished || options.signal?.aborted) {
|
|
160
|
-
res.destroy();
|
|
161
|
-
return;
|
|
148
|
+
result = await completeLogin({ accessToken, refreshToken, expiresIn }, { signal: stopped.signal });
|
|
162
149
|
}
|
|
163
|
-
|
|
150
|
+
catch {
|
|
151
|
+
if (finished || options.signal?.aborted) {
|
|
152
|
+
res.destroy();
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
164
155
|
res.writeHead(401);
|
|
165
156
|
res.end("无法验证账号,请重新登录。");
|
|
166
157
|
return;
|
|
167
158
|
}
|
|
168
|
-
const tokens = {
|
|
169
|
-
accessToken,
|
|
170
|
-
refreshToken,
|
|
171
|
-
expiresAt: Date.now() + (Number.isFinite(expiresIn) && expiresIn > 0 ? expiresIn : 3600) * 1000,
|
|
172
|
-
userId,
|
|
173
|
-
email,
|
|
174
|
-
};
|
|
175
|
-
saveAuth(tokens);
|
|
176
|
-
try {
|
|
177
|
-
cacheMembership(userId, membership);
|
|
178
|
-
}
|
|
179
|
-
catch { /* A cache write cannot invalidate a completed login. */ }
|
|
180
159
|
res.writeHead(200);
|
|
181
160
|
res.end("ok");
|
|
182
|
-
const planLabel = plan === "pro" ? "\x1b[32mPro\x1b[0m" : "Free";
|
|
183
|
-
process.stderr.write(` \x1b[32m✓\x1b[0m Logged in as ${email || userId} (${planLabel})\n\n`);
|
|
161
|
+
const planLabel = result.plan === "pro" ? "\x1b[32mPro\x1b[0m" : "Free";
|
|
162
|
+
process.stderr.write(` \x1b[32m✓\x1b[0m Logged in as ${result.email || result.userId} (${planLabel})\n\n`);
|
|
184
163
|
// Left pending, the five-minute limit would keep the command alive long after the login.
|
|
185
164
|
clearTimeout(timeout);
|
|
186
|
-
completion = setTimeout(() =>
|
|
187
|
-
finish({
|
|
188
|
-
success: true,
|
|
189
|
-
plan: plan,
|
|
190
|
-
email,
|
|
191
|
-
userId,
|
|
192
|
-
accessToken,
|
|
193
|
-
});
|
|
194
|
-
}, 500);
|
|
165
|
+
completion = setTimeout(() => finish(result), 500);
|
|
195
166
|
return;
|
|
196
167
|
}
|
|
197
168
|
res.writeHead(404);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signing in without iTool's authorization page: email and password, or GitHub / Google through
|
|
3
|
+
* the system browser. Every way ends in `completeLogin`, which writes `~/.linkshell/auth.json`
|
|
4
|
+
* (the Host, the CLI and the desktop all read that one file); nothing here hands a refresh
|
|
5
|
+
* token to a browser or a renderer.
|
|
6
|
+
*/
|
|
7
|
+
export interface LoginResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
plan: "pro" | "free";
|
|
10
|
+
email: string;
|
|
11
|
+
userId: string;
|
|
12
|
+
accessToken: string;
|
|
13
|
+
}
|
|
14
|
+
/** A Supabase session, as `/auth/v1/token` (and itool.tech's proxy of it) returns it. */
|
|
15
|
+
export interface SessionGrant {
|
|
16
|
+
accessToken: string;
|
|
17
|
+
refreshToken: string;
|
|
18
|
+
/** Seconds. */
|
|
19
|
+
expiresIn: number;
|
|
20
|
+
/** Present for the password and PKCE grants; the authorization page's tokens come without it. */
|
|
21
|
+
user?: {
|
|
22
|
+
id: string;
|
|
23
|
+
email?: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export type OAuthProvider = "github" | "google";
|
|
27
|
+
export declare const OAUTH_PROVIDERS: readonly OAuthProvider[];
|
|
28
|
+
export declare const AUTH_PROXY_URL = "https://itool.tech/api/linkshell/auth";
|
|
29
|
+
export declare const OAUTH_CALLBACK_PATH = "/linkshell/callback";
|
|
30
|
+
export declare const OAUTH_TIMEOUT_MS: number;
|
|
31
|
+
type Grant = {
|
|
32
|
+
grant_type: "password";
|
|
33
|
+
email: string;
|
|
34
|
+
password: string;
|
|
35
|
+
} | {
|
|
36
|
+
grant_type: "pkce";
|
|
37
|
+
auth_code: string;
|
|
38
|
+
code_verifier: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* What every sign-in does once it holds a session: learn whose it is, save it, and note the
|
|
42
|
+
* plan. A membership lookup that fails leaves the plan unknown rather than failing the login;
|
|
43
|
+
* the desktop asks again on its next account refresh.
|
|
44
|
+
*/
|
|
45
|
+
export declare function completeLogin(grant: SessionGrant, options?: {
|
|
46
|
+
signal?: AbortSignal;
|
|
47
|
+
}): Promise<LoginResult>;
|
|
48
|
+
/** Proxy first, then Supabase directly, unless the proxy refused outright. */
|
|
49
|
+
export declare function exchangeGrant(grant: Grant, signal?: AbortSignal): Promise<SessionGrant>;
|
|
50
|
+
export declare function loginWithPassword(options: {
|
|
51
|
+
email: string;
|
|
52
|
+
password: string;
|
|
53
|
+
signal?: AbortSignal;
|
|
54
|
+
}): Promise<LoginResult>;
|
|
55
|
+
/** RFC 7636 S256. */
|
|
56
|
+
export declare function pkceChallenge(verifier: string): string;
|
|
57
|
+
/** 32 random bytes: a 43-character verifier, the RFC's recommendation. */
|
|
58
|
+
export declare function pkcePair(): {
|
|
59
|
+
verifier: string;
|
|
60
|
+
challenge: string;
|
|
61
|
+
};
|
|
62
|
+
export declare function authorizeURL(provider: OAuthProvider, redirectTo: string, challenge: string): string;
|
|
63
|
+
export declare function openInBrowser(url: string): void;
|
|
64
|
+
export interface OAuthLoginOptions {
|
|
65
|
+
provider: OAuthProvider;
|
|
66
|
+
signal?: AbortSignal;
|
|
67
|
+
/** Opens the authorize URL; the system browser by default. Also how a UI learns the URL to copy. */
|
|
68
|
+
open?: (url: string) => void | Promise<void>;
|
|
69
|
+
timeoutMs?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* GitHub / Google sign-in. The browser comes back to `http://127.0.0.1:<port>/linkshell/callback`
|
|
73
|
+
* with a one-time code; the code is worthless without the PKCE verifier, which never leaves this
|
|
74
|
+
* process, so a page or app that sees the redirect gets nothing it can use.
|
|
75
|
+
*/
|
|
76
|
+
export declare function loginWithOAuth(options: OAuthLoginOptions): Promise<LoginResult>;
|
|
77
|
+
export {};
|