ft-scout 4.0.2 → 4.0.4
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/bin/src/commands/agent.d.ts.map +1 -1
- package/bin/src/commands/agent.js +3 -2
- package/bin/src/commands/agent.js.map +1 -1
- package/bin/src/commands/audit.js.map +1 -1
- package/bin/src/commands/authCommand.d.ts.map +1 -0
- package/bin/src/commands/authCommand.js +31 -0
- package/bin/src/commands/authCommand.js.map +1 -0
- package/bin/src/commands/brief.js.map +1 -1
- package/bin/src/commands/configCommand.js.map +1 -1
- package/bin/src/commands/history.js.map +1 -1
- package/bin/src/commands/init.js.map +1 -1
- package/bin/src/commands/login.d.ts.map +1 -0
- package/bin/src/commands/login.js +91 -0
- package/bin/src/commands/login.js.map +1 -0
- package/bin/src/commands/logout.d.ts.map +1 -0
- package/bin/src/commands/logout.js +15 -0
- package/bin/src/commands/logout.js.map +1 -0
- package/bin/src/commands/recommend.js.map +1 -1
- package/bin/src/commands/setup.js.map +1 -1
- package/bin/src/commands/signup.d.ts.map +1 -0
- package/bin/src/commands/signup.js +92 -0
- package/bin/src/commands/signup.js.map +1 -0
- package/bin/src/commands/undo.js.map +1 -1
- package/bin/src/engine/agentEngine.d.ts.map +1 -1
- package/bin/src/engine/agentEngine.js +165 -24
- package/bin/src/engine/agentEngine.js.map +1 -1
- package/bin/src/engine/git.js.map +1 -1
- package/bin/src/engine/llm.d.ts.map +1 -1
- package/bin/src/engine/llm.js +17 -0
- package/bin/src/engine/llm.js.map +1 -1
- package/bin/src/engine/verifier.d.ts.map +1 -1
- package/bin/src/engine/verifier.js +43 -5
- package/bin/src/engine/verifier.js.map +1 -1
- package/bin/src/engine/web.js.map +1 -1
- package/bin/src/index.js +77 -6
- package/bin/src/index.js.map +1 -1
- package/bin/src/utils/auth.d.ts.map +1 -0
- package/bin/src/utils/auth.js +57 -0
- package/bin/src/utils/auth.js.map +1 -0
- package/bin/src/utils/branding.js +1 -1
- package/bin/src/utils/firebaseAuth.d.ts.map +1 -0
- package/bin/src/utils/firebaseAuth.js +125 -0
- package/bin/src/utils/firebaseAuth.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export const FIREBASE_API_KEY = 'AIzaSyCMVNDgR8EejfXofUy87L7hsKxi3E_C3lg';
|
|
2
|
+
export const FIREBASE_PROJECT_ID = 'frontterrain';
|
|
3
|
+
export const FIREBASE_TENANT_ID = 'ft-scout-auth-gc2v5';
|
|
4
|
+
export const FIREBASE_TENANT_NAME = 'ft-scout-auth';
|
|
5
|
+
const IDENTITY_TOOLKIT_BASE = 'https://identitytoolkit.googleapis.com/v1/accounts';
|
|
6
|
+
function parseFirebaseError(errData, defaultMsg) {
|
|
7
|
+
const code = errData?.error?.message || errData?.message || '';
|
|
8
|
+
if (code.includes('EMAIL_NOT_FOUND'))
|
|
9
|
+
return 'No account found with this email address.';
|
|
10
|
+
if (code.includes('INVALID_PASSWORD') || code.includes('INVALID_LOGIN_CREDENTIALS'))
|
|
11
|
+
return 'Invalid password entered.';
|
|
12
|
+
if (code.includes('EMAIL_EXISTS'))
|
|
13
|
+
return 'An account already exists with this email address.';
|
|
14
|
+
if (code.includes('WEAK_PASSWORD'))
|
|
15
|
+
return 'Password is too weak. Must be at least 6 characters.';
|
|
16
|
+
if (code.includes('INVALID_EMAIL'))
|
|
17
|
+
return 'Invalid email address format.';
|
|
18
|
+
if (code.includes('USER_DISABLED'))
|
|
19
|
+
return 'This user account has been disabled.';
|
|
20
|
+
if (code.includes('TOO_MANY_ATTEMPTS_TRY_LATER'))
|
|
21
|
+
return 'Too many failed login attempts. Please try again later.';
|
|
22
|
+
if (code.includes('TENANT_NOT_FOUND'))
|
|
23
|
+
return `Firebase tenant "${FIREBASE_TENANT_ID}" not found or misconfigured.`;
|
|
24
|
+
return `${defaultMsg} (${code || JSON.stringify(errData)})`;
|
|
25
|
+
}
|
|
26
|
+
export async function firebaseSignIn(email, password) {
|
|
27
|
+
const url = `${IDENTITY_TOOLKIT_BASE}:signInWithPassword?key=${FIREBASE_API_KEY}`;
|
|
28
|
+
const response = await fetch(url, {
|
|
29
|
+
method: 'POST',
|
|
30
|
+
headers: { 'Content-Type': 'application/json' },
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
email,
|
|
33
|
+
password,
|
|
34
|
+
returnSecureToken: true,
|
|
35
|
+
tenantId: FIREBASE_TENANT_ID,
|
|
36
|
+
}),
|
|
37
|
+
});
|
|
38
|
+
const data = await response.json();
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
throw new Error(parseFirebaseError(data, 'Firebase login failed.'));
|
|
41
|
+
}
|
|
42
|
+
const username = email.includes('@') ? email.split('@')[0] : email;
|
|
43
|
+
const displayName = data.displayName || username.charAt(0).toUpperCase() + username.slice(1);
|
|
44
|
+
const user = {
|
|
45
|
+
id: data.localId,
|
|
46
|
+
email: data.email || email,
|
|
47
|
+
name: displayName,
|
|
48
|
+
username,
|
|
49
|
+
createdAt: new Date().toISOString(),
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
token: data.idToken,
|
|
53
|
+
refreshToken: data.refreshToken,
|
|
54
|
+
expiresIn: data.expiresIn,
|
|
55
|
+
user,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export async function firebaseSignUp(name, email, password) {
|
|
59
|
+
const url = `${IDENTITY_TOOLKIT_BASE}:signUp?key=${FIREBASE_API_KEY}`;
|
|
60
|
+
const response = await fetch(url, {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers: { 'Content-Type': 'application/json' },
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
email,
|
|
65
|
+
password,
|
|
66
|
+
returnSecureToken: true,
|
|
67
|
+
tenantId: FIREBASE_TENANT_ID,
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
const data = await response.json();
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
throw new Error(parseFirebaseError(data, 'Firebase sign up failed.'));
|
|
73
|
+
}
|
|
74
|
+
const idToken = data.idToken;
|
|
75
|
+
// Update Display Name in Firebase
|
|
76
|
+
try {
|
|
77
|
+
const updateUrl = `${IDENTITY_TOOLKIT_BASE}:update?key=${FIREBASE_API_KEY}`;
|
|
78
|
+
await fetch(updateUrl, {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers: { 'Content-Type': 'application/json' },
|
|
81
|
+
body: JSON.stringify({
|
|
82
|
+
idToken,
|
|
83
|
+
displayName: name,
|
|
84
|
+
tenantId: FIREBASE_TENANT_ID,
|
|
85
|
+
}),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch { }
|
|
89
|
+
const username = email.split('@')[0];
|
|
90
|
+
const user = {
|
|
91
|
+
id: data.localId,
|
|
92
|
+
email: data.email || email,
|
|
93
|
+
name,
|
|
94
|
+
username,
|
|
95
|
+
createdAt: new Date().toISOString(),
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
token: idToken,
|
|
99
|
+
refreshToken: data.refreshToken,
|
|
100
|
+
expiresIn: data.expiresIn,
|
|
101
|
+
user,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export async function firebaseLookupToken(idToken) {
|
|
105
|
+
const url = `${IDENTITY_TOOLKIT_BASE}:lookup?key=${FIREBASE_API_KEY}`;
|
|
106
|
+
try {
|
|
107
|
+
const response = await fetch(url, {
|
|
108
|
+
method: 'POST',
|
|
109
|
+
headers: { 'Content-Type': 'application/json' },
|
|
110
|
+
body: JSON.stringify({
|
|
111
|
+
idToken,
|
|
112
|
+
tenantId: FIREBASE_TENANT_ID,
|
|
113
|
+
}),
|
|
114
|
+
});
|
|
115
|
+
const data = await response.json();
|
|
116
|
+
if (response.ok && data.users && data.users.length > 0) {
|
|
117
|
+
return { valid: true, email: data.users[0].email };
|
|
118
|
+
}
|
|
119
|
+
return { valid: false };
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return { valid: false };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=firebaseAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firebaseAuth.js","sourceRoot":"","sources":["firebaseAuth.ts"],"names":[],"mappings":"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"}
|