@convext/cli 0.3.0 → 0.3.2
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.js +16 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/login.d.ts +13 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +425 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -11,6 +11,7 @@ const sync_js_1 = require("./commands/sync.js");
|
|
|
11
11
|
const check_js_1 = require("./commands/check.js");
|
|
12
12
|
const init_js_1 = require("./commands/init.js");
|
|
13
13
|
const mcp_js_1 = require("./commands/mcp.js");
|
|
14
|
+
const login_js_1 = require("./commands/login.js");
|
|
14
15
|
const versionCheck_js_1 = require("./utils/versionCheck.js");
|
|
15
16
|
// Show server URL first for every command
|
|
16
17
|
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
@@ -135,6 +136,21 @@ program
|
|
|
135
136
|
});
|
|
136
137
|
}
|
|
137
138
|
});
|
|
139
|
+
// Login command - OAuth authentication
|
|
140
|
+
program
|
|
141
|
+
.command("login")
|
|
142
|
+
.description("Log in to Convext using OAuth")
|
|
143
|
+
.option("-d, --device", "Force device authorization flow (for headless environments)")
|
|
144
|
+
.action(async (options) => {
|
|
145
|
+
await (0, login_js_1.loginCommand)({ device: options.device });
|
|
146
|
+
});
|
|
147
|
+
// Logout command - clear credentials
|
|
148
|
+
program
|
|
149
|
+
.command("logout")
|
|
150
|
+
.description("Log out and clear stored credentials")
|
|
151
|
+
.action(async () => {
|
|
152
|
+
await (0, login_js_1.logoutCommand)();
|
|
153
|
+
});
|
|
138
154
|
// Auth status command
|
|
139
155
|
program
|
|
140
156
|
.command("whoami")
|
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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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface LoginOptions {
|
|
2
|
+
device?: boolean;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Main login command
|
|
6
|
+
*/
|
|
7
|
+
export declare function loginCommand(options?: LoginOptions): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Logout command - clear stored credentials
|
|
10
|
+
*/
|
|
11
|
+
export declare function logoutCommand(): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AA+BA,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAoaD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C5E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAanD"}
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loginCommand = loginCommand;
|
|
7
|
+
exports.logoutCommand = logoutCommand;
|
|
8
|
+
const node_http_1 = require("node:http");
|
|
9
|
+
const node_crypto_1 = require("node:crypto");
|
|
10
|
+
const node_os_1 = require("node:os");
|
|
11
|
+
const node_child_process_1 = require("node:child_process");
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
const ora_1 = __importDefault(require("ora"));
|
|
14
|
+
const config_js_1 = require("../config.js");
|
|
15
|
+
// OAuth configuration
|
|
16
|
+
const OAUTH_CLIENT_ID = process.env.CONVEXT_OAUTH_CLIENT_ID || "convext-cli";
|
|
17
|
+
const CALLBACK_PORT = 9876;
|
|
18
|
+
const CALLBACK_PATH = "/callback";
|
|
19
|
+
/**
|
|
20
|
+
* Generate PKCE code verifier and challenge
|
|
21
|
+
*/
|
|
22
|
+
function generatePKCE() {
|
|
23
|
+
const verifier = (0, node_crypto_1.randomBytes)(32).toString("base64url");
|
|
24
|
+
const challenge = (0, node_crypto_1.createHash)("sha256").update(verifier).digest("base64url");
|
|
25
|
+
return { verifier, challenge };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generate random state for CSRF protection
|
|
29
|
+
*/
|
|
30
|
+
function generateState() {
|
|
31
|
+
return (0, node_crypto_1.randomBytes)(16).toString("hex");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if we can open a browser
|
|
35
|
+
*/
|
|
36
|
+
function canOpenBrowser() {
|
|
37
|
+
// Check for SSH session
|
|
38
|
+
if (process.env.SSH_CLIENT || process.env.SSH_TTY) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
// Check for display on Linux
|
|
42
|
+
if ((0, node_os_1.platform)() === "linux" && !process.env.DISPLAY && !process.env.WAYLAND_DISPLAY) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
// Check if running in CI
|
|
46
|
+
if (process.env.CI) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// Check if TTY is available
|
|
50
|
+
if (!process.stdin.isTTY) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Open URL in default browser
|
|
57
|
+
*/
|
|
58
|
+
function openBrowser(url) {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
let command;
|
|
61
|
+
switch ((0, node_os_1.platform)()) {
|
|
62
|
+
case "darwin":
|
|
63
|
+
command = `open "${url}"`;
|
|
64
|
+
break;
|
|
65
|
+
case "win32":
|
|
66
|
+
command = `start "" "${url}"`;
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
command = `xdg-open "${url}"`;
|
|
70
|
+
}
|
|
71
|
+
(0, node_child_process_1.exec)(command, (error) => {
|
|
72
|
+
if (error) {
|
|
73
|
+
reject(error);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
resolve();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Start local HTTP server to receive OAuth callback
|
|
83
|
+
*/
|
|
84
|
+
function startCallbackServer(expectedState, codeVerifier) {
|
|
85
|
+
return new Promise((resolve, reject) => {
|
|
86
|
+
const server = (0, node_http_1.createServer)(async (req, res) => {
|
|
87
|
+
const url = new URL(req.url || "/", `http://localhost:${CALLBACK_PORT}`);
|
|
88
|
+
if (url.pathname !== CALLBACK_PATH) {
|
|
89
|
+
res.writeHead(404);
|
|
90
|
+
res.end("Not found");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const code = url.searchParams.get("code");
|
|
94
|
+
const state = url.searchParams.get("state");
|
|
95
|
+
const error = url.searchParams.get("error");
|
|
96
|
+
const errorDescription = url.searchParams.get("error_description");
|
|
97
|
+
if (error) {
|
|
98
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
99
|
+
res.end(`
|
|
100
|
+
<html>
|
|
101
|
+
<body style="font-family: system-ui; padding: 40px; text-align: center;">
|
|
102
|
+
<h1 style="color: #dc2626;">Authentication Failed</h1>
|
|
103
|
+
<p>${errorDescription || error}</p>
|
|
104
|
+
<p>You can close this window.</p>
|
|
105
|
+
</body>
|
|
106
|
+
</html>
|
|
107
|
+
`);
|
|
108
|
+
server.close();
|
|
109
|
+
reject(new Error(errorDescription || error));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (state !== expectedState) {
|
|
113
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
114
|
+
res.end(`
|
|
115
|
+
<html>
|
|
116
|
+
<body style="font-family: system-ui; padding: 40px; text-align: center;">
|
|
117
|
+
<h1 style="color: #dc2626;">Authentication Failed</h1>
|
|
118
|
+
<p>Invalid state parameter. This may be a CSRF attack.</p>
|
|
119
|
+
<p>You can close this window.</p>
|
|
120
|
+
</body>
|
|
121
|
+
</html>
|
|
122
|
+
`);
|
|
123
|
+
server.close();
|
|
124
|
+
reject(new Error("Invalid state parameter"));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (!code) {
|
|
128
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
129
|
+
res.end(`
|
|
130
|
+
<html>
|
|
131
|
+
<body style="font-family: system-ui; padding: 40px; text-align: center;">
|
|
132
|
+
<h1 style="color: #dc2626;">Authentication Failed</h1>
|
|
133
|
+
<p>No authorization code received.</p>
|
|
134
|
+
<p>You can close this window.</p>
|
|
135
|
+
</body>
|
|
136
|
+
</html>
|
|
137
|
+
`);
|
|
138
|
+
server.close();
|
|
139
|
+
reject(new Error("No authorization code received"));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// Exchange code for tokens
|
|
143
|
+
try {
|
|
144
|
+
const tokenResponse = await exchangeCodeForTokens(code, codeVerifier);
|
|
145
|
+
res.writeHead(200, { "Content-Type": "text/html" });
|
|
146
|
+
res.end(`
|
|
147
|
+
<html>
|
|
148
|
+
<body style="font-family: system-ui; padding: 40px; text-align: center;">
|
|
149
|
+
<h1 style="color: #16a34a;">Authentication Successful!</h1>
|
|
150
|
+
<p>You can close this window and return to your terminal.</p>
|
|
151
|
+
</body>
|
|
152
|
+
</html>
|
|
153
|
+
`);
|
|
154
|
+
server.close();
|
|
155
|
+
resolve(tokenResponse);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
res.writeHead(500, { "Content-Type": "text/html" });
|
|
159
|
+
res.end(`
|
|
160
|
+
<html>
|
|
161
|
+
<body style="font-family: system-ui; padding: 40px; text-align: center;">
|
|
162
|
+
<h1 style="color: #dc2626;">Authentication Failed</h1>
|
|
163
|
+
<p>${err instanceof Error ? err.message : "Unknown error"}</p>
|
|
164
|
+
<p>You can close this window.</p>
|
|
165
|
+
</body>
|
|
166
|
+
</html>
|
|
167
|
+
`);
|
|
168
|
+
server.close();
|
|
169
|
+
reject(err);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
server.on("error", (err) => {
|
|
173
|
+
reject(err);
|
|
174
|
+
});
|
|
175
|
+
// Set timeout for callback
|
|
176
|
+
const timeout = setTimeout(() => {
|
|
177
|
+
server.close();
|
|
178
|
+
reject(new Error("Authentication timeout - no callback received within 5 minutes"));
|
|
179
|
+
}, 5 * 60 * 1000);
|
|
180
|
+
server.on("close", () => {
|
|
181
|
+
clearTimeout(timeout);
|
|
182
|
+
});
|
|
183
|
+
server.listen(CALLBACK_PORT, "127.0.0.1");
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Exchange authorization code for tokens
|
|
188
|
+
*/
|
|
189
|
+
async function exchangeCodeForTokens(code, codeVerifier) {
|
|
190
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
191
|
+
const redirectUri = `http://localhost:${CALLBACK_PORT}${CALLBACK_PATH}`;
|
|
192
|
+
const response = await fetch(`${apiUrl}/oauth/token`, {
|
|
193
|
+
method: "POST",
|
|
194
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
195
|
+
body: new URLSearchParams({
|
|
196
|
+
grant_type: "authorization_code",
|
|
197
|
+
client_id: OAUTH_CLIENT_ID,
|
|
198
|
+
code,
|
|
199
|
+
redirect_uri: redirectUri,
|
|
200
|
+
code_verifier: codeVerifier,
|
|
201
|
+
}),
|
|
202
|
+
});
|
|
203
|
+
if (!response.ok) {
|
|
204
|
+
const error = await response.json().catch(() => ({}));
|
|
205
|
+
throw new Error(error.error_description ||
|
|
206
|
+
error.error ||
|
|
207
|
+
`Token exchange failed: ${response.status}`);
|
|
208
|
+
}
|
|
209
|
+
return response.json();
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* PKCE OAuth flow - opens browser for authentication
|
|
213
|
+
*/
|
|
214
|
+
async function pkceFlow() {
|
|
215
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
216
|
+
const { verifier, challenge } = generatePKCE();
|
|
217
|
+
const state = generateState();
|
|
218
|
+
const redirectUri = `http://localhost:${CALLBACK_PORT}${CALLBACK_PATH}`;
|
|
219
|
+
const authUrl = new URL(`${apiUrl}/oauth/authorize`);
|
|
220
|
+
authUrl.searchParams.set("client_id", OAUTH_CLIENT_ID);
|
|
221
|
+
authUrl.searchParams.set("redirect_uri", redirectUri);
|
|
222
|
+
authUrl.searchParams.set("response_type", "code");
|
|
223
|
+
authUrl.searchParams.set("scope", "read write");
|
|
224
|
+
authUrl.searchParams.set("state", state);
|
|
225
|
+
authUrl.searchParams.set("code_challenge", challenge);
|
|
226
|
+
authUrl.searchParams.set("code_challenge_method", "S256");
|
|
227
|
+
// Start callback server first
|
|
228
|
+
const tokenPromise = startCallbackServer(state, verifier);
|
|
229
|
+
console.log(chalk_1.default.cyan("\nOpening browser for authentication...\n"));
|
|
230
|
+
try {
|
|
231
|
+
await openBrowser(authUrl.toString());
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
console.log(chalk_1.default.yellow("Could not open browser automatically."));
|
|
235
|
+
console.log(chalk_1.default.gray("Please open this URL manually:\n"));
|
|
236
|
+
console.log(chalk_1.default.cyan(authUrl.toString()));
|
|
237
|
+
console.log();
|
|
238
|
+
}
|
|
239
|
+
console.log(chalk_1.default.gray("Waiting for authentication...\n"));
|
|
240
|
+
return tokenPromise;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Request device code from server
|
|
244
|
+
*/
|
|
245
|
+
async function requestDeviceCode() {
|
|
246
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
247
|
+
const response = await fetch(`${apiUrl}/oauth/authorize_device`, {
|
|
248
|
+
method: "POST",
|
|
249
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
250
|
+
body: new URLSearchParams({
|
|
251
|
+
client_id: OAUTH_CLIENT_ID,
|
|
252
|
+
scope: "read write",
|
|
253
|
+
}),
|
|
254
|
+
});
|
|
255
|
+
if (!response.ok) {
|
|
256
|
+
const error = await response.json().catch(() => ({}));
|
|
257
|
+
throw new Error(error.error_description ||
|
|
258
|
+
error.error ||
|
|
259
|
+
`Device code request failed: ${response.status}`);
|
|
260
|
+
}
|
|
261
|
+
return response.json();
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Poll for device authorization completion
|
|
265
|
+
*/
|
|
266
|
+
async function pollForDeviceAuthorization(deviceCode, interval, expiresIn) {
|
|
267
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
268
|
+
const startTime = Date.now();
|
|
269
|
+
const expiresAt = startTime + expiresIn * 1000;
|
|
270
|
+
while (Date.now() < expiresAt) {
|
|
271
|
+
await new Promise((resolve) => setTimeout(resolve, interval * 1000));
|
|
272
|
+
const response = await fetch(`${apiUrl}/oauth/token`, {
|
|
273
|
+
method: "POST",
|
|
274
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
275
|
+
body: new URLSearchParams({
|
|
276
|
+
grant_type: "urn:ietf:params:oauth:grant-type:device_code",
|
|
277
|
+
client_id: OAUTH_CLIENT_ID,
|
|
278
|
+
device_code: deviceCode,
|
|
279
|
+
}),
|
|
280
|
+
});
|
|
281
|
+
if (response.ok) {
|
|
282
|
+
return response.json();
|
|
283
|
+
}
|
|
284
|
+
const error = (await response.json().catch(() => ({})));
|
|
285
|
+
if (error.error === "authorization_pending") {
|
|
286
|
+
// User hasn't authorized yet, keep polling
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
if (error.error === "slow_down") {
|
|
290
|
+
// Server wants us to slow down
|
|
291
|
+
interval += 5;
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
if (error.error === "expired_token") {
|
|
295
|
+
throw new Error("Device code expired. Please try again.");
|
|
296
|
+
}
|
|
297
|
+
if (error.error === "access_denied") {
|
|
298
|
+
throw new Error("Authorization was denied.");
|
|
299
|
+
}
|
|
300
|
+
throw new Error(error.error_description || error.error || "Authorization failed");
|
|
301
|
+
}
|
|
302
|
+
throw new Error("Device code expired. Please try again.");
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Device authorization flow - for headless environments
|
|
306
|
+
*/
|
|
307
|
+
async function deviceFlow() {
|
|
308
|
+
const spinner = (0, ora_1.default)("Requesting device code...").start();
|
|
309
|
+
let deviceCodeResponse;
|
|
310
|
+
try {
|
|
311
|
+
deviceCodeResponse = await requestDeviceCode();
|
|
312
|
+
spinner.stop();
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
spinner.fail("Failed to request device code");
|
|
316
|
+
throw error;
|
|
317
|
+
}
|
|
318
|
+
const { device_code, user_code, verification_uri, verification_uri_complete, interval, expires_in } = deviceCodeResponse;
|
|
319
|
+
console.log("\n" + chalk_1.default.bold("To authenticate, visit:"));
|
|
320
|
+
console.log(chalk_1.default.cyan(` ${verification_uri_complete || verification_uri}`));
|
|
321
|
+
console.log();
|
|
322
|
+
console.log(chalk_1.default.bold("And enter this code:"));
|
|
323
|
+
console.log(chalk_1.default.yellow.bold(` ${user_code}`));
|
|
324
|
+
console.log();
|
|
325
|
+
console.log(chalk_1.default.gray(`Code expires in ${Math.floor(expires_in / 60)} minutes\n`));
|
|
326
|
+
const pollSpinner = (0, ora_1.default)("Waiting for authorization...").start();
|
|
327
|
+
try {
|
|
328
|
+
const tokens = await pollForDeviceAuthorization(device_code, interval, expires_in);
|
|
329
|
+
pollSpinner.succeed("Authorized!");
|
|
330
|
+
return tokens;
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
pollSpinner.fail("Authorization failed");
|
|
334
|
+
throw error;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Save OAuth tokens to config
|
|
339
|
+
*/
|
|
340
|
+
function saveTokens(tokens) {
|
|
341
|
+
const expiresAt = new Date((tokens.created_at + tokens.expires_in) * 1000).toISOString();
|
|
342
|
+
(0, config_js_1.saveConfig)({
|
|
343
|
+
apiToken: tokens.access_token,
|
|
344
|
+
});
|
|
345
|
+
// Save additional OAuth data in separate credentials file
|
|
346
|
+
const config = (0, config_js_1.loadConfig)();
|
|
347
|
+
const credentialsPath = `${process.env.HOME}/.convext/credentials.json`;
|
|
348
|
+
const credentials = {
|
|
349
|
+
access_token: tokens.access_token,
|
|
350
|
+
refresh_token: tokens.refresh_token,
|
|
351
|
+
expires_at: expiresAt,
|
|
352
|
+
token_type: tokens.token_type,
|
|
353
|
+
scope: tokens.scope,
|
|
354
|
+
};
|
|
355
|
+
const { writeFileSync, mkdirSync, existsSync } = require("node:fs");
|
|
356
|
+
const { dirname } = require("node:path");
|
|
357
|
+
const dir = dirname(credentialsPath);
|
|
358
|
+
if (!existsSync(dir)) {
|
|
359
|
+
mkdirSync(dir, { recursive: true });
|
|
360
|
+
}
|
|
361
|
+
writeFileSync(credentialsPath, JSON.stringify(credentials, null, 2), { mode: 0o600 });
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Main login command
|
|
365
|
+
*/
|
|
366
|
+
async function loginCommand(options = {}) {
|
|
367
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
368
|
+
// Check if already logged in
|
|
369
|
+
const config = (0, config_js_1.loadConfig)();
|
|
370
|
+
if (config.apiToken && !options.device) {
|
|
371
|
+
console.log(chalk_1.default.yellow("Already logged in. Use 'convext logout' first to re-authenticate."));
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
console.log(chalk_1.default.bold(`Logging in to ${apiUrl}...\n`));
|
|
375
|
+
try {
|
|
376
|
+
let tokens;
|
|
377
|
+
if (options.device || !canOpenBrowser()) {
|
|
378
|
+
if (!options.device && !canOpenBrowser()) {
|
|
379
|
+
console.log(chalk_1.default.gray("Browser not available, using device flow...\n"));
|
|
380
|
+
}
|
|
381
|
+
tokens = await deviceFlow();
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
try {
|
|
385
|
+
tokens = await pkceFlow();
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
// If PKCE fails (e.g., browser couldn't open), fall back to device flow
|
|
389
|
+
if (error.message?.includes("Could not open browser") ||
|
|
390
|
+
error.message?.includes("EADDRINUSE")) {
|
|
391
|
+
console.log(chalk_1.default.yellow("\nBrowser flow failed, falling back to device flow...\n"));
|
|
392
|
+
tokens = await deviceFlow();
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
throw error;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
saveTokens(tokens);
|
|
400
|
+
console.log(chalk_1.default.green("\n✓ Successfully logged in!"));
|
|
401
|
+
console.log(chalk_1.default.gray("\nRun 'convext whoami' to verify your identity."));
|
|
402
|
+
}
|
|
403
|
+
catch (error) {
|
|
404
|
+
console.error(chalk_1.default.red("\n✗ Login failed"));
|
|
405
|
+
if (error instanceof Error) {
|
|
406
|
+
console.error(chalk_1.default.gray(` ${error.message}`));
|
|
407
|
+
}
|
|
408
|
+
process.exit(1);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Logout command - clear stored credentials
|
|
413
|
+
*/
|
|
414
|
+
async function logoutCommand() {
|
|
415
|
+
const { existsSync, unlinkSync } = require("node:fs");
|
|
416
|
+
// Clear API token from config
|
|
417
|
+
(0, config_js_1.saveConfig)({ apiToken: undefined });
|
|
418
|
+
// Remove credentials file
|
|
419
|
+
const credentialsPath = `${process.env.HOME}/.convext/credentials.json`;
|
|
420
|
+
if (existsSync(credentialsPath)) {
|
|
421
|
+
unlinkSync(credentialsPath);
|
|
422
|
+
}
|
|
423
|
+
console.log(chalk_1.default.green("✓ Logged out successfully"));
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export { getRules, getStandards, getRuleSets, getProjectContext, registerProject
|
|
|
3
3
|
export { syncCommand } from "./commands/sync.js";
|
|
4
4
|
export { checkCommand } from "./commands/check.js";
|
|
5
5
|
export { initCommand } from "./commands/init.js";
|
|
6
|
+
export { loginCommand, logoutCommand } from "./commands/login.js";
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.initCommand = exports.checkCommand = exports.syncCommand = exports.ApiError = exports.getEngineeringContext = exports.registerProject = exports.getProjectContext = exports.getRuleSets = exports.getStandards = exports.getRules = exports.getApiUrl = exports.getApiToken = exports.saveConfig = exports.loadConfig = void 0;
|
|
3
|
+
exports.logoutCommand = exports.loginCommand = exports.initCommand = exports.checkCommand = exports.syncCommand = exports.ApiError = exports.getEngineeringContext = exports.registerProject = exports.getProjectContext = exports.getRuleSets = exports.getStandards = exports.getRules = exports.getApiUrl = exports.getApiToken = exports.saveConfig = exports.loadConfig = void 0;
|
|
4
4
|
// Code Charter CLI - main exports for programmatic use
|
|
5
5
|
var config_js_1 = require("./config.js");
|
|
6
6
|
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_js_1.loadConfig; } });
|
|
@@ -21,4 +21,7 @@ var check_js_1 = require("./commands/check.js");
|
|
|
21
21
|
Object.defineProperty(exports, "checkCommand", { enumerable: true, get: function () { return check_js_1.checkCommand; } });
|
|
22
22
|
var init_js_1 = require("./commands/init.js");
|
|
23
23
|
Object.defineProperty(exports, "initCommand", { enumerable: true, get: function () { return init_js_1.initCommand; } });
|
|
24
|
+
var login_js_1 = require("./commands/login.js");
|
|
25
|
+
Object.defineProperty(exports, "loginCommand", { enumerable: true, get: function () { return login_js_1.loginCommand; } });
|
|
26
|
+
Object.defineProperty(exports, "logoutCommand", { enumerable: true, get: function () { return login_js_1.logoutCommand; } });
|
|
24
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,yCAA6E;AAApE,uGAAA,UAAU,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,sGAAA,SAAS,OAAA;AACvD,mCAYkB;AAXhB,kGAAA,QAAQ,OAAA;AACR,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AACX,2GAAA,iBAAiB,OAAA;AACjB,yGAAA,eAAe,OAAA;AACf,+GAAA,qBAAqB,OAAA;AACrB,kGAAA,QAAQ,OAAA;AAMV,8CAAiD;AAAxC,sGAAA,WAAW,OAAA;AACpB,gDAAmD;AAA1C,wGAAA,YAAY,OAAA;AACrB,8CAAiD;AAAxC,sGAAA,WAAW,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,yCAA6E;AAApE,uGAAA,UAAU,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,sGAAA,SAAS,OAAA;AACvD,mCAYkB;AAXhB,kGAAA,QAAQ,OAAA;AACR,sGAAA,YAAY,OAAA;AACZ,qGAAA,WAAW,OAAA;AACX,2GAAA,iBAAiB,OAAA;AACjB,yGAAA,eAAe,OAAA;AACf,+GAAA,qBAAqB,OAAA;AACrB,kGAAA,QAAQ,OAAA;AAMV,8CAAiD;AAAxC,sGAAA,WAAW,OAAA;AACpB,gDAAmD;AAA1C,wGAAA,YAAY,OAAA;AACrB,8CAAiD;AAAxC,sGAAA,WAAW,OAAA;AACpB,gDAAkE;AAAzD,wGAAA,YAAY,OAAA;AAAE,yGAAA,aAAa,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@convext/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "CLI for Convext - sync engineering rules and standards to your project",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -39,4 +39,4 @@
|
|
|
39
39
|
"files": [
|
|
40
40
|
"dist"
|
|
41
41
|
]
|
|
42
|
-
}
|
|
42
|
+
}
|