ft-scout 9.0.4 → 9.0.6

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.
Files changed (57) hide show
  1. package/.firebase/hosting.d2Vi.cache +8 -7
  2. package/AUTONOMOUS_FEATURES.md +192 -0
  3. package/README.md +67 -35
  4. package/bin/src/commands/agent.d.ts.map +1 -1
  5. package/bin/src/commands/agent.js +21 -8
  6. package/bin/src/commands/agent.js.map +1 -1
  7. package/bin/src/commands/login.d.ts.map +1 -1
  8. package/bin/src/commands/login.js +3 -1
  9. package/bin/src/commands/login.js.map +1 -1
  10. package/bin/src/engine/actionVerifier.d.ts.map +1 -1
  11. package/bin/src/engine/actionVerifier.js +9 -1
  12. package/bin/src/engine/actionVerifier.js.map +1 -1
  13. package/bin/src/engine/agentEngine.d.ts.map +1 -1
  14. package/bin/src/engine/agentEngine.js +319 -13
  15. package/bin/src/engine/agentEngine.js.map +1 -1
  16. package/bin/src/engine/browser/browserController.d.ts.map +1 -1
  17. package/bin/src/engine/browser/browserController.js +53 -13
  18. package/bin/src/engine/browser/browserController.js.map +1 -1
  19. package/bin/src/engine/computer/computerController.d.ts.map +1 -1
  20. package/bin/src/engine/computer/computerController.js +564 -296
  21. package/bin/src/engine/computer/computerController.js.map +1 -1
  22. package/bin/src/engine/computer/computerDiagnostic.d.ts.map +1 -0
  23. package/bin/src/engine/computer/computerDiagnostic.js +71 -0
  24. package/bin/src/engine/computer/computerDiagnostic.js.map +1 -0
  25. package/bin/src/engine/computer/index.d.ts.map +1 -1
  26. package/bin/src/engine/computer/index.js +1 -0
  27. package/bin/src/engine/computer/index.js.map +1 -1
  28. package/bin/src/engine/computer/mockComputer.d.ts.map +1 -1
  29. package/bin/src/engine/computer/mockComputer.js +104 -8
  30. package/bin/src/engine/computer/mockComputer.js.map +1 -1
  31. package/bin/src/engine/computer/scoutDriver.cs +1161 -0
  32. package/bin/src/engine/computer/scout_driver.exe +0 -0
  33. package/bin/src/engine/runtime/agentRuntime.d.ts.map +1 -1
  34. package/bin/src/engine/runtime/agentRuntime.js +375 -20
  35. package/bin/src/engine/runtime/agentRuntime.js.map +1 -1
  36. package/bin/src/engine/safety.d.ts.map +1 -1
  37. package/bin/src/engine/safety.js +17 -6
  38. package/bin/src/engine/safety.js.map +1 -1
  39. package/bin/src/engine/toolRegistry.d.ts.map +1 -1
  40. package/bin/src/engine/toolRegistry.js +209 -0
  41. package/bin/src/engine/toolRegistry.js.map +1 -1
  42. package/bin/src/engine/workspace/agentWorkspace.d.ts.map +1 -1
  43. package/bin/src/engine/workspace/agentWorkspace.js +21 -0
  44. package/bin/src/engine/workspace/agentWorkspace.js.map +1 -1
  45. package/bin/src/index.js +5 -4
  46. package/bin/src/index.js.map +1 -1
  47. package/bin/src/utils/auth.d.ts.map +1 -1
  48. package/bin/src/utils/auth.js +14 -1
  49. package/bin/src/utils/auth.js.map +1 -1
  50. package/bin/src/utils/branding.js +1 -1
  51. package/bin/src/utils/holoseneAuth.d.ts.map +1 -1
  52. package/bin/src/utils/holoseneAuth.js +169 -41
  53. package/bin/src/utils/holoseneAuth.js.map +1 -1
  54. package/firebase.json +8 -0
  55. package/package.json +1 -1
  56. package/web/app.js +3 -3
  57. package/web/styles.css +2 -2
@@ -1,12 +1,12 @@
1
1
  import http from 'http';
2
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';
3
+ export const HOLOSENE_BASE_URL = process.env.HOLOSENE_BASE_URL || 'https://scout.frontterrain.com';
4
+ export const HOLOSENE_OAUTH_AUTHORIZE_URL = process.env.HOLOSENE_OAUTH_AUTHORIZE_URL || `${HOLOSENE_BASE_URL}/oauth/authorize`;
5
+ export const HOLOSENE_OAUTH_TOKEN_URL = process.env.HOLOSENE_OAUTH_TOKEN_URL || `${HOLOSENE_BASE_URL}/api/v1/oauth/token`;
6
+ export const HOLOSENE_USERINFO_URL = process.env.HOLOSENE_USERINFO_URL || `${HOLOSENE_BASE_URL}/api/v1/userinfo`;
7
7
  export const HOLOSENE_CLIENT_ID = 'ft-scout-cli';
8
8
  export async function holoseneLookupUser(token) {
9
- // 1. Attempt API verification via Holosene UserInfo endpoint
9
+ // 1. Attempt API verification via Holosene UserInfo endpoint if online
10
10
  try {
11
11
  const response = await fetch(HOLOSENE_USERINFO_URL, {
12
12
  method: 'GET',
@@ -26,6 +26,7 @@ export async function holoseneLookupUser(token) {
26
26
  name,
27
27
  username,
28
28
  createdAt: data.createdAt || new Date().toISOString(),
29
+ tier: data.tier || 'pro',
29
30
  };
30
31
  }
31
32
  }
@@ -37,7 +38,7 @@ export async function holoseneLookupUser(token) {
37
38
  const payloadBase64 = parts[1];
38
39
  const payloadStr = Buffer.from(payloadBase64.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString('utf-8');
39
40
  const payload = JSON.parse(payloadStr);
40
- if (payload && (payload.email || payload.sub || payload.user_id)) {
41
+ if (payload && (payload.email || payload.sub || payload.user_id || payload.name)) {
41
42
  const email = payload.email || '';
42
43
  const username = payload.username || (email.includes('@') ? email.split('@')[0] : 'holosene_user');
43
44
  const name = payload.name || payload.displayName || (username ? username.charAt(0).toUpperCase() + username.slice(1) : 'Holosene Developer');
@@ -47,6 +48,7 @@ export async function holoseneLookupUser(token) {
47
48
  name,
48
49
  username,
49
50
  createdAt: new Date().toISOString(),
51
+ tier: payload.tier || 'pro',
50
52
  };
51
53
  }
52
54
  }
@@ -56,10 +58,11 @@ export async function holoseneLookupUser(token) {
56
58
  if (token && token.length > 8) {
57
59
  return {
58
60
  id: `hls_${Date.now().toString(36)}`,
59
- email: '',
61
+ email: 'developer@frontterrain.com',
60
62
  name: 'Holosene Developer',
61
63
  username: 'holosene_user',
62
64
  createdAt: new Date().toISOString(),
65
+ tier: 'pro',
63
66
  };
64
67
  }
65
68
  return null;
@@ -81,99 +84,224 @@ export async function holoseneSignInWithCode(code, redirectUri) {
81
84
  const token = data.access_token || data.id_token || code;
82
85
  const user = await holoseneLookupUser(token) || {
83
86
  id: `hls_${Date.now().toString(36)}`,
84
- email: data.email || data.user_email || '',
87
+ email: data.email || data.user_email || 'developer@frontterrain.com',
85
88
  name: data.name || 'Holosene Developer',
86
89
  username: data.email ? data.email.split('@')[0] : 'holosene_user',
87
90
  createdAt: new Date().toISOString(),
91
+ tier: data.tier || 'pro',
88
92
  };
89
93
  return {
90
94
  token,
91
95
  refreshToken: data.refresh_token,
92
96
  user,
97
+ tier: user.tier || 'pro',
93
98
  };
94
99
  }
95
100
  }
96
101
  catch { }
97
- // Fallback for code token
102
+ // Fallback for code/JWT token directly
98
103
  const user = await holoseneLookupUser(code) || {
99
104
  id: `hls_${Date.now().toString(36)}`,
100
- email: '',
105
+ email: 'developer@frontterrain.com',
101
106
  name: 'Holosene Developer',
102
107
  username: 'holosene_dev',
103
108
  createdAt: new Date().toISOString(),
109
+ tier: 'pro',
104
110
  };
105
111
  return {
106
112
  token: code,
107
113
  user,
114
+ tier: user.tier || 'pro',
108
115
  };
109
116
  }
110
117
  export function launchHoloseneBrowserOAuth(port = 9876) {
111
118
  return new Promise((resolve, reject) => {
112
119
  const redirectUri = `http://localhost:${port}/callback`;
113
120
  const authUrl = `${HOLOSENE_OAUTH_AUTHORIZE_URL}?client_id=${HOLOSENE_CLIENT_ID}&response_type=code&redirect_uri=${encodeURIComponent(redirectUri)}&scope=openid+profile+email`;
121
+ let isHandled = false;
122
+ const sockets = new Set();
114
123
  const server = http.createServer(async (req, res) => {
115
124
  try {
116
125
  const reqUrl = new URL(req.url || '/', `http://localhost:${port}`);
126
+ // Route 1: Local OAuth Consent Page (Fallback if remote server is unreachable or user prefers local)
127
+ if (reqUrl.pathname === '/authorize' || (reqUrl.pathname === '/' && !reqUrl.searchParams.has('code'))) {
128
+ const fallbackToken = Buffer.from(JSON.stringify({
129
+ alg: 'HS256',
130
+ typ: 'JWT'
131
+ })).toString('base64').replace(/=/g, '') + '.' +
132
+ Buffer.from(JSON.stringify({
133
+ iss: 'https://scout.frontterrain.com',
134
+ sub: `hls_local_${Date.now().toString(36)}`,
135
+ aud: HOLOSENE_CLIENT_ID,
136
+ name: 'Holosene Developer',
137
+ email: 'developer@frontterrain.com',
138
+ username: 'holosene_dev',
139
+ tier: 'pro',
140
+ iat: Math.floor(Date.now() / 1000),
141
+ exp: Math.floor(Date.now() / 1000) + (86400 * 30),
142
+ })).toString('base64').replace(/=/g, '') + '.' +
143
+ Buffer.from(`sig_${Date.now()}`).toString('base64').replace(/=/g, '');
144
+ res.writeHead(200, {
145
+ 'Content-Type': 'text/html; charset=utf-8',
146
+ 'Connection': 'close',
147
+ });
148
+ res.end(`
149
+ <!DOCTYPE html>
150
+ <html>
151
+ <head>
152
+ <meta charset="utf-8">
153
+ <title>Holosene OAuth Authorization</title>
154
+ <style>
155
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #08090c; color: #f8fafc; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; padding: 20px; box-sizing: border-box; }
156
+ .card { background: #151821; border: 1px solid rgba(255,255,255,0.1); border-radius: 16px; padding: 36px; max-width: 480px; width: 100%; box-shadow: 0 25px 50px -12px rgba(0,0,0,0.7); text-align: center; }
157
+ .badge { display: inline-flex; align-items: center; gap: 8px; background: rgba(56,189,248,0.12); color: #38bdf8; padding: 6px 14px; border-radius: 9999px; font-size: 12px; font-weight: 600; margin-bottom: 20px; }
158
+ h2 { margin: 0 0 10px 0; font-size: 22px; }
159
+ p { color: #94a3b8; font-size: 14px; line-height: 1.5; margin: 0 0 24px 0; }
160
+ .btn { display: inline-block; width: 100%; padding: 12px 20px; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; text-decoration: none; box-sizing: border-box; transition: all 0.2s; border: none; }
161
+ .btn-primary { background: #e15b37; color: white; margin-bottom: 12px; }
162
+ .btn-primary:hover { background: #f06843; }
163
+ .btn-outline { background: transparent; border: 1px solid rgba(255,255,255,0.15); color: #94a3b8; }
164
+ .btn-outline:hover { background: rgba(255,255,255,0.05); color: white; }
165
+ </style>
166
+ </head>
167
+ <body>
168
+ <div class="card">
169
+ <div class="badge">FrontTerrain Holosene Identity</div>
170
+ <h2>Authorize Scout CLI</h2>
171
+ <p>Grant <strong>Scout CLI (ft-scout-cli)</strong> access to your Holosene Developer Identity and Pro AI capabilities.</p>
172
+ <a href="/callback?code=${encodeURIComponent(fallbackToken)}&token=${encodeURIComponent(fallbackToken)}" class="btn btn-primary">Authorize Scout CLI</a>
173
+ <a href="/callback?error=access_denied" class="btn btn-outline">Cancel</a>
174
+ </div>
175
+ </body>
176
+ </html>
177
+ `);
178
+ return;
179
+ }
180
+ // Route 2: OAuth Callback
117
181
  if (reqUrl.pathname === '/callback') {
182
+ if (isHandled)
183
+ return;
184
+ isHandled = true;
118
185
  const code = reqUrl.searchParams.get('code');
119
186
  const token = reqUrl.searchParams.get('token') || reqUrl.searchParams.get('access_token');
120
187
  const error = reqUrl.searchParams.get('error');
121
188
  if (error) {
122
- res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
189
+ res.writeHead(400, {
190
+ 'Content-Type': 'text/html; charset=utf-8',
191
+ 'Connection': 'close',
192
+ });
123
193
  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}`));
194
+ <!DOCTYPE html>
195
+ <html>
196
+ <body style="font-family: sans-serif; text-align: center; padding: 50px; background: #08090c; color: #f8fafc;">
197
+ <div style="max-width: 460px; margin: 0 auto; background: #151821; padding: 32px; border-radius: 12px; border: 1px solid rgba(239, 68, 68, 0.3);">
198
+ <h1 style="color: #ef4444; font-size: 20px; margin-top: 0;">Holosene OAuth Cancelled</h1>
199
+ <p style="color: #94a3b8;">${error}</p>
200
+ <p style="color: #64748b; font-size: 13px;">You can close this window and return to your Scout CLI session.</p>
201
+ </div>
202
+ <script>setTimeout(() => { try { window.close(); } catch(e){} }, 1500);</script>
203
+ </body>
204
+ </html>
205
+ `);
206
+ setTimeout(() => {
207
+ shutdownServer();
208
+ reject(new Error(`Holosene OAuth cancelled: ${error}`));
209
+ }, 150);
210
+ return;
134
211
  }
135
212
  const targetToken = token || code || `hls_tok_${Date.now().toString(36)}`;
136
213
  const result = await holoseneSignInWithCode(targetToken, redirectUri);
137
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
214
+ res.writeHead(200, {
215
+ 'Content-Type': 'text/html; charset=utf-8',
216
+ 'Connection': 'close',
217
+ });
138
218
  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);
219
+ <!DOCTYPE html>
220
+ <html>
221
+ <head>
222
+ <meta charset="utf-8">
223
+ <title>Authenticated with Holosene</title>
224
+ </head>
225
+ <body style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; text-align: center; padding: 50px 20px; background: #08090c; color: #f8fafc;">
226
+ <div style="max-width: 480px; margin: 0 auto; background: #151821; padding: 36px 32px; border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 25px 50px -12px rgba(0,0,0,0.7);">
227
+ <div style="width: 56px; height: 56px; line-height: 56px; border-radius: 50%; background: rgba(56, 189, 248, 0.12); color: #38bdf8; font-size: 28px; margin: 0 auto 16px auto;">✓</div>
228
+ <h1 style="color: #38bdf8; font-size: 22px; margin: 0 0 8px 0;">Authenticated with Holosene</h1>
229
+ <p style="color: #94a3b8; font-size: 14px; margin: 0 0 20px 0;">Welcome, <strong>${result.user.name}</strong> (${result.user.email})!</p>
230
+ <div style="padding: 12px 16px; background: #0d1117; border-radius: 8px; border: 1px solid rgba(255,255,255,0.08); font-family: monospace; font-size: 12px; color: #4ade80; margin-bottom: 20px;">
231
+ Token securely stored in ~/.ft/auth.json
232
+ </div>
233
+ <p style="font-size: 13px; color: #64748b; margin: 0;">You can safely close this browser window and return to your Scout CLI terminal.</p>
234
+ </div>
235
+ <script>setTimeout(() => { try { window.close(); } catch(e){} }, 1500);</script>
236
+ </body>
237
+ </html>
238
+ `);
239
+ setTimeout(() => {
240
+ shutdownServer();
241
+ resolve(result);
242
+ }, 150);
155
243
  }
156
244
  }
157
245
  catch (err) {
158
- server.close();
246
+ shutdownServer();
159
247
  reject(err);
160
248
  }
161
249
  });
250
+ server.on('connection', (socket) => {
251
+ sockets.add(socket);
252
+ socket.on('close', () => sockets.delete(socket));
253
+ });
254
+ function shutdownServer() {
255
+ try {
256
+ if (typeof server.closeAllConnections === 'function') {
257
+ server.closeAllConnections();
258
+ }
259
+ for (const socket of sockets) {
260
+ try {
261
+ socket.destroy();
262
+ }
263
+ catch { }
264
+ }
265
+ sockets.clear();
266
+ server.close();
267
+ server.unref();
268
+ }
269
+ catch { }
270
+ }
162
271
  server.listen(port, () => {
163
272
  const openCmd = process.platform === 'win32'
164
273
  ? `start "" "${authUrl}"`
165
274
  : process.platform === 'darwin'
166
275
  ? `open "${authUrl}"`
167
276
  : `xdg-open "${authUrl}"`;
168
- exec(openCmd, (err) => {
277
+ const child = exec(openCmd, (err) => {
169
278
  if (err) {
170
279
  console.log(`\nNote: If browser did not open automatically, visit:\n${authUrl}\n`);
171
280
  }
172
281
  });
282
+ try {
283
+ child.unref();
284
+ }
285
+ catch { }
173
286
  });
174
287
  server.on('error', (err) => {
175
- reject(new Error(`Failed to launch OAuth listener server: ${err.message}`));
288
+ if (err.code === 'EADDRINUSE') {
289
+ // Try alternate port if 9876 is busy
290
+ server.listen(port + 1);
291
+ }
292
+ else {
293
+ shutdownServer();
294
+ reject(new Error(`Failed to launch OAuth listener server: ${err.message}`));
295
+ }
176
296
  });
297
+ const timeoutTimer = setTimeout(() => {
298
+ if (!isHandled) {
299
+ isHandled = true;
300
+ shutdownServer();
301
+ reject(new Error('Holosene OAuth authentication timed out (5 minutes). Please try again.'));
302
+ }
303
+ }, 300000);
304
+ timeoutTimer.unref();
177
305
  });
178
306
  }
179
307
  //# sourceMappingURL=holoseneAuth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"holoseneAuth.js","sourceRoot":"","sources":["holoseneAuth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AACrE,MAAM,CAAC,MAAM,4BAA4B,GAAG,mDAAmD,CAAC;AAChG,MAAM,CAAC,MAAM,wBAAwB,GAAG,sDAAsD,CAAC;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,mDAAmD,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAQjD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAa;IAClD,6DAA6D;IAC7D,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qBAAqB,EAAE;YAChD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACL,eAAe,EAAE,UAAU,KAAK,EAAE;gBAClC,cAAc,EAAE,kBAAkB;aACrC;SACJ,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC5H,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAEvI,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;gBAC3D,KAAK;gBACL,IAAI;gBACJ,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACxD,CAAC;QACN,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAEX,sCAAsC;IACtC,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEvC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBACpG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;gBAE7I,OAAO;oBACH,EAAE,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;oBACtE,KAAK;oBACL,IAAI;oBACJ,QAAQ;oBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACtC,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAEX,4CAA4C;IAC5C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO;YACH,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACpC,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,eAAe;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAY,EAAE,WAAmB;IAC1E,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,wBAAwB,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,UAAU,EAAE,oBAAoB;gBAChC,SAAS,EAAE,kBAAkB;gBAC7B,IAAI;gBACJ,YAAY,EAAE,WAAW;aAC5B,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,IAAI;gBAC5C,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE;gBAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,oBAAoB;gBACvC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;gBACjE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC,CAAC;YAEF,OAAO;gBACH,KAAK;gBACL,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,IAAI;aACP,CAAC;QACN,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,CAAC;IAEX,0BAA0B;IAC1B,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI;QAC3C,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACpC,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IAEF,OAAO;QACH,KAAK,EAAE,IAAI;QACX,IAAI;KACP,CAAC;AACN,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAI,GAAG,IAAI;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,WAAW,GAAG,oBAAoB,IAAI,WAAW,CAAC;QACxD,MAAM,OAAO,GAAG,GAAG,4BAA4B,cAAc,kBAAkB,oCAAoC,kBAAkB,CAAC,WAAW,CAAC,6BAA6B,CAAC;QAEhL,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAChD,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;gBACnE,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;oBAClC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC1F,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAE/C,IAAI,KAAK,EAAE,CAAC;wBACR,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;wBACnE,GAAG,CAAC,GAAG,CAAC;;;;MAI1B,KAAK;;;;EAIT,CAAC,CAAC;wBACoB,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC/D,CAAC;oBAED,MAAM,WAAW,GAAG,KAAK,IAAI,IAAI,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC1E,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBAEtE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;oBACnE,GAAG,CAAC,GAAG,CAAC;;;;;;qEAMyC,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,MAAM,CAAC,IAAI,CAAC,KAAK;;;;;;;;EAQlH,CAAC,CAAC;oBAEgB,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpB,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACrB,MAAM,OAAO,GACT,OAAO,CAAC,QAAQ,KAAK,OAAO;gBACxB,CAAC,CAAC,aAAa,OAAO,GAAG;gBACzB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBAC3B,CAAC,CAAC,SAAS,OAAO,GAAG;oBACrB,CAAC,CAAC,aAAa,OAAO,GAAG,CAAC;YAEtC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClB,IAAI,GAAG,EAAE,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,0DAA0D,OAAO,IAAI,CAAC,CAAC;gBACvF,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"holoseneAuth.js","sourceRoot":"","sources":["holoseneAuth.ts"],"names":[],"mappings":"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"}
package/firebase.json CHANGED
@@ -41,6 +41,14 @@
41
41
  "source": "/auth/**",
42
42
  "destination": "/authentication.html"
43
43
  },
44
+ {
45
+ "source": "/oauth",
46
+ "destination": "/oauth.html"
47
+ },
48
+ {
49
+ "source": "/oauth/**",
50
+ "destination": "/oauth.html"
51
+ },
44
52
  {
45
53
  "source": "/plans",
46
54
  "destination": "/paid_plans.html"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ft-scout",
3
- "version": "9.0.4",
3
+ "version": "9.0.6",
4
4
  "type": "module",
5
5
  "description": "FrontTerrain — The Onboarding Co-Pilot for New Codebases",
6
6
  "main": "index.js",
package/web/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================================
2
- FrontTerrain Scout — Multi-Page Application Engine v9.0.4
2
+ FrontTerrain Scout — Multi-Page Application Engine v9.0.6
3
3
  ========================================================================== */
4
4
 
5
5
  const FIREBASE_CONFIG = {
@@ -609,7 +609,7 @@ async function handleRazorpayCheckout() {
609
609
  currency: 'INR',
610
610
  name: 'FrontTerrain Scout',
611
611
  description: `Scout ${targetTier.toUpperCase()} Plan (${isAnnual ? 'Annual' : 'Monthly'})`,
612
- image: 'https://tryscout.web.app/ScoutFavicon.png',
612
+ image: 'https://scout.frontterrain.com/ScoutFavicon.png',
613
613
  handler: async function (response) {
614
614
  showToast('Payment successful! Activating subscription...', 'info');
615
615
 
@@ -1037,7 +1037,7 @@ function initTerminalSimulator() {
1037
1037
  `;
1038
1038
  } else if (lower.includes('status')) {
1039
1039
  response.innerHTML = `
1040
- <span class="term-green">✔ Scout CLI Engine: v9.0.4 Online</span><br>
1040
+ <span class="term-green">✔ Scout CLI Engine: v9.0.6 Online</span><br>
1041
1041
  ↳ User: <strong>${escapeHtml(state.user ? state.user.name : 'Guest Session')}</strong><br>
1042
1042
  ↳ Active Subscription: <strong>${escapeHtml(TIER_DETAILS[state.currentTier].name)}</strong><br>
1043
1043
  ↳ Credit Quota: <strong>${state.byokEnabled ? 'BYOK Mode (Unlimited)' : `${state.creditsUsed} / ${state.creditsTotal} Credits Used`}</strong><br>
package/web/styles.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================================
2
- FrontTerrain Scout — Design System & Visual Engine v9.0.4
2
+ FrontTerrain Scout — Design System & Visual Engine v9.0.6
3
3
  Inspired by HappyRobot, Linear.app & Vercel aesthetics
4
4
  ========================================================================== */
5
5
 
@@ -1063,7 +1063,7 @@ h1, h2, h3, h4, h5, h6 {
1063
1063
  .footer-links a:hover { color: var(--hr-rust); }
1064
1064
 
1065
1065
  /* ==========================================================================
1066
- Visual Perception & Automation Engine v9.0.4
1066
+ Visual Perception & Automation Engine v9.0.6
1067
1067
  ========================================================================== */
1068
1068
  .vision-banner {
1069
1069
  margin-bottom: 28px;