vibehub-cli 1.0.44 → 1.1.1
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 +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +71 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +92 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/profiles.d.ts +3 -0
- package/dist/commands/profiles.d.ts.map +1 -0
- package/dist/commands/profiles.js +77 -0
- package/dist/commands/profiles.js.map +1 -0
- package/dist/commands/use.d.ts +3 -0
- package/dist/commands/use.d.ts.map +1 -0
- package/dist/commands/use.js +83 -0
- package/dist/commands/use.js.map +1 -0
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +105 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/auth-helper.d.ts +14 -3
- package/dist/lib/auth-helper.d.ts.map +1 -1
- package/dist/lib/auth-helper.js +111 -35
- package/dist/lib/auth-helper.js.map +1 -1
- package/dist/lib/profile-manager.d.ts +116 -0
- package/dist/lib/profile-manager.d.ts.map +1 -0
- package/dist/lib/profile-manager.js +351 -0
- package/dist/lib/profile-manager.js.map +1 -0
- package/dist/lib/supabase-auth.d.ts +42 -0
- package/dist/lib/supabase-auth.d.ts.map +1 -0
- package/dist/lib/supabase-auth.js +398 -0
- package/dist/lib/supabase-auth.js.map +1 -0
- package/package.json +6 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,YAAY,SA0ErB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ProfileManager } from '../lib/profile-manager.js';
|
|
4
|
+
import { SupabaseAuth } from '../lib/supabase-auth.js';
|
|
5
|
+
export const loginCommand = new Command('login')
|
|
6
|
+
.description('Sign in to VibeHub with Google')
|
|
7
|
+
.option('-p, --profile <name>', 'Profile name to use (default: "default")', 'default')
|
|
8
|
+
.action(async (options) => {
|
|
9
|
+
const profileName = options.profile;
|
|
10
|
+
console.log('');
|
|
11
|
+
console.log(chalk.bold.blue('VibeHub Authentication'));
|
|
12
|
+
console.log(chalk.gray('━'.repeat(40)));
|
|
13
|
+
console.log('');
|
|
14
|
+
const profileManager = new ProfileManager();
|
|
15
|
+
// Check if profile already exists
|
|
16
|
+
const existingProfile = await profileManager.getProfile(profileName);
|
|
17
|
+
if (existingProfile) {
|
|
18
|
+
const status = profileManager.getProfileStatus(existingProfile);
|
|
19
|
+
if (status === 'active') {
|
|
20
|
+
console.log(chalk.yellow(`Profile '${profileName}' already exists and is active.`));
|
|
21
|
+
console.log(chalk.gray(`Email: ${existingProfile.email}`));
|
|
22
|
+
console.log('');
|
|
23
|
+
// Ask if they want to re-authenticate
|
|
24
|
+
const { default: inquirer } = await import('inquirer');
|
|
25
|
+
const { confirm } = await inquirer.prompt([{
|
|
26
|
+
type: 'confirm',
|
|
27
|
+
name: 'confirm',
|
|
28
|
+
message: 'Do you want to sign in with a different account?',
|
|
29
|
+
default: false
|
|
30
|
+
}]);
|
|
31
|
+
if (!confirm) {
|
|
32
|
+
console.log(chalk.gray('Login cancelled.'));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
console.log(chalk.blue('Opening browser for Google sign-in...'));
|
|
39
|
+
console.log('');
|
|
40
|
+
console.log(chalk.gray('If your browser doesn\'t open automatically, please visit:'));
|
|
41
|
+
console.log(chalk.gray('https://vibehub.co.in/cli-auth'));
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log(chalk.yellow('Waiting for authentication...'));
|
|
44
|
+
const supabaseAuth = new SupabaseAuth();
|
|
45
|
+
const profileData = await supabaseAuth.loginWithGoogle();
|
|
46
|
+
// Save profile
|
|
47
|
+
await profileManager.saveProfile(profileName, profileData);
|
|
48
|
+
console.log('');
|
|
49
|
+
console.log(chalk.green.bold('✓ Successfully logged in!'));
|
|
50
|
+
console.log('');
|
|
51
|
+
console.log(chalk.gray(' Email: ') + chalk.white(profileData.email));
|
|
52
|
+
console.log(chalk.gray(' Profile: ') + chalk.white(profileName));
|
|
53
|
+
console.log('');
|
|
54
|
+
if (profileName !== 'default') {
|
|
55
|
+
console.log(chalk.gray(`Tip: Use 'vibe use ${profileName}' to set this profile for a project.`));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
console.log(chalk.gray('Tip: Use \'vibe login --profile <name>\' to add another account.'));
|
|
59
|
+
}
|
|
60
|
+
console.log('');
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.log('');
|
|
64
|
+
console.log(chalk.red.bold('✗ Authentication failed'));
|
|
65
|
+
console.log(chalk.red(` ${error.message}`));
|
|
66
|
+
console.log('');
|
|
67
|
+
console.log(chalk.gray('Please try again or check your internet connection.'));
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SAoGtB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ProfileManager } from '../lib/profile-manager.js';
|
|
4
|
+
export const logoutCommand = new Command('logout')
|
|
5
|
+
.description('Sign out from VibeHub')
|
|
6
|
+
.option('-p, --profile <name>', 'Profile name to logout from')
|
|
7
|
+
.option('-a, --all', 'Logout from all profiles')
|
|
8
|
+
.action(async (options) => {
|
|
9
|
+
const profileManager = new ProfileManager();
|
|
10
|
+
console.log('');
|
|
11
|
+
if (options.all) {
|
|
12
|
+
// Logout from all profiles
|
|
13
|
+
const profiles = await profileManager.listProfiles();
|
|
14
|
+
if (profiles.length === 0) {
|
|
15
|
+
console.log(chalk.yellow('No profiles found. You are not logged in.'));
|
|
16
|
+
console.log('');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const { default: inquirer } = await import('inquirer');
|
|
20
|
+
const { confirm } = await inquirer.prompt([{
|
|
21
|
+
type: 'confirm',
|
|
22
|
+
name: 'confirm',
|
|
23
|
+
message: `Are you sure you want to logout from all ${profiles.length} profile(s)?`,
|
|
24
|
+
default: false
|
|
25
|
+
}]);
|
|
26
|
+
if (!confirm) {
|
|
27
|
+
console.log(chalk.gray('Logout cancelled.'));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const count = await profileManager.deleteAllProfiles();
|
|
31
|
+
console.log(chalk.green(`✓ Logged out from ${count} profile(s).`));
|
|
32
|
+
console.log('');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
// Get profile name to logout from
|
|
36
|
+
let profileName = options.profile;
|
|
37
|
+
if (!profileName) {
|
|
38
|
+
// If no profile specified, try to get active profile
|
|
39
|
+
const activeProfile = await profileManager.getActiveProfile();
|
|
40
|
+
if (activeProfile) {
|
|
41
|
+
profileName = activeProfile.name;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Default to 'default' profile
|
|
45
|
+
profileName = 'default';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Check if profile exists
|
|
49
|
+
const profile = await profileManager.getProfile(profileName);
|
|
50
|
+
if (!profile) {
|
|
51
|
+
console.log(chalk.yellow(`Profile '${profileName}' not found.`));
|
|
52
|
+
console.log('');
|
|
53
|
+
const profiles = await profileManager.listProfiles();
|
|
54
|
+
if (profiles.length > 0) {
|
|
55
|
+
console.log(chalk.gray('Available profiles:'));
|
|
56
|
+
for (const p of profiles) {
|
|
57
|
+
console.log(chalk.gray(` - ${p.name} (${p.email})`));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.log(chalk.gray('No profiles found. You are not logged in.'));
|
|
62
|
+
}
|
|
63
|
+
console.log('');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// Confirm logout
|
|
67
|
+
const { default: inquirer } = await import('inquirer');
|
|
68
|
+
const { confirm } = await inquirer.prompt([{
|
|
69
|
+
type: 'confirm',
|
|
70
|
+
name: 'confirm',
|
|
71
|
+
message: `Logout from '${profileName}' (${profile.email})?`,
|
|
72
|
+
default: true
|
|
73
|
+
}]);
|
|
74
|
+
if (!confirm) {
|
|
75
|
+
console.log(chalk.gray('Logout cancelled.'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Delete profile
|
|
79
|
+
await profileManager.deleteProfile(profileName);
|
|
80
|
+
console.log(chalk.green(`✓ Logged out from '${profileName}' (${profile.email})`));
|
|
81
|
+
console.log('');
|
|
82
|
+
// Show remaining profiles
|
|
83
|
+
const remainingProfiles = await profileManager.listProfiles();
|
|
84
|
+
if (remainingProfiles.length > 0) {
|
|
85
|
+
console.log(chalk.gray(`${remainingProfiles.length} profile(s) remaining.`));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
console.log(chalk.gray('No profiles remaining. Run \'vibe login\' to sign in.'));
|
|
89
|
+
}
|
|
90
|
+
console.log('');
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,eAAe,SAiFxB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ProfileManager } from '../lib/profile-manager.js';
|
|
4
|
+
export const profilesCommand = new Command('profiles')
|
|
5
|
+
.description('List all authentication profiles')
|
|
6
|
+
.action(async () => {
|
|
7
|
+
const profileManager = new ProfileManager();
|
|
8
|
+
const profiles = await profileManager.listProfiles();
|
|
9
|
+
const globalConfig = await profileManager.getGlobalConfig();
|
|
10
|
+
const projectProfile = await profileManager.getProjectProfile();
|
|
11
|
+
console.log('');
|
|
12
|
+
if (profiles.length === 0) {
|
|
13
|
+
console.log(chalk.yellow('No profiles found.'));
|
|
14
|
+
console.log('');
|
|
15
|
+
console.log(chalk.gray('Run \'vibe login\' to sign in with Google.'));
|
|
16
|
+
console.log('');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Determine which profile is currently active
|
|
20
|
+
const activeProfileName = projectProfile || globalConfig.defaultProfile;
|
|
21
|
+
// Header
|
|
22
|
+
console.log(chalk.bold('Authentication Profiles'));
|
|
23
|
+
console.log(chalk.gray('━'.repeat(60)));
|
|
24
|
+
console.log('');
|
|
25
|
+
// Column headers
|
|
26
|
+
const nameCol = 'PROFILE'.padEnd(15);
|
|
27
|
+
const emailCol = 'EMAIL'.padEnd(30);
|
|
28
|
+
const statusCol = 'STATUS';
|
|
29
|
+
console.log(chalk.gray(` ${nameCol}${emailCol}${statusCol}`));
|
|
30
|
+
console.log(chalk.gray(' ' + '─'.repeat(58)));
|
|
31
|
+
// List profiles
|
|
32
|
+
for (const profile of profiles) {
|
|
33
|
+
const isActive = profile.name === activeProfileName;
|
|
34
|
+
const isDefault = profile.name === globalConfig.defaultProfile;
|
|
35
|
+
const status = profileManager.getProfileStatus(profile);
|
|
36
|
+
const expiryStr = profileManager.getTokenExpiryString(profile);
|
|
37
|
+
// Format profile name
|
|
38
|
+
let nameStr = profile.name.padEnd(15);
|
|
39
|
+
if (isActive) {
|
|
40
|
+
nameStr = chalk.cyan(profile.name.padEnd(15));
|
|
41
|
+
}
|
|
42
|
+
// Format email
|
|
43
|
+
const emailStr = profile.email.padEnd(30);
|
|
44
|
+
// Format status
|
|
45
|
+
let statusStr = '';
|
|
46
|
+
if (status === 'active') {
|
|
47
|
+
statusStr = chalk.green('✓ Active');
|
|
48
|
+
if (isActive && projectProfile) {
|
|
49
|
+
statusStr += chalk.gray(' (project)');
|
|
50
|
+
}
|
|
51
|
+
else if (isDefault) {
|
|
52
|
+
statusStr += chalk.gray(' (default)');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (status === 'expiring') {
|
|
56
|
+
statusStr = chalk.yellow(`⚠ Expiring (${expiryStr})`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
statusStr = chalk.red('✗ Expired');
|
|
60
|
+
}
|
|
61
|
+
// Active indicator
|
|
62
|
+
const indicator = isActive ? chalk.cyan('▸') : ' ';
|
|
63
|
+
console.log(`${indicator} ${nameStr}${emailStr}${statusStr}`);
|
|
64
|
+
}
|
|
65
|
+
console.log('');
|
|
66
|
+
// Footer tips
|
|
67
|
+
if (projectProfile) {
|
|
68
|
+
console.log(chalk.gray(`This project is using the '${projectProfile}' profile.`));
|
|
69
|
+
console.log(chalk.gray(`Run 'vibe use <profile>' to change it.`));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(chalk.gray(`Using default profile '${globalConfig.defaultProfile}'.`));
|
|
73
|
+
console.log(chalk.gray(`Run 'vibe use <profile>' to set a project-specific profile.`));
|
|
74
|
+
}
|
|
75
|
+
console.log('');
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,CAAC;IACrD,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;IAC5D,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,iBAAiB,EAAE,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,8CAA8C;IAC9C,MAAM,iBAAiB,GAAG,cAAc,IAAI,YAAY,CAAC,cAAc,CAAC;IAExE,SAAS;IACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,iBAAiB;IACjB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/C,gBAAgB;IAChB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,CAAC;QAC/D,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,cAAc,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE/D,sBAAsB;QACtB,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,eAAe;QACf,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE1C,gBAAgB;QAChB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,QAAQ,IAAI,cAAc,EAAE,CAAC;gBAC/B,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,SAAS,GAAG,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QAED,mBAAmB;QACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,OAAO,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,cAAc;IACd,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,cAAc,YAAY,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,YAAY,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../src/commands/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,UAAU,SA+EnB,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ProfileManager } from '../lib/profile-manager.js';
|
|
4
|
+
export const useCommand = new Command('use')
|
|
5
|
+
.description('Set the authentication profile for the current project')
|
|
6
|
+
.argument('<profile>', 'Profile name to use')
|
|
7
|
+
.option('-c, --clear', 'Clear the project profile override (use default)')
|
|
8
|
+
.action(async (profileArg, options) => {
|
|
9
|
+
const profileManager = new ProfileManager();
|
|
10
|
+
console.log('');
|
|
11
|
+
// Handle clear option
|
|
12
|
+
if (options.clear) {
|
|
13
|
+
await profileManager.clearProjectProfile();
|
|
14
|
+
const globalConfig = await profileManager.getGlobalConfig();
|
|
15
|
+
console.log(chalk.green('✓ Cleared project profile override.'));
|
|
16
|
+
console.log(chalk.gray(` This project will now use the default profile '${globalConfig.defaultProfile}'.`));
|
|
17
|
+
console.log('');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const profileName = profileArg;
|
|
21
|
+
// Check if profile exists
|
|
22
|
+
const profile = await profileManager.getProfile(profileName);
|
|
23
|
+
if (!profile) {
|
|
24
|
+
console.log(chalk.red(`✗ Profile '${profileName}' not found.`));
|
|
25
|
+
console.log('');
|
|
26
|
+
const profiles = await profileManager.listProfiles();
|
|
27
|
+
if (profiles.length > 0) {
|
|
28
|
+
console.log(chalk.gray('Available profiles:'));
|
|
29
|
+
for (const p of profiles) {
|
|
30
|
+
console.log(chalk.gray(` - ${p.name} (${p.email})`));
|
|
31
|
+
}
|
|
32
|
+
console.log('');
|
|
33
|
+
console.log(chalk.gray(`Run 'vibe login --profile ${profileName}' to create this profile.`));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.log(chalk.gray('No profiles found. Run \'vibe login\' to sign in first.'));
|
|
37
|
+
}
|
|
38
|
+
console.log('');
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
// Check if we're in a VibeHub project
|
|
42
|
+
const fs = await import('fs-extra');
|
|
43
|
+
const path = await import('path');
|
|
44
|
+
const vibehubDir = path.default.join(process.cwd(), '.vibehub');
|
|
45
|
+
if (!await fs.default.pathExists(vibehubDir)) {
|
|
46
|
+
console.log(chalk.yellow('⚠ Not in a VibeHub project directory.'));
|
|
47
|
+
console.log('');
|
|
48
|
+
console.log(chalk.gray('Run \'vibe init\' to initialize a project, or navigate to an existing project.'));
|
|
49
|
+
console.log('');
|
|
50
|
+
// Ask if they want to create the config anyway
|
|
51
|
+
const { default: inquirer } = await import('inquirer');
|
|
52
|
+
const { confirm } = await inquirer.prompt([{
|
|
53
|
+
type: 'confirm',
|
|
54
|
+
name: 'confirm',
|
|
55
|
+
message: 'Create profile configuration in current directory anyway?',
|
|
56
|
+
default: false
|
|
57
|
+
}]);
|
|
58
|
+
if (!confirm) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Set project profile
|
|
63
|
+
await profileManager.setProjectProfile(profileName);
|
|
64
|
+
console.log(chalk.green(`✓ Project configured to use '${profileName}' profile.`));
|
|
65
|
+
console.log('');
|
|
66
|
+
console.log(chalk.gray(' Email: ') + chalk.white(profile.email));
|
|
67
|
+
console.log(chalk.gray(' Status: ') + getStatusText(profileManager.getProfileStatus(profile)));
|
|
68
|
+
console.log('');
|
|
69
|
+
console.log(chalk.gray('All commands in this project will now use this profile.'));
|
|
70
|
+
console.log(chalk.gray(`Run 'vibe use --clear' to revert to the default profile.`));
|
|
71
|
+
console.log('');
|
|
72
|
+
});
|
|
73
|
+
function getStatusText(status) {
|
|
74
|
+
switch (status) {
|
|
75
|
+
case 'active':
|
|
76
|
+
return chalk.green('Active');
|
|
77
|
+
case 'expiring':
|
|
78
|
+
return chalk.yellow('Expiring soon');
|
|
79
|
+
case 'expired':
|
|
80
|
+
return chalk.red('Expired (will refresh on next command)');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../src/commands/use.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SAgHtB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
import { ProfileManager } from '../lib/profile-manager.js';
|
|
6
|
+
export const whoamiCommand = new Command('whoami')
|
|
7
|
+
.description('Show current authentication status and profile')
|
|
8
|
+
.action(async () => {
|
|
9
|
+
const profileManager = new ProfileManager();
|
|
10
|
+
console.log('');
|
|
11
|
+
// Get active profile
|
|
12
|
+
const profile = await profileManager.getActiveProfile();
|
|
13
|
+
if (!profile) {
|
|
14
|
+
console.log(chalk.yellow('Not logged in.'));
|
|
15
|
+
console.log('');
|
|
16
|
+
console.log(chalk.gray('Run \'vibe login\' to sign in with Google.'));
|
|
17
|
+
console.log('');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Check profile status and try to refresh if needed
|
|
21
|
+
const status = profileManager.getProfileStatus(profile);
|
|
22
|
+
let displayProfile = profile;
|
|
23
|
+
if (status === 'expired' || status === 'expiring') {
|
|
24
|
+
try {
|
|
25
|
+
displayProfile = await profileManager.refreshTokenIfNeeded(profile);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Will show expired status
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const finalStatus = profileManager.getProfileStatus(displayProfile);
|
|
32
|
+
const expiryStr = profileManager.getTokenExpiryString(displayProfile);
|
|
33
|
+
// Get project info
|
|
34
|
+
const projectProfile = await profileManager.getProjectProfile();
|
|
35
|
+
const globalConfig = await profileManager.getGlobalConfig();
|
|
36
|
+
const isProjectOverride = projectProfile !== null;
|
|
37
|
+
// Get project name if in a VibeHub project
|
|
38
|
+
let projectName = null;
|
|
39
|
+
const vibehubConfigPath = path.join(process.cwd(), '.vibehub', 'vibehub.json');
|
|
40
|
+
if (await fs.pathExists(vibehubConfigPath)) {
|
|
41
|
+
try {
|
|
42
|
+
const config = await fs.readJson(vibehubConfigPath);
|
|
43
|
+
projectName = config.projectName;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Ignore errors
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Display header
|
|
50
|
+
console.log(chalk.bold('VibeHub Authentication Status'));
|
|
51
|
+
console.log(chalk.gray('━'.repeat(40)));
|
|
52
|
+
console.log('');
|
|
53
|
+
// Email
|
|
54
|
+
console.log(chalk.gray(' Email: ') + chalk.white.bold(displayProfile.email));
|
|
55
|
+
// Profile
|
|
56
|
+
const profileStr = isProjectOverride
|
|
57
|
+
? `${displayProfile.name} ${chalk.gray('(project override)')}`
|
|
58
|
+
: `${displayProfile.name} ${chalk.gray('(default)')}`;
|
|
59
|
+
console.log(chalk.gray(' Profile: ') + chalk.white(profileStr));
|
|
60
|
+
// Project (if in a VibeHub project)
|
|
61
|
+
if (projectName) {
|
|
62
|
+
console.log(chalk.gray(' Project: ') + chalk.white(projectName));
|
|
63
|
+
}
|
|
64
|
+
// Token status
|
|
65
|
+
let statusText;
|
|
66
|
+
switch (finalStatus) {
|
|
67
|
+
case 'active':
|
|
68
|
+
statusText = chalk.green(`✓ Valid (expires in ${expiryStr})`);
|
|
69
|
+
break;
|
|
70
|
+
case 'expiring':
|
|
71
|
+
statusText = chalk.yellow(`⚠ Expiring soon (${expiryStr})`);
|
|
72
|
+
break;
|
|
73
|
+
case 'expired':
|
|
74
|
+
statusText = chalk.red('✗ Expired');
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
console.log(chalk.gray(' Token: ') + statusText);
|
|
78
|
+
// User ID (truncated)
|
|
79
|
+
const truncatedId = displayProfile.userId.substring(0, 8) + '...';
|
|
80
|
+
console.log(chalk.gray(' User ID: ') + chalk.gray(truncatedId));
|
|
81
|
+
console.log('');
|
|
82
|
+
// Additional info
|
|
83
|
+
if (finalStatus === 'expired') {
|
|
84
|
+
console.log(chalk.yellow('Your session has expired. Run \'vibe login\' to sign in again.'));
|
|
85
|
+
console.log('');
|
|
86
|
+
}
|
|
87
|
+
else if (isProjectOverride) {
|
|
88
|
+
console.log(chalk.gray(`This project overrides the default profile '${globalConfig.defaultProfile}'.`));
|
|
89
|
+
console.log(chalk.gray(`Run 'vibe use --clear' to use the default profile.`));
|
|
90
|
+
console.log('');
|
|
91
|
+
}
|
|
92
|
+
// Show other profiles
|
|
93
|
+
const allProfiles = await profileManager.listProfiles();
|
|
94
|
+
if (allProfiles.length > 1) {
|
|
95
|
+
const otherProfiles = allProfiles.filter(p => p.name !== displayProfile.name);
|
|
96
|
+
console.log(chalk.gray('Other profiles:'));
|
|
97
|
+
for (const p of otherProfiles) {
|
|
98
|
+
const pStatus = profileManager.getProfileStatus(p);
|
|
99
|
+
const statusIcon = pStatus === 'active' ? chalk.green('✓') : pStatus === 'expiring' ? chalk.yellow('⚠') : chalk.red('✗');
|
|
100
|
+
console.log(chalk.gray(` ${statusIcon} ${p.name} (${p.email})`));
|
|
101
|
+
}
|
|
102
|
+
console.log('');
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,12 @@ import { sessionCommand } from './commands/session.js';
|
|
|
13
13
|
import { capturePromptsCommand } from './commands/capture-prompts.js';
|
|
14
14
|
import { setCommand } from './commands/set.js';
|
|
15
15
|
import { installCommand } from './commands/install.js';
|
|
16
|
+
// Authentication commands
|
|
17
|
+
import { loginCommand } from './commands/login.js';
|
|
18
|
+
import { logoutCommand } from './commands/logout.js';
|
|
19
|
+
import { profilesCommand } from './commands/profiles.js';
|
|
20
|
+
import { useCommand } from './commands/use.js';
|
|
21
|
+
import { whoamiCommand } from './commands/whoami.js';
|
|
16
22
|
const program = new Command();
|
|
17
23
|
program
|
|
18
24
|
.name('vibe')
|
|
@@ -30,6 +36,12 @@ program.addCommand(sessionCommand);
|
|
|
30
36
|
program.addCommand(capturePromptsCommand);
|
|
31
37
|
program.addCommand(setCommand);
|
|
32
38
|
program.addCommand(installCommand);
|
|
39
|
+
// Authentication commands
|
|
40
|
+
program.addCommand(loginCommand);
|
|
41
|
+
program.addCommand(logoutCommand);
|
|
42
|
+
program.addCommand(profilesCommand);
|
|
43
|
+
program.addCommand(useCommand);
|
|
44
|
+
program.addCommand(whoamiCommand);
|
|
33
45
|
// Global error handler
|
|
34
46
|
program.exitOverride();
|
|
35
47
|
try {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,15 @@ export interface AuthInfo {
|
|
|
3
3
|
token: string;
|
|
4
4
|
}
|
|
5
5
|
/**
|
|
6
|
-
* Get authentication token -
|
|
7
|
-
* This is the main entry point for authentication in all commands
|
|
6
|
+
* Get authentication token - uses profile system with automatic token refresh.
|
|
7
|
+
* This is the main entry point for authentication in all commands.
|
|
8
|
+
*
|
|
9
|
+
* Flow:
|
|
10
|
+
* 1. Check for migration from old format (prompts browser login if needed)
|
|
11
|
+
* 2. Get active profile (project-level override or default)
|
|
12
|
+
* 3. If no profile exists, prompt browser login
|
|
13
|
+
* 4. If token expired/expiring, silently refresh using refresh token
|
|
14
|
+
* 5. Return valid token
|
|
8
15
|
*/
|
|
9
16
|
export declare function getAuthToken(forceReauth?: boolean): Promise<AuthInfo>;
|
|
10
17
|
/**
|
|
@@ -16,7 +23,11 @@ export declare function isAuthenticated(): Promise<boolean>;
|
|
|
16
23
|
*/
|
|
17
24
|
export declare function getStoredEmail(): Promise<string | null>;
|
|
18
25
|
/**
|
|
19
|
-
* Clear authentication (logout)
|
|
26
|
+
* Clear authentication (logout from active profile)
|
|
20
27
|
*/
|
|
21
28
|
export declare function clearAuth(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Get the current profile name (for display purposes)
|
|
31
|
+
*/
|
|
32
|
+
export declare function getCurrentProfileName(): Promise<string | null>;
|
|
22
33
|
//# sourceMappingURL=auth-helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-helper.d.ts","sourceRoot":"","sources":["../../src/lib/auth-helper.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED
|
|
1
|
+
{"version":3,"file":"auth-helper.d.ts","sourceRoot":"","sources":["../../src/lib/auth-helper.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,WAAW,GAAE,OAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4FlF;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAIxD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI7D;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIpE"}
|