@scindo/cli 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +66 -80
- package/dist/commands/login.js.map +1 -1
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -0
- package/dist/constants.js.map +1 -0
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +5 -4
- package/dist/supabase.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAOA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmClD;AAkDD,wBAAgB,aAAa,IAAI,IAAI,CAGpC"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,92 +1,78 @@
|
|
|
1
|
+
import http from 'node:http';
|
|
1
2
|
import { createClient } from '@supabase/supabase-js';
|
|
2
3
|
import chalk from 'chalk';
|
|
4
|
+
import open from 'open';
|
|
5
|
+
import { SUPABASE_URL, SUPABASE_ANON_KEY, APP_URL } from '../constants.js';
|
|
3
6
|
import { setConfig, clearConfig } from '../config.js';
|
|
4
|
-
import * as readline from 'readline';
|
|
5
|
-
function prompt(question, hidden = false) {
|
|
6
|
-
return new Promise((resolve) => {
|
|
7
|
-
const rl = readline.createInterface({
|
|
8
|
-
input: process.stdin,
|
|
9
|
-
output: process.stdout,
|
|
10
|
-
});
|
|
11
|
-
if (hidden) {
|
|
12
|
-
// For password input, disable echo
|
|
13
|
-
const stdin = process.stdin;
|
|
14
|
-
const wasRaw = stdin.isRaw;
|
|
15
|
-
if (stdin.setRawMode)
|
|
16
|
-
stdin.setRawMode(true);
|
|
17
|
-
let input = '';
|
|
18
|
-
process.stdout.write(question);
|
|
19
|
-
const onData = (char) => {
|
|
20
|
-
const c = char.toString();
|
|
21
|
-
if (c === '\n' || c === '\r') {
|
|
22
|
-
if (stdin.setRawMode)
|
|
23
|
-
stdin.setRawMode(wasRaw ?? false);
|
|
24
|
-
stdin.removeListener('data', onData);
|
|
25
|
-
process.stdout.write('\n');
|
|
26
|
-
rl.close();
|
|
27
|
-
resolve(input);
|
|
28
|
-
}
|
|
29
|
-
else if (c === '\u0003') {
|
|
30
|
-
// Ctrl+C
|
|
31
|
-
process.exit(0);
|
|
32
|
-
}
|
|
33
|
-
else if (c === '\u007F' || c === '\b') {
|
|
34
|
-
// Backspace
|
|
35
|
-
input = input.slice(0, -1);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
input += c;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
stdin.on('data', onData);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
rl.question(question, (answer) => {
|
|
45
|
-
rl.close();
|
|
46
|
-
resolve(answer);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
7
|
export async function loginCommand() {
|
|
52
8
|
console.log(chalk.bold('Scindo Login\n'));
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
9
|
+
// Start a local server to receive the auth callback
|
|
10
|
+
const { port, tokenPromise, server } = await startCallbackServer();
|
|
11
|
+
const loginUrl = `${APP_URL}/cli-login?port=${port}`;
|
|
12
|
+
console.log(`Opening browser to log in...`);
|
|
13
|
+
console.log(chalk.dim(`If the browser doesn't open, visit: ${loginUrl}\n`));
|
|
14
|
+
await open(loginUrl);
|
|
15
|
+
console.log('Waiting for login...');
|
|
16
|
+
try {
|
|
17
|
+
const { accessToken, refreshToken } = await tokenPromise;
|
|
18
|
+
// Decode the JWT to get the user ID
|
|
19
|
+
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
|
|
20
|
+
const { data } = await supabase.auth.getUser(accessToken);
|
|
21
|
+
setConfig({
|
|
22
|
+
supabaseUrl: SUPABASE_URL,
|
|
23
|
+
supabaseAnonKey: SUPABASE_ANON_KEY,
|
|
24
|
+
accessToken,
|
|
25
|
+
refreshToken,
|
|
26
|
+
userId: data.user?.id ?? '',
|
|
27
|
+
});
|
|
28
|
+
console.log(chalk.green(`\nLogged in as ${data.user?.email ?? 'unknown'}`));
|
|
67
29
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
console.log(chalk.red('Password is required'));
|
|
71
|
-
return;
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.log(chalk.red(`Login failed: ${err instanceof Error ? err.message : 'Unknown error'}`));
|
|
72
32
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
email: email.trim(),
|
|
76
|
-
password,
|
|
77
|
-
});
|
|
78
|
-
if (error) {
|
|
79
|
-
console.log(chalk.red(`Login failed: ${error.message}`));
|
|
80
|
-
return;
|
|
33
|
+
finally {
|
|
34
|
+
server.close();
|
|
81
35
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
36
|
+
}
|
|
37
|
+
function startCallbackServer() {
|
|
38
|
+
return new Promise((resolveSetup) => {
|
|
39
|
+
let resolveTokens;
|
|
40
|
+
let rejectTokens;
|
|
41
|
+
const tokenPromise = new Promise((res, rej) => {
|
|
42
|
+
resolveTokens = res;
|
|
43
|
+
rejectTokens = rej;
|
|
44
|
+
});
|
|
45
|
+
const server = http.createServer((req, res) => {
|
|
46
|
+
const url = new URL(req.url ?? '/', `http://localhost`);
|
|
47
|
+
if (url.pathname === '/callback') {
|
|
48
|
+
const accessToken = url.searchParams.get('accessToken');
|
|
49
|
+
const refreshToken = url.searchParams.get('refreshToken');
|
|
50
|
+
res.writeHead(200, { 'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*' });
|
|
51
|
+
res.end('<html><body><h2>Login successful!</h2><p>You can close this tab and return to your terminal.</p></body></html>');
|
|
52
|
+
if (accessToken && refreshToken) {
|
|
53
|
+
resolveTokens({ accessToken, refreshToken });
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
rejectTokens(new Error('Missing tokens in callback'));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
res.writeHead(404);
|
|
61
|
+
res.end();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// Listen on a random available port
|
|
65
|
+
server.listen(0, () => {
|
|
66
|
+
const addr = server.address();
|
|
67
|
+
const port = typeof addr === 'object' && addr ? addr.port : 0;
|
|
68
|
+
resolveSetup({ port, tokenPromise, server });
|
|
69
|
+
});
|
|
70
|
+
// Timeout after 2 minutes
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
rejectTokens(new Error('Login timed out. Please try again.'));
|
|
73
|
+
server.close();
|
|
74
|
+
}, 120_000);
|
|
88
75
|
});
|
|
89
|
-
console.log(chalk.green(`\nLogged in as ${data.user.email}`));
|
|
90
76
|
}
|
|
91
77
|
export function logoutCommand() {
|
|
92
78
|
clearConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const SUPABASE_URL = "https://ohqdbhrtmxfxxpuutgym.supabase.co";
|
|
2
|
+
export declare const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9ocWRiaHJ0bXhmeHhwdXV0Z3ltIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzEzOTAyNDgsImV4cCI6MjA4Njk2NjI0OH0.KYwoN3Cc81nbsW8dlEePsQihsP726U0TF3UXuyWQq4Y";
|
|
3
|
+
export declare const APP_URL = "https://app.scindo.one";
|
|
4
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,6CAA6C,CAAA;AACtE,eAAO,MAAM,iBAAiB,qNACsL,CAAA;AACpN,eAAO,MAAM,OAAO,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export const SUPABASE_URL = 'https://ohqdbhrtmxfxxpuutgym.supabase.co';
|
|
2
|
+
export const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9ocWRiaHJ0bXhmeHhwdXV0Z3ltIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzEzOTAyNDgsImV4cCI6MjA4Njk2NjI0OH0.KYwoN3Cc81nbsW8dlEePsQihsP726U0TF3UXuyWQq4Y';
|
|
3
|
+
export const APP_URL = 'https://app.scindo.one';
|
|
4
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,0CAA0C,CAAA;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAC5B,kNAAkN,CAAA;AACpN,MAAM,CAAC,MAAM,OAAO,GAAG,wBAAwB,CAAA"}
|
package/dist/supabase.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAMpE,wBAAgB,WAAW,IAAI,cAAc,CAkB5C;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAyBvD"}
|
package/dist/supabase.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { createClient } from '@supabase/supabase-js';
|
|
2
|
+
import { SUPABASE_URL, SUPABASE_ANON_KEY } from './constants.js';
|
|
2
3
|
import { getConfig, setConfig, clearConfig } from './config.js';
|
|
3
4
|
let client = null;
|
|
4
5
|
export function getSupabase() {
|
|
5
6
|
if (client)
|
|
6
7
|
return client;
|
|
7
8
|
const config = getConfig();
|
|
8
|
-
if (!config.
|
|
9
|
+
if (!config.accessToken) {
|
|
9
10
|
console.error('Not logged in. Run: scindo login');
|
|
10
11
|
process.exit(1);
|
|
11
12
|
}
|
|
12
|
-
client = createClient(
|
|
13
|
+
client = createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
|
|
13
14
|
global: {
|
|
14
15
|
headers: {
|
|
15
16
|
Authorization: `Bearer ${config.accessToken}`,
|
|
@@ -20,10 +21,10 @@ export function getSupabase() {
|
|
|
20
21
|
}
|
|
21
22
|
export async function refreshSession() {
|
|
22
23
|
const config = getConfig();
|
|
23
|
-
if (!config.
|
|
24
|
+
if (!config.refreshToken) {
|
|
24
25
|
return false;
|
|
25
26
|
}
|
|
26
|
-
const supabase = createClient(
|
|
27
|
+
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
|
|
27
28
|
const { data, error } = await supabase.auth.refreshSession({
|
|
28
29
|
refresh_token: config.refreshToken,
|
|
29
30
|
});
|
package/dist/supabase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,IAAI,MAAM,GAA0B,IAAI,CAAA;AAExC,MAAM,UAAU,WAAW;IACzB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,IAAI,MAAM,GAA0B,IAAI,CAAA;AAExC,MAAM,UAAU,WAAW;IACzB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,iBAAiB,EAAE;QACrD,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,CAAC,WAAW,EAAE;aAC9C;SACF;KACF,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAA;IAC9D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;QACzD,aAAa,EAAE,MAAM,CAAC,YAAY;KACnC,CAAC,CAAA;IAEF,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,WAAW,EAAE,CAAA;QACb,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS,CAAC;QACR,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;QACtC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;KACzC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,MAAM,GAAG,IAAI,CAAA;IAEb,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scindo/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Scindo CLI — team chat with AI agents from the terminal",
|
|
6
6
|
"type": "module",
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
"@supabase/supabase-js": "^2.97.0",
|
|
40
40
|
"chalk": "^5",
|
|
41
41
|
"commander": "^13",
|
|
42
|
-
"conf": "^15.1.0"
|
|
42
|
+
"conf": "^15.1.0",
|
|
43
|
+
"open": "^11.0.0"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@types/node": "^20.19.33",
|