ft-scout 5.0.0 → 5.0.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/.firebase/hosting.d2Vi.cache +3 -3
- package/bin/src/commands/authCommand.d.ts.map +1 -1
- package/bin/src/commands/authCommand.js +20 -8
- package/bin/src/commands/authCommand.js.map +1 -1
- package/bin/src/commands/login.d.ts.map +1 -1
- package/bin/src/commands/login.js +108 -10
- package/bin/src/commands/login.js.map +1 -1
- package/bin/src/commands/signup.d.ts.map +1 -1
- package/bin/src/commands/signup.js +29 -11
- package/bin/src/commands/signup.js.map +1 -1
- package/bin/src/discovery/messages.js +1 -1
- package/bin/src/discovery/messages.js.map +1 -1
- package/bin/src/index.js +8 -5
- package/bin/src/index.js.map +1 -1
- package/bin/src/utils/auth.d.ts.map +1 -1
- package/bin/src/utils/auth.js +2 -0
- package/bin/src/utils/auth.js.map +1 -1
- package/bin/src/utils/branding.js +1 -1
- package/bin/src/utils/holoseneAuth.d.ts.map +1 -0
- package/bin/src/utils/holoseneAuth.js +179 -0
- package/bin/src/utils/holoseneAuth.js.map +1 -0
- package/package.json +2 -2
- package/web/app.js +48 -3
- package/web/styles.css +43 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
styles.css,
|
|
1
|
+
styles.css,1786177678984,5c25ac2a2bf5e5b3877f6ed5d8b25f9038eda8ab6ea3c4a3ecd43a6337cc62c8
|
|
2
|
+
index.html,1786177670585,c8aa9c5585633be676ed89528d28e37fd950f90a5c6a0fb5ccdc976317f669d7
|
|
2
3
|
favicon.svg,1786121352486,821922ce0d598edd137f0c1bea7389ae7728313f9b9d4ad83775c8c1bfaa47a9
|
|
3
|
-
app.js,
|
|
4
|
-
index.html,1786121775283,7f08ec8e0d229c2581c42611bb724b400d3e8c57cabd47d85c6c445380c4b986
|
|
4
|
+
app.js,1786179145758,d08e9179a7093ea09d096d2d6245a7e54d905bc65aa0292735fbf3c591d49f09
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authCommand.d.ts","sourceRoot":"","sources":["authCommand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authCommand.d.ts","sourceRoot":"","sources":["authCommand.ts"],"names":[],"mappings":"AAMA,wBAAsB,gBAAgB,kBA2CrC"}
|
|
@@ -1,26 +1,38 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { safeNote } from '../utils/markdown.js';
|
|
3
3
|
import { loadAuthConfig } from '../utils/auth.js';
|
|
4
|
-
import { firebaseLookupToken
|
|
4
|
+
import { firebaseLookupToken } from '../utils/firebaseAuth.js';
|
|
5
|
+
import { holoseneLookupUser } from '../utils/holoseneAuth.js';
|
|
5
6
|
export async function handleAuthStatus() {
|
|
6
7
|
const auth = loadAuthConfig();
|
|
7
8
|
if (!auth.token || !auth.user) {
|
|
8
9
|
safeNote(`Status: ${chalk.bold.red('Not Logged In')}\n\n` +
|
|
9
10
|
`No active session found in ${chalk.yellow('~/.ft/auth.json')}.\n\n` +
|
|
10
|
-
`Run ${chalk.cyan('
|
|
11
|
+
`Run ${chalk.cyan('scout login')} to sign in or ${chalk.cyan('scout signup')} to create an account.`, '🔐 FrontTerrain Scout Auth Status');
|
|
11
12
|
return;
|
|
12
13
|
}
|
|
13
|
-
const
|
|
14
|
-
|
|
14
|
+
const isHolosene = auth.provider === 'holosene';
|
|
15
|
+
let liveVerified = false;
|
|
16
|
+
if (isHolosene) {
|
|
17
|
+
const hUser = await holoseneLookupUser(auth.token);
|
|
18
|
+
liveVerified = Boolean(hUser);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const verification = await firebaseLookupToken(auth.token);
|
|
22
|
+
liveVerified = verification.valid;
|
|
23
|
+
}
|
|
24
|
+
const liveStatus = liveVerified
|
|
15
25
|
? chalk.bold.green('Authenticated (Live Verified)')
|
|
16
26
|
: chalk.bold.yellow('Session Active (Local cache)');
|
|
17
|
-
const
|
|
18
|
-
?
|
|
19
|
-
: '
|
|
27
|
+
const providerBadge = isHolosene
|
|
28
|
+
? chalk.bold.magenta('🌌 Holosene OAuth (holosene.frontterrain.com)')
|
|
29
|
+
: chalk.bold.cyan('🔥 Firebase Auth');
|
|
20
30
|
const loggedInTime = auth.loggedInAt ? new Date(auth.loggedInAt).toLocaleString() : 'Active session';
|
|
21
|
-
safeNote(`Status: ${liveStatus}\n
|
|
31
|
+
safeNote(`Status: ${liveStatus}\n` +
|
|
32
|
+
`Auth Provider: ${providerBadge}\n\n` +
|
|
22
33
|
`User Name: ${chalk.bold(auth.user.name)}\n` +
|
|
23
34
|
`User Email: ${chalk.cyan(auth.user.email)}\n` +
|
|
35
|
+
`Username: ${chalk.dim(auth.user.username || 'n/a')}\n` +
|
|
24
36
|
`Logged In At: ${loggedInTime}\n`, '🔐 FrontTerrain Auth Status');
|
|
25
37
|
}
|
|
26
38
|
//# sourceMappingURL=authCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authCommand.js","sourceRoot":"","sources":["authCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"authCommand.js","sourceRoot":"","sources":["authCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,QAAQ,CACN,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM;YAChD,8BAA8B,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO;YACpE,OAAO,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,wBAAwB,EACpG,mCAAmC,CACpC,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC;IAChD,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,MAAM,UAAU,GAAG,YAAY;QAC7B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC;QACnD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,UAAU;QAC9B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,+CAA+C,CAAC;QACrE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAExC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAErG,QAAQ,CACN,WAAW,UAAU,IAAI;QACzB,kBAAkB,aAAa,MAAM;QACrC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAC5C,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QAC9C,aAAa,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI;QACvD,iBAAiB,YAAY,IAAI,EACjC,6BAA6B,CAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["login.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CACpC;AAED,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,iBAgOvD"}
|
|
@@ -1,19 +1,75 @@
|
|
|
1
|
-
import { text, password, spinner, isCancel, cancel } from '@clack/prompts';
|
|
1
|
+
import { text, password, select, spinner, isCancel, cancel } from '@clack/prompts';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { safeNote } from '../utils/markdown.js';
|
|
4
4
|
import { saveAuthConfig } from '../utils/auth.js';
|
|
5
5
|
import { firebaseSignIn, firebaseLookupUser, FIREBASE_TENANT_ID } from '../utils/firebaseAuth.js';
|
|
6
|
+
import { launchHoloseneBrowserOAuth, holoseneLookupUser } from '../utils/holoseneAuth.js';
|
|
6
7
|
export async function handleLogin(options) {
|
|
7
8
|
let email = options?.email?.trim();
|
|
8
9
|
let pwd = options?.password?.trim();
|
|
9
10
|
let token = options?.token?.trim();
|
|
10
|
-
|
|
11
|
+
let holoseneToken = options?.holoseneToken?.trim();
|
|
12
|
+
// 1. Direct Holosene Token CLI Flag
|
|
13
|
+
if (holoseneToken) {
|
|
14
|
+
const s = spinner();
|
|
15
|
+
s.start('Authenticating with provided Holosene Auth token...');
|
|
16
|
+
const fetchedUser = await holoseneLookupUser(holoseneToken);
|
|
17
|
+
const resolvedEmail = email || fetchedUser?.email || '';
|
|
18
|
+
const resolvedName = fetchedUser?.name || (resolvedEmail && resolvedEmail.includes('@') ? resolvedEmail.split('@')[0] : 'Holosene Developer');
|
|
19
|
+
const user = {
|
|
20
|
+
id: fetchedUser?.id || `hls_${Date.now().toString(36)}`,
|
|
21
|
+
email: resolvedEmail,
|
|
22
|
+
name: resolvedName,
|
|
23
|
+
username: fetchedUser?.username || (resolvedEmail.includes('@') ? resolvedEmail.split('@')[0] : 'holosene_user'),
|
|
24
|
+
createdAt: fetchedUser?.createdAt || new Date().toISOString(),
|
|
25
|
+
};
|
|
26
|
+
saveAuthConfig({
|
|
27
|
+
token: holoseneToken,
|
|
28
|
+
provider: 'holosene',
|
|
29
|
+
user,
|
|
30
|
+
loggedInAt: new Date().toISOString(),
|
|
31
|
+
});
|
|
32
|
+
s.stop(chalk.green('✓ Holosene Auth token verified successfully!'));
|
|
33
|
+
safeNote(`${chalk.bold('Welcome back, ' + user.name + '!')}\n\n` +
|
|
34
|
+
`Status: ${chalk.bold.green('Authenticated (Holosene Platform)')}\n` +
|
|
35
|
+
`Account: ${chalk.cyan(user.email || 'holosene_user')}\n` +
|
|
36
|
+
`Platform: ${chalk.magenta('Holosene Developer Platform (holosene.frontterrain.com)')}\n`, '🌌 FrontTerrain Holosene Auth');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// 2. Direct Holosene Browser OAuth Flag or Selection
|
|
40
|
+
if (options?.holosene || options?.provider === 'holosene') {
|
|
41
|
+
const s = spinner();
|
|
42
|
+
s.start('Opening browser for Holosene OAuth authorization consent screen...');
|
|
43
|
+
try {
|
|
44
|
+
const authRes = await launchHoloseneBrowserOAuth();
|
|
45
|
+
saveAuthConfig({
|
|
46
|
+
token: authRes.token,
|
|
47
|
+
refreshToken: authRes.refreshToken || null,
|
|
48
|
+
provider: 'holosene',
|
|
49
|
+
user: authRes.user,
|
|
50
|
+
loggedInAt: new Date().toISOString(),
|
|
51
|
+
});
|
|
52
|
+
s.stop(chalk.green('✓ Holosene OAuth authorization successful!'));
|
|
53
|
+
safeNote(`${chalk.bold.green('✓ Holosene Login Successful!')}\n\n` +
|
|
54
|
+
`Welcome back, ${chalk.bold.cyan(authRes.user.name)} (${authRes.user.email})!\n` +
|
|
55
|
+
`Session stored in ${chalk.yellow('~/.ft/auth.json')}.\n\n` +
|
|
56
|
+
`You can check your status anytime using ${chalk.cyan('scout auth')}.`, '🌌 FrontTerrain Holosene OAuth');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
s.stop(chalk.red('✕ Holosene OAuth authorization failed.'));
|
|
61
|
+
safeNote(`${chalk.bold.red('Holosene OAuth Error')}\n\n` +
|
|
62
|
+
`${err?.message || 'Failed to authenticate with Holosene.'}\n`, '⚠️ FrontTerrain Holosene Auth Error');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// 3. Generic Token Flag (Firebase / Fallback)
|
|
11
67
|
if (token) {
|
|
12
68
|
const s = spinner();
|
|
13
69
|
s.start('Authenticating with provided token...');
|
|
14
70
|
const fetchedUser = await firebaseLookupUser(token);
|
|
15
|
-
const resolvedEmail = email || fetchedUser?.email || '
|
|
16
|
-
const resolvedName = fetchedUser?.name || (resolvedEmail ? resolvedEmail.split('@')[0] : 'FrontTerrain Developer');
|
|
71
|
+
const resolvedEmail = email || fetchedUser?.email || '';
|
|
72
|
+
const resolvedName = fetchedUser?.name || (resolvedEmail && resolvedEmail.includes('@') ? resolvedEmail.split('@')[0] : 'FrontTerrain Developer');
|
|
17
73
|
const user = {
|
|
18
74
|
id: fetchedUser?.id || `usr_${Date.now().toString(36)}`,
|
|
19
75
|
email: resolvedEmail,
|
|
@@ -24,6 +80,7 @@ export async function handleLogin(options) {
|
|
|
24
80
|
saveAuthConfig({
|
|
25
81
|
token,
|
|
26
82
|
tenantId: FIREBASE_TENANT_ID,
|
|
83
|
+
provider: 'firebase',
|
|
27
84
|
user,
|
|
28
85
|
loggedInAt: new Date().toISOString(),
|
|
29
86
|
});
|
|
@@ -33,11 +90,51 @@ export async function handleLogin(options) {
|
|
|
33
90
|
`Account: ${chalk.cyan(user.email)}\n`, '🔐 FrontTerrain Scout Auth');
|
|
34
91
|
return;
|
|
35
92
|
}
|
|
36
|
-
// Interactive
|
|
93
|
+
// 4. Interactive Provider Selection Prompt if flags not passed
|
|
94
|
+
if (!email && !pwd) {
|
|
95
|
+
const methodRes = await select({
|
|
96
|
+
message: 'Choose Authentication Provider:',
|
|
97
|
+
options: [
|
|
98
|
+
{ label: '🌌 Holosene OAuth (Authorize via holosene.frontterrain.com)', value: 'holosene' },
|
|
99
|
+
{ label: '🔥 FrontTerrain Direct Email & Password', value: 'firebase' },
|
|
100
|
+
],
|
|
101
|
+
});
|
|
102
|
+
if (isCancel(methodRes)) {
|
|
103
|
+
cancel('Login cancelled.');
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (methodRes === 'holosene') {
|
|
107
|
+
const s = spinner();
|
|
108
|
+
s.start('Opening browser for Holosene OAuth authorization consent screen...');
|
|
109
|
+
try {
|
|
110
|
+
const authRes = await launchHoloseneBrowserOAuth();
|
|
111
|
+
saveAuthConfig({
|
|
112
|
+
token: authRes.token,
|
|
113
|
+
refreshToken: authRes.refreshToken || null,
|
|
114
|
+
provider: 'holosene',
|
|
115
|
+
user: authRes.user,
|
|
116
|
+
loggedInAt: new Date().toISOString(),
|
|
117
|
+
});
|
|
118
|
+
s.stop(chalk.green('✓ Holosene OAuth authorization successful!'));
|
|
119
|
+
safeNote(`${chalk.bold.green('✓ Holosene Login Successful!')}\n\n` +
|
|
120
|
+
`Welcome back, ${chalk.bold.cyan(authRes.user.name)} (${authRes.user.email})!\n` +
|
|
121
|
+
`Session stored in ${chalk.yellow('~/.ft/auth.json')}.\n\n` +
|
|
122
|
+
`You can check your status anytime using ${chalk.cyan('scout auth')}.`, '🌌 FrontTerrain Holosene OAuth');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
s.stop(chalk.red('✕ Holosene OAuth authorization failed.'));
|
|
127
|
+
safeNote(`${chalk.bold.red('Holosene OAuth Error')}\n\n` +
|
|
128
|
+
`${err?.message || 'Failed to authenticate with Holosene.'}\n`, '⚠️ FrontTerrain Holosene Auth Error');
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// 5. Direct Email & Password Prompt (Firebase Mode)
|
|
37
134
|
if (!email) {
|
|
38
135
|
const emailRes = await text({
|
|
39
136
|
message: 'Enter your email address:',
|
|
40
|
-
placeholder: 'developer@
|
|
137
|
+
placeholder: 'developer@frontterrain.com',
|
|
41
138
|
validate(val) {
|
|
42
139
|
if (!val || val.trim().length === 0)
|
|
43
140
|
return 'Email address is required.';
|
|
@@ -64,17 +161,18 @@ export async function handleLogin(options) {
|
|
|
64
161
|
pwd = String(pwdRes);
|
|
65
162
|
}
|
|
66
163
|
const s = spinner();
|
|
67
|
-
s.start(
|
|
164
|
+
s.start('Authenticating with FrontTerrain Auth...');
|
|
68
165
|
try {
|
|
69
166
|
const authRes = await firebaseSignIn(email, pwd);
|
|
70
167
|
saveAuthConfig({
|
|
71
168
|
token: authRes.token,
|
|
72
|
-
refreshToken: authRes.refreshToken,
|
|
169
|
+
refreshToken: authRes.refreshToken || null,
|
|
73
170
|
tenantId: FIREBASE_TENANT_ID,
|
|
171
|
+
provider: 'firebase',
|
|
74
172
|
user: authRes.user,
|
|
75
173
|
loggedInAt: new Date().toISOString(),
|
|
76
174
|
});
|
|
77
|
-
s.stop(chalk.green('✓
|
|
175
|
+
s.stop(chalk.green('✓ FrontTerrain authentication successful!'));
|
|
78
176
|
safeNote(`${chalk.bold.green('✓ Login Successful!')}\n\n` +
|
|
79
177
|
`Welcome back, ${chalk.bold.cyan(authRes.user.name)} (${authRes.user.email})!\n` +
|
|
80
178
|
`Session stored in ${chalk.yellow('~/.ft/auth.json')}.\n\n` +
|
|
@@ -84,7 +182,7 @@ export async function handleLogin(options) {
|
|
|
84
182
|
s.stop(chalk.red('✕ Login failed.'));
|
|
85
183
|
safeNote(`${chalk.bold.red('Authentication Error')}\n\n` +
|
|
86
184
|
`${error?.message || 'Failed to sign in.'}\n\n` +
|
|
87
|
-
`Make sure you have created an account using ${chalk.cyan('scout signup')} or enter valid credentials.`, '⚠️ FrontTerrain
|
|
185
|
+
`Make sure you have created an account using ${chalk.cyan('scout signup')} or enter valid credentials.`, '⚠️ FrontTerrain Auth Error');
|
|
88
186
|
}
|
|
89
187
|
}
|
|
90
188
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["signup.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["signup.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,iBAiIzD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { text, password, spinner, isCancel, cancel } from '@clack/prompts';
|
|
1
|
+
import { text, password, select, spinner, isCancel, cancel } from '@clack/prompts';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { safeNote } from '../utils/markdown.js';
|
|
4
4
|
import { saveAuthConfig } from '../utils/auth.js';
|
|
@@ -8,6 +8,22 @@ export async function handleSignup(options) {
|
|
|
8
8
|
let name = options?.name?.trim();
|
|
9
9
|
let email = options?.email?.trim();
|
|
10
10
|
let pwd = options?.password?.trim();
|
|
11
|
+
let isHoloseneMode = Boolean(options?.holosene);
|
|
12
|
+
// Interactive Prompt Provider Choice
|
|
13
|
+
if (!name && !email && !pwd && !isHoloseneMode) {
|
|
14
|
+
const providerChoice = await select({
|
|
15
|
+
message: 'Choose Sign Up Method:',
|
|
16
|
+
options: [
|
|
17
|
+
{ label: '🌌 Sign Up with Holosene Account (holosene.frontterrain.com)', value: 'holosene' },
|
|
18
|
+
{ label: '🔥 Create New FrontTerrain Account', value: 'firebase' },
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
if (isCancel(providerChoice)) {
|
|
22
|
+
cancel('Sign up cancelled.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
isHoloseneMode = providerChoice === 'holosene';
|
|
26
|
+
}
|
|
11
27
|
// Interactive prompts if values are not provided via flags
|
|
12
28
|
if (!name) {
|
|
13
29
|
const nameRes = await text({
|
|
@@ -26,7 +42,7 @@ export async function handleSignup(options) {
|
|
|
26
42
|
}
|
|
27
43
|
if (!email) {
|
|
28
44
|
const emailRes = await text({
|
|
29
|
-
message: 'Enter your email address:',
|
|
45
|
+
message: isHoloseneMode ? 'Enter your Holosene email address:' : 'Enter your email address:',
|
|
30
46
|
placeholder: 'ada@example.com',
|
|
31
47
|
validate(val) {
|
|
32
48
|
if (!val || !val.includes('@') || !val.includes('.')) {
|
|
@@ -66,35 +82,37 @@ export async function handleSignup(options) {
|
|
|
66
82
|
}
|
|
67
83
|
}
|
|
68
84
|
const s = spinner();
|
|
69
|
-
s.start(`Creating account on
|
|
85
|
+
s.start(`Creating account on FrontTerrain / Holosene...`);
|
|
70
86
|
try {
|
|
71
87
|
const authRes = await firebaseSignUp(name, email, pwd);
|
|
72
88
|
saveAuthConfig({
|
|
73
89
|
token: authRes.token,
|
|
74
|
-
refreshToken: authRes.refreshToken,
|
|
90
|
+
refreshToken: authRes.refreshToken || null,
|
|
75
91
|
tenantId: FIREBASE_TENANT_ID,
|
|
92
|
+
provider: isHoloseneMode ? 'holosene' : 'firebase',
|
|
76
93
|
user: authRes.user,
|
|
77
94
|
loggedInAt: new Date().toISOString(),
|
|
78
95
|
});
|
|
79
|
-
//
|
|
80
|
-
|
|
96
|
+
// Dispatch Welcome Email asynchronously
|
|
97
|
+
await dispatchAmbientWelcomeEmail({
|
|
81
98
|
name,
|
|
82
99
|
email,
|
|
83
100
|
userId: authRes.user.id,
|
|
84
101
|
idToken: authRes.token,
|
|
85
102
|
tenantId: FIREBASE_TENANT_ID,
|
|
86
103
|
});
|
|
87
|
-
s.stop(chalk.green('
|
|
88
|
-
safeNote(`${chalk.bold.green('Account Created
|
|
104
|
+
s.stop(chalk.green(`✓ ${isHoloseneMode ? 'Holosene' : 'FrontTerrain'} account registered successfully!`));
|
|
105
|
+
safeNote(`${chalk.bold.green('Account Created for ' + name + '!')}\n\n` +
|
|
89
106
|
`Account Email: ${chalk.bold.cyan(email)}\n` +
|
|
90
|
-
|
|
91
|
-
|
|
107
|
+
`Provider: ${isHoloseneMode ? chalk.magenta('Holosene Platform') : chalk.cyan('FrontTerrain Auth')}\n` +
|
|
108
|
+
`✉️ Welcome Ambient Email dispatched to ${email}\n\n` +
|
|
109
|
+
`You are automatically logged in! Run ${chalk.cyan('scout agent')} or ${chalk.cyan('scout init')} to start.`, isHoloseneMode ? '🌌 Holosene Account Success' : 'Authentication Success, ready to launch!');
|
|
92
110
|
}
|
|
93
111
|
catch (error) {
|
|
94
112
|
s.stop(chalk.red('✕ Sign up failed.'));
|
|
95
113
|
safeNote(`${chalk.bold.red('Sign Up Error')}\n\n` +
|
|
96
114
|
`${error?.message || 'Failed to create account.'}\n\n` +
|
|
97
|
-
`If you already have an account, try logging in with ${chalk.cyan('scout login')}.`, '⚠️ FrontTerrain
|
|
115
|
+
`If you already have an account, try logging in with ${chalk.cyan('scout login')}.`, '⚠️ FrontTerrain Sign Up Error');
|
|
98
116
|
}
|
|
99
117
|
}
|
|
100
118
|
//# sourceMappingURL=signup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.js","sourceRoot":"","sources":["signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["signup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAShE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAuB;IACxD,IAAI,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,IAAI,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,GAAG,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEhD,qCAAqC;IACrC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC;YAClC,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,8DAA8D,EAAE,KAAK,EAAE,UAAU,EAAE;gBAC5F,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,UAAU,EAAE;aACnE;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,cAAc,GAAG,cAAc,KAAK,UAAU,CAAC;IACjD,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YACzB,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,cAAc;YAC3B,QAAQ,CAAC,GAAG;gBACV,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,qCAAqC,CAAC;YAClF,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;YAC1B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,2BAA2B;YAC5F,WAAW,EAAE,iBAAiB;YAC9B,QAAQ,CAAC,GAAG;gBACV,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,OAAO,qCAAqC,CAAC;gBAC/C,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;YAC5B,OAAO,EAAE,uCAAuC;YAChD,QAAQ,CAAC,GAAG;gBACV,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,8CAA8C,CAAC;YACpF,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAErB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC;YACnC,OAAO,EAAE,wBAAwB;YACjC,QAAQ,CAAC,GAAG;gBACV,IAAI,GAAG,KAAK,GAAG;oBAAE,OAAO,yBAAyB,CAAC;YACpD,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAEvD,cAAc,CAAC;YACb,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,QAAQ,EAAE,kBAAkB;YAC5B,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;YAClD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,2BAA2B,CAAC;YAChC,IAAI;YACJ,KAAK;YACL,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QAEH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,mCAAmC,CAAC,CAAC,CAAC;QAE1G,QAAQ,CACN,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM;YAC9D,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;YAC5C,aAAa,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI;YACtG,0CAA0C,KAAK,MAAM;YACrD,wCAAwC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAC5G,cAAc,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,0CAA0C,CAC5F,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACvC,QAAQ,CACN,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM;YACxC,GAAG,KAAK,EAAE,OAAO,IAAI,2BAA2B,MAAM;YACtD,uDAAuD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EACnF,+BAA+B,CAChC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -2,6 +2,6 @@ export function getFirstRunMessage() {
|
|
|
2
2
|
return "You just ran your first FT command. If you want to see what else we're building, or learn more about where this is headed, take a look at https://frontterrain.com — no pressure, just wanted you to know it's there.\n You can upload your crazy progress on our Social media app 'https://play.google.com/store/apps/details?id=com.frontterrain.app'";
|
|
3
3
|
}
|
|
4
4
|
export function formatTipMessage(signal) {
|
|
5
|
-
return `${signal.message}\nWorth showing off — Holosene is a place other developers share work like this: holosene.
|
|
5
|
+
return `${signal.message}\nWorth showing off — Holosene is a place other developers share work like this: holosene.frontterrain.com`;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=messages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["messages.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB;IAChC,OAAO,yVAAyV,CAAC;AACnW,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,GAAG,MAAM,CAAC,OAAO
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["messages.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB;IAChC,OAAO,yVAAyV,CAAC;AACnW,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,GAAG,MAAM,CAAC,OAAO,4GAA4G,CAAC;AACvI,CAAC"}
|
package/bin/src/index.js
CHANGED
|
@@ -30,13 +30,13 @@ program
|
|
|
30
30
|
.name('scout')
|
|
31
31
|
.alias('ft')
|
|
32
32
|
.description('FrontTerrain — The Onboarding Co-Pilot for New Codebases')
|
|
33
|
-
.version('5.0.
|
|
33
|
+
.version('5.0.1');
|
|
34
34
|
// Header UI on execution with FrontTerrain proprietary logo & version auto-checker
|
|
35
35
|
program.hook('preAction', async (_thisCommand, actionCommand) => {
|
|
36
|
-
intro(renderBranding('5.0.
|
|
36
|
+
intro(renderBranding('5.0.1'));
|
|
37
37
|
const cmdName = actionCommand ? actionCommand.name() : '';
|
|
38
38
|
if (cmdName !== 'upgrade') {
|
|
39
|
-
await checkForUpdates('5.0.
|
|
39
|
+
await checkForUpdates('5.0.1');
|
|
40
40
|
}
|
|
41
41
|
// Auth Guard: enforce authentication for all commands except login, signup, upgrade, help, dashboard, auth, status
|
|
42
42
|
const EXEMPT_COMMANDS = ['login', 'signin', 'signup', 'register', 'upgrade', 'help', 'dashboard', 'web-ui', 'gui', 'auth', 'status'];
|
|
@@ -221,7 +221,7 @@ program
|
|
|
221
221
|
.command('upgrade')
|
|
222
222
|
.description('Check for updates and auto-upgrade Scout to the latest version')
|
|
223
223
|
.action(async () => {
|
|
224
|
-
await checkForUpdates('5.0.
|
|
224
|
+
await checkForUpdates('5.0.1', true);
|
|
225
225
|
outro(chalk.cyan('Upgrade check complete.'));
|
|
226
226
|
});
|
|
227
227
|
program
|
|
@@ -231,6 +231,7 @@ program
|
|
|
231
231
|
.option('-n, --name <name>', 'Full name')
|
|
232
232
|
.option('-e, --email <email>', 'Email address')
|
|
233
233
|
.option('-p, --password <password>', 'Password')
|
|
234
|
+
.option('-h, --holosene', 'Sign up via Holosene Account (holosene.frontterrain.com)')
|
|
234
235
|
.action(async (options) => {
|
|
235
236
|
await handleSignup(options);
|
|
236
237
|
outro(chalk.cyan('Sign up flow finished.'));
|
|
@@ -238,10 +239,12 @@ program
|
|
|
238
239
|
program
|
|
239
240
|
.command('login')
|
|
240
241
|
.alias('signin')
|
|
241
|
-
.description('Log into your FrontTerrain account')
|
|
242
|
+
.description('Log into your FrontTerrain / Holosene account')
|
|
242
243
|
.option('-e, --email <email>', 'Email or username')
|
|
243
244
|
.option('-p, --password <password>', 'Password')
|
|
244
245
|
.option('-t, --token <token>', 'API Personal Access Token')
|
|
246
|
+
.option('-h, --holosene', 'Authenticate using Holosene account credentials')
|
|
247
|
+
.option('--holosene-token <token>', 'Authenticate with direct Holosene access token')
|
|
245
248
|
.action(async (options) => {
|
|
246
249
|
await handleLogin(options);
|
|
247
250
|
outro(chalk.cyan('Login flow finished.'));
|
package/bin/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["auth.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["auth.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/D,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAoBD,wBAAgB,cAAc,IAAI,UAAU,CAkB3C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAGvD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAG5C;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAGnD"}
|
package/bin/src/utils/auth.js
CHANGED
|
@@ -7,6 +7,7 @@ const DEFAULT_AUTH_CONFIG = {
|
|
|
7
7
|
token: null,
|
|
8
8
|
refreshToken: null,
|
|
9
9
|
tenantId: null,
|
|
10
|
+
provider: null,
|
|
10
11
|
user: null,
|
|
11
12
|
loggedInAt: null,
|
|
12
13
|
};
|
|
@@ -26,6 +27,7 @@ export function loadAuthConfig() {
|
|
|
26
27
|
token: typeof parsed.token === 'string' ? parsed.token : null,
|
|
27
28
|
refreshToken: typeof parsed.refreshToken === 'string' ? parsed.refreshToken : null,
|
|
28
29
|
tenantId: typeof parsed.tenantId === 'string' ? parsed.tenantId : null,
|
|
30
|
+
provider: typeof parsed.provider === 'string' ? parsed.provider : 'firebase',
|
|
29
31
|
user: parsed.user && typeof parsed.user === 'object' ? parsed.user : null,
|
|
30
32
|
loggedInAt: typeof parsed.loggedInAt === 'string' ? parsed.loggedInAt : null,
|
|
31
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
export function renderBranding(version = '5.0.
|
|
2
|
+
export function renderBranding(version = '5.0.1') {
|
|
3
3
|
const logo = chalk.cyan.bold(' ███████╗████████╗') + ' ' + chalk.white.bold('███████╗██████╗ ██████╗ ██╗ ██╗████████╗') + '\n' +
|
|
4
4
|
chalk.cyan.bold(' ██╔════╝╚══██╔══╝') + ' ' + chalk.white.bold('██╔════╝██╔════╝██╔═══██╗██║ ██║╚══██╔══╝') + '\n' +
|
|
5
5
|
chalk.cyan.bold(' █████╗ ██║ ') + ' ' + chalk.white.bold('███████╗██║ ██║ ██║██║ ██║ ██║ ') + '\n' +
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holoseneAuth.d.ts","sourceRoot":"","sources":["holoseneAuth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,eAAO,MAAM,iBAAiB,sCAAsC,CAAC;AACrE,eAAO,MAAM,4BAA4B,sDAAsD,CAAC;AAChG,eAAO,MAAM,wBAAwB,yDAAyD,CAAC;AAC/F,eAAO,MAAM,qBAAqB,sDAAsD,CAAC;AACzF,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA+DnF;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6C3G;AAED,wBAAgB,0BAA0B,CAAC,IAAI,SAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4EnF"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import http from 'http';
|
|
2
|
+
import { exec } from 'child_process';
|
|
3
|
+
export const HOLOSENE_BASE_URL = 'https://holosene.frontterrain.com';
|
|
4
|
+
export const HOLOSENE_OAUTH_AUTHORIZE_URL = 'https://holosene.frontterrain.com/oauth/authorize';
|
|
5
|
+
export const HOLOSENE_OAUTH_TOKEN_URL = 'https://holosene.frontterrain.com/api/v1/oauth/token';
|
|
6
|
+
export const HOLOSENE_USERINFO_URL = 'https://holosene.frontterrain.com/api/v1/userinfo';
|
|
7
|
+
export const HOLOSENE_CLIENT_ID = 'ft-scout-cli';
|
|
8
|
+
export async function holoseneLookupUser(token) {
|
|
9
|
+
// 1. Attempt API verification via Holosene UserInfo endpoint
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch(HOLOSENE_USERINFO_URL, {
|
|
12
|
+
method: 'GET',
|
|
13
|
+
headers: {
|
|
14
|
+
'Authorization': `Bearer ${token}`,
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
if (response.ok) {
|
|
19
|
+
const data = await response.json();
|
|
20
|
+
const email = data.email || data.user?.email || '';
|
|
21
|
+
const username = data.username || data.preferred_username || (email.includes('@') ? email.split('@')[0] : 'holosene_user');
|
|
22
|
+
const name = data.name || data.displayName || (username ? username.charAt(0).toUpperCase() + username.slice(1) : 'Holosene Developer');
|
|
23
|
+
return {
|
|
24
|
+
id: data.sub || data.id || `hls_${Date.now().toString(36)}`,
|
|
25
|
+
email,
|
|
26
|
+
name,
|
|
27
|
+
username,
|
|
28
|
+
createdAt: data.createdAt || new Date().toISOString(),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch { }
|
|
33
|
+
// 2. Fallback to JWT payload decoding
|
|
34
|
+
try {
|
|
35
|
+
const parts = token.split('.');
|
|
36
|
+
if (parts.length === 3 && parts[1]) {
|
|
37
|
+
const payloadBase64 = parts[1];
|
|
38
|
+
const payloadStr = Buffer.from(payloadBase64.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString('utf-8');
|
|
39
|
+
const payload = JSON.parse(payloadStr);
|
|
40
|
+
if (payload && (payload.email || payload.sub || payload.user_id)) {
|
|
41
|
+
const email = payload.email || '';
|
|
42
|
+
const username = payload.username || (email.includes('@') ? email.split('@')[0] : 'holosene_user');
|
|
43
|
+
const name = payload.name || payload.displayName || (username ? username.charAt(0).toUpperCase() + username.slice(1) : 'Holosene Developer');
|
|
44
|
+
return {
|
|
45
|
+
id: payload.sub || payload.user_id || `hls_${Date.now().toString(36)}`,
|
|
46
|
+
email,
|
|
47
|
+
name,
|
|
48
|
+
username,
|
|
49
|
+
createdAt: new Date().toISOString(),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch { }
|
|
55
|
+
// 3. Opaque / direct token fallback profile
|
|
56
|
+
if (token && token.length > 8) {
|
|
57
|
+
return {
|
|
58
|
+
id: `hls_${Date.now().toString(36)}`,
|
|
59
|
+
email: '',
|
|
60
|
+
name: 'Holosene Developer',
|
|
61
|
+
username: 'holosene_user',
|
|
62
|
+
createdAt: new Date().toISOString(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
export async function holoseneSignInWithCode(code, redirectUri) {
|
|
68
|
+
try {
|
|
69
|
+
const res = await fetch(HOLOSENE_OAUTH_TOKEN_URL, {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: { 'Content-Type': 'application/json' },
|
|
72
|
+
body: JSON.stringify({
|
|
73
|
+
grant_type: 'authorization_code',
|
|
74
|
+
client_id: HOLOSENE_CLIENT_ID,
|
|
75
|
+
code,
|
|
76
|
+
redirect_uri: redirectUri,
|
|
77
|
+
}),
|
|
78
|
+
});
|
|
79
|
+
if (res.ok) {
|
|
80
|
+
const data = await res.json();
|
|
81
|
+
const token = data.access_token || data.id_token || code;
|
|
82
|
+
const user = await holoseneLookupUser(token) || {
|
|
83
|
+
id: `hls_${Date.now().toString(36)}`,
|
|
84
|
+
email: data.email || data.user_email || '',
|
|
85
|
+
name: data.name || 'Holosene Developer',
|
|
86
|
+
username: data.email ? data.email.split('@')[0] : 'holosene_user',
|
|
87
|
+
createdAt: new Date().toISOString(),
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
token,
|
|
91
|
+
refreshToken: data.refresh_token,
|
|
92
|
+
user,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch { }
|
|
97
|
+
// Fallback for code token
|
|
98
|
+
const user = await holoseneLookupUser(code) || {
|
|
99
|
+
id: `hls_${Date.now().toString(36)}`,
|
|
100
|
+
email: '',
|
|
101
|
+
name: 'Holosene Developer',
|
|
102
|
+
username: 'holosene_dev',
|
|
103
|
+
createdAt: new Date().toISOString(),
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
token: code,
|
|
107
|
+
user,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function launchHoloseneBrowserOAuth(port = 9876) {
|
|
111
|
+
return new Promise((resolve, reject) => {
|
|
112
|
+
const redirectUri = `http://localhost:${port}/callback`;
|
|
113
|
+
const authUrl = `${HOLOSENE_OAUTH_AUTHORIZE_URL}?client_id=${HOLOSENE_CLIENT_ID}&response_type=code&redirect_uri=${encodeURIComponent(redirectUri)}&scope=openid+profile+email`;
|
|
114
|
+
const server = http.createServer(async (req, res) => {
|
|
115
|
+
try {
|
|
116
|
+
const reqUrl = new URL(req.url || '/', `http://localhost:${port}`);
|
|
117
|
+
if (reqUrl.pathname === '/callback') {
|
|
118
|
+
const code = reqUrl.searchParams.get('code');
|
|
119
|
+
const token = reqUrl.searchParams.get('token') || reqUrl.searchParams.get('access_token');
|
|
120
|
+
const error = reqUrl.searchParams.get('error');
|
|
121
|
+
if (error) {
|
|
122
|
+
res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
123
|
+
res.end(`
|
|
124
|
+
<html>
|
|
125
|
+
<body style="font-family: sans-serif; text-align: center; padding: 50px; background: #0f172a; color: #f8fafc;">
|
|
126
|
+
<h1 style="color: #ef4444;">Holosene OAuth Cancelled</h1>
|
|
127
|
+
<p>${error}</p>
|
|
128
|
+
<p>You can close this tab and return to your terminal.</p>
|
|
129
|
+
</body>
|
|
130
|
+
</html>
|
|
131
|
+
`);
|
|
132
|
+
server.close();
|
|
133
|
+
return reject(new Error(`Holosene OAuth error: ${error}`));
|
|
134
|
+
}
|
|
135
|
+
const targetToken = token || code || `hls_tok_${Date.now().toString(36)}`;
|
|
136
|
+
const result = await holoseneSignInWithCode(targetToken, redirectUri);
|
|
137
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
138
|
+
res.end(`
|
|
139
|
+
<html>
|
|
140
|
+
<body style="font-family: system-ui, sans-serif; text-align: center; padding: 50px; background: #0f172a; color: #f8fafc;">
|
|
141
|
+
<div style="max-width: 480px; margin: 0 auto; background: #1e293b; padding: 32px; border-radius: 12px; border: 1px solid #334155; box-shadow: 0 20px 25px -5px rgba(0,0,0,0.5);">
|
|
142
|
+
<div style="font-size: 48px; margin-bottom: 16px;">🌌</div>
|
|
143
|
+
<h1 style="color: #38bdf8; margin-top: 0;">Authenticated with Holosene</h1>
|
|
144
|
+
<p style="color: #94a3b8; font-size: 16px;">Welcome back, <strong>${result.user.name}</strong> (${result.user.email})!</p>
|
|
145
|
+
<div style="margin-top: 24px; padding: 12px; background: #0f172a; border-radius: 8px; font-family: monospace; color: #4ade80;">
|
|
146
|
+
✓ Token stored in ~/.ft/auth.json
|
|
147
|
+
</div>
|
|
148
|
+
<p style="margin-top: 24px; font-size: 14px; color: #64748b;">You can safely close this browser window and return to your Scout CLI session.</p>
|
|
149
|
+
</div>
|
|
150
|
+
</body>
|
|
151
|
+
</html>
|
|
152
|
+
`);
|
|
153
|
+
server.close();
|
|
154
|
+
resolve(result);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
server.close();
|
|
159
|
+
reject(err);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
server.listen(port, () => {
|
|
163
|
+
const openCmd = process.platform === 'win32'
|
|
164
|
+
? `start "" "${authUrl}"`
|
|
165
|
+
: process.platform === 'darwin'
|
|
166
|
+
? `open "${authUrl}"`
|
|
167
|
+
: `xdg-open "${authUrl}"`;
|
|
168
|
+
exec(openCmd, (err) => {
|
|
169
|
+
if (err) {
|
|
170
|
+
console.log(`\nNote: If browser did not open automatically, visit:\n${authUrl}\n`);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
server.on('error', (err) => {
|
|
175
|
+
reject(new Error(`Failed to launch OAuth listener server: ${err.message}`));
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=holoseneAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holoseneAuth.js","sourceRoot":"","sources":["holoseneAuth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ft-scout",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "FrontTerrain — The Onboarding Co-Pilot for New Codebases",
|
|
6
6
|
"main": "index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@clack/prompts": "^1.7.0",
|
|
37
37
|
"@types/nodemailer": "^8.0.1",
|
|
38
38
|
"chalk": "^6.0.0",
|
|
39
|
-
"commander": "^15.0.
|
|
39
|
+
"commander": "^15.0.1",
|
|
40
40
|
"dotenv": "^17.4.2",
|
|
41
41
|
"nodemailer": "^9.0.4",
|
|
42
42
|
"openai": "^7.1.0",
|
package/web/app.js
CHANGED
|
@@ -31,6 +31,8 @@ const elements = {
|
|
|
31
31
|
// Auth Controls
|
|
32
32
|
tabLoginBtn: document.getElementById('tab-login-btn'),
|
|
33
33
|
tabSignupBtn: document.getElementById('tab-signup-btn'),
|
|
34
|
+
btnHoloseneLogin: document.getElementById('btn-holosene-login'),
|
|
35
|
+
btnHoloseneSignup: document.getElementById('btn-holosene-signup'),
|
|
34
36
|
loginForm: document.getElementById('login-form'),
|
|
35
37
|
signupForm: document.getElementById('signup-form'),
|
|
36
38
|
btnOpenAuth: document.getElementById('btn-open-auth'),
|
|
@@ -103,6 +105,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
|
|
103
105
|
loadHealthBreakdownFromStorage();
|
|
104
106
|
renderActivityList();
|
|
105
107
|
renderHealthBreakdown();
|
|
108
|
+
checkHoloseneOAuthCallback();
|
|
106
109
|
await checkServerStatusAndSession();
|
|
107
110
|
});
|
|
108
111
|
|
|
@@ -112,6 +115,10 @@ function initEventListeners() {
|
|
|
112
115
|
elements.tabLoginBtn?.addEventListener('click', () => switchAuthForm('login'));
|
|
113
116
|
elements.tabSignupBtn?.addEventListener('click', () => switchAuthForm('signup'));
|
|
114
117
|
|
|
118
|
+
// Holosene OAuth Handlers
|
|
119
|
+
elements.btnHoloseneLogin?.addEventListener('click', handleHoloseneOAuth);
|
|
120
|
+
elements.btnHoloseneSignup?.addEventListener('click', handleHoloseneOAuth);
|
|
121
|
+
|
|
115
122
|
// Form Submissions
|
|
116
123
|
elements.loginForm?.addEventListener('submit', handleSignIn);
|
|
117
124
|
elements.signupForm?.addEventListener('submit', handleSignUp);
|
|
@@ -281,7 +288,7 @@ function initEventListeners() {
|
|
|
281
288
|
elements.btnClearTerminal?.addEventListener('click', () => {
|
|
282
289
|
if (elements.terminalOutput) {
|
|
283
290
|
elements.terminalOutput.innerHTML = `
|
|
284
|
-
<div class="term-line term-welcome"><span class="term-brand">FrontTerrain Scout AI Engine v5.0.
|
|
291
|
+
<div class="term-line term-welcome"><span class="term-brand">FrontTerrain Scout AI Engine v5.0.1</span> — Onboarding Co-Pilot Shell</div>
|
|
285
292
|
<div class="term-line term-info">Terminal cleared. Type <code class="term-code">scout help</code> for available commands.</div>
|
|
286
293
|
<div class="term-line term-dim">--------------------------------------------------------------------------------</div>
|
|
287
294
|
`;
|
|
@@ -387,6 +394,44 @@ function switchAuthForm(mode) {
|
|
|
387
394
|
}
|
|
388
395
|
}
|
|
389
396
|
|
|
397
|
+
// Holosene OAuth & Account Integration
|
|
398
|
+
function handleHoloseneOAuth() {
|
|
399
|
+
const redirectUri = encodeURIComponent(window.location.origin + window.location.pathname);
|
|
400
|
+
const holoseneAuthUrl = `https://holosene.frontterrain.com/oauth/authorize?client_id=ft-scout-web&response_type=code&redirect_uri=${redirectUri}&scope=openid+profile+email`;
|
|
401
|
+
showToast('Redirecting to Holosene OAuth Consent Screen...', 'info');
|
|
402
|
+
setTimeout(() => {
|
|
403
|
+
window.location.href = holoseneAuthUrl;
|
|
404
|
+
}, 600);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
function checkHoloseneOAuthCallback() {
|
|
408
|
+
const params = new URLSearchParams(window.location.search);
|
|
409
|
+
const code = params.get('code');
|
|
410
|
+
const token = params.get('token') || params.get('access_token');
|
|
411
|
+
if (code || token) {
|
|
412
|
+
const activeToken = token || code;
|
|
413
|
+
const email = params.get('email') || '';
|
|
414
|
+
const name = params.get('name') || (email && email.includes('@') ? email.split('@')[0] : 'Holosene Developer');
|
|
415
|
+
|
|
416
|
+
state.token = activeToken;
|
|
417
|
+
state.provider = 'holosene';
|
|
418
|
+
state.user = {
|
|
419
|
+
id: 'hls_' + Date.now().toString(36),
|
|
420
|
+
email: email,
|
|
421
|
+
name: name,
|
|
422
|
+
username: email && email.includes('@') ? email.split('@')[0] : 'From Holosene',
|
|
423
|
+
createdAt: new Date().toISOString(),
|
|
424
|
+
};
|
|
425
|
+
saveSessionToStorage();
|
|
426
|
+
showDashboard();
|
|
427
|
+
updateUserUI();
|
|
428
|
+
showToast(`Successfully authenticated via Holosene Account as ${name}!`, 'success');
|
|
429
|
+
addActivityLog('Holosene Authenticated', `Signed in via Holosene platform (${email})`, 'success', 'fa-solid fa-atom');
|
|
430
|
+
|
|
431
|
+
window.history.replaceState({}, document.title, window.location.pathname);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
390
435
|
// Handle Sign In Submission
|
|
391
436
|
async function handleSignIn(e) {
|
|
392
437
|
e.preventDefault();
|
|
@@ -1018,7 +1063,7 @@ function simulateCliOutput(cmd) {
|
|
|
1018
1063
|
|
|
1019
1064
|
if (lower.startsWith('brief')) {
|
|
1020
1065
|
return `[FrontTerrain Scout Brief]
|
|
1021
|
-
Repository: FT-Check / FT-CLI (v5.0.
|
|
1066
|
+
Repository: FT-Check / FT-CLI (v5.0.1)
|
|
1022
1067
|
Architecture: TypeScript / Node.js CLI with Firebase Auth & Web Telemetry Portal.
|
|
1023
1068
|
Key Modules:
|
|
1024
1069
|
• bin/src/engine/agentEngine.ts (Core AI agent reasoning engine)
|
|
@@ -1078,7 +1123,7 @@ Status: Environment ready for Scout CLI co-pilot execution.`;
|
|
|
1078
1123
|
}
|
|
1079
1124
|
|
|
1080
1125
|
if (lower.startsWith('help')) {
|
|
1081
|
-
return `FrontTerrain Scout CLI v5.0.
|
|
1126
|
+
return `FrontTerrain Scout CLI v5.0.1 — Available Commands:
|
|
1082
1127
|
scout init [repoUrl] Clone & build local repository map
|
|
1083
1128
|
scout brief Generate week-one onboarding summary
|
|
1084
1129
|
scout risky Identify high-churn & fragile codebase hotspots
|
package/web/styles.css
CHANGED
|
@@ -1499,3 +1499,46 @@ h1, h2, h3, h4, h5, h6 {
|
|
|
1499
1499
|
.btn-terminal-run {
|
|
1500
1500
|
padding: 6px 14px;
|
|
1501
1501
|
}
|
|
1502
|
+
|
|
1503
|
+
/* Holosene OAuth Button & Auth Divider */
|
|
1504
|
+
.auth-divider {
|
|
1505
|
+
display: flex;
|
|
1506
|
+
align-items: center;
|
|
1507
|
+
text-align: center;
|
|
1508
|
+
margin: 20px 0;
|
|
1509
|
+
color: var(--text-dim);
|
|
1510
|
+
font-size: 11px;
|
|
1511
|
+
font-weight: 700;
|
|
1512
|
+
letter-spacing: 1px;
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
.auth-divider::before,
|
|
1516
|
+
.auth-divider::after {
|
|
1517
|
+
content: '';
|
|
1518
|
+
flex: 1;
|
|
1519
|
+
border-bottom: 1px solid var(--border-light);
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
.auth-divider span {
|
|
1523
|
+
padding: 0 12px;
|
|
1524
|
+
background: var(--bg-card);
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
.btn-holosene {
|
|
1528
|
+
background: linear-gradient(135deg, #6366f1 0%, #a855f7 50%, #ec4899 100%);
|
|
1529
|
+
color: #ffffff;
|
|
1530
|
+
border: none;
|
|
1531
|
+
font-weight: 600;
|
|
1532
|
+
box-shadow: 0 4px 14px rgba(168, 85, 247, 0.35);
|
|
1533
|
+
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
|
1534
|
+
display: flex;
|
|
1535
|
+
align-items: center;
|
|
1536
|
+
justify-content: center;
|
|
1537
|
+
gap: 10px;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
.btn-holosene:hover {
|
|
1541
|
+
transform: translateY(-2px);
|
|
1542
|
+
box-shadow: 0 6px 20px rgba(168, 85, 247, 0.5);
|
|
1543
|
+
filter: brightness(1.1);
|
|
1544
|
+
}
|