@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.
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAkDA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA+ClD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC"}
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"}
@@ -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
- const supabaseUrl = await prompt('Supabase URL: ');
54
- if (!supabaseUrl.trim()) {
55
- console.log(chalk.red('URL is required'));
56
- return;
57
- }
58
- const supabaseAnonKey = await prompt('Supabase Anon Key: ');
59
- if (!supabaseAnonKey.trim()) {
60
- console.log(chalk.red('Anon key is required'));
61
- return;
62
- }
63
- const email = await prompt('Email: ');
64
- if (!email.trim()) {
65
- console.log(chalk.red('Email is required'));
66
- return;
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
- const password = await prompt('Password: ', true);
69
- if (!password.trim()) {
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
- const supabase = createClient(supabaseUrl.trim(), supabaseAnonKey.trim());
74
- const { data, error } = await supabase.auth.signInWithPassword({
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
- setConfig({
83
- supabaseUrl: supabaseUrl.trim(),
84
- supabaseAnonKey: supabaseAnonKey.trim(),
85
- accessToken: data.session.access_token,
86
- refreshToken: data.session.refresh_token,
87
- userId: data.user.id,
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":"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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../src/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAKpE,wBAAgB,WAAW,IAAI,cAAc,CAkB5C;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAyBvD"}
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.supabaseUrl || !config.supabaseAnonKey || !config.accessToken) {
9
+ if (!config.accessToken) {
9
10
  console.error('Not logged in. Run: scindo login');
10
11
  process.exit(1);
11
12
  }
12
- client = createClient(config.supabaseUrl, config.supabaseAnonKey, {
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.supabaseUrl || !config.supabaseAnonKey || !config.refreshToken) {
24
+ if (!config.refreshToken) {
24
25
  return false;
25
26
  }
26
- const supabase = createClient(config.supabaseUrl, config.supabaseAnonKey);
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
  });
@@ -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,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE;QAChE,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,WAAW,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;IACzE,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"}
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.0.0",
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",