ft-scout 8.0.8 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.firebase/hosting.d2Vi.cache +7 -6
- package/README.md +49 -3
- package/bin/ft.js +2 -1
- package/bin/src/commands/plan.d.ts.map +1 -1
- package/bin/src/commands/plan.js +51 -10
- package/bin/src/commands/plan.js.map +1 -1
- package/bin/src/engine/liveScreenEngine.js +1 -1
- package/bin/src/engine/liveScreenEngine.js.map +1 -1
- package/bin/src/index.js +4 -4
- package/bin/src/server/server.d.ts.map +1 -1
- package/bin/src/server/server.js +258 -5
- package/bin/src/server/server.js.map +1 -1
- package/bin/src/utils/admin.d.ts.map +1 -0
- package/bin/src/utils/admin.js +237 -0
- package/bin/src/utils/admin.js.map +1 -0
- package/bin/src/utils/auth.d.ts.map +1 -1
- package/bin/src/utils/auth.js +17 -7
- package/bin/src/utils/auth.js.map +1 -1
- package/bin/src/utils/branding.js +1 -1
- package/bin/src/utils/payment.d.ts.map +1 -1
- package/bin/src/utils/payment.js +26 -32
- package/bin/src/utils/payment.js.map +1 -1
- package/bin/src/utils/pricing.d.ts.map +1 -0
- package/bin/src/utils/pricing.js +143 -0
- package/bin/src/utils/pricing.js.map +1 -0
- package/bin/src/utils/razorpay.js +1 -1
- package/bin/src/utils/razorpay.js.map +1 -1
- package/firebase.json +8 -0
- package/package.json +1 -1
- package/web/app.js +106 -12
- package/web/styles.css +2 -2
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
styles.css,1789142492231,c4ad697685da264996b025ecbded5f894ec22b146a92aa61e6d6866d658f8f68
|
|
1
2
|
ScoutFavicon.png,1786186569805,41a9ca9abf7acd2976e78c72a72285b49cc0e64b2b5eeb2c2b88c69628fc618a
|
|
2
|
-
web_cli.html,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
web_cli.html,1789144369135,da65a2637830556aad020c486f4d02c62c40ad7a06c2223700852d6a6fead153
|
|
4
|
+
paid_plans.html,1789144515326,028e21cb9b219973e3ec99a9f08c704d55723c8746848cbdf3481faaeb67214d
|
|
5
|
+
index.html,1789144506910,6a793e0b2d39b9fb867d41e31dd352b5087235132d53988110451af8ec62975d
|
|
6
|
+
authentication.html,1789144472457,cda3499ac776d7bef03dbb09a5851c171e363cfbd281a915600148607a45ab75
|
|
7
|
+
app.js,1789144930928,ee1f1e59bf86b9472eb5a5e019a949fc143e37df9b16b2d89da15cbe5f5fee8f
|
|
8
|
+
admin.html,1789145853823,b7783a30fa81c591db24d5e5eae68e85a386ab6077458c3c8a9eaa7b90f64999
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# scout (FrontTerrain CLI
|
|
1
|
+
# scout (FrontTerrain CLI v9.0.0)
|
|
2
2
|
|
|
3
3
|
**FrontTerrain (`scout`)** — The Autonomous AI Principal Software Engineer & Codebase Co-Pilot in your terminal.
|
|
4
4
|
|
|
@@ -94,6 +94,49 @@ scout history
|
|
|
94
94
|
scout upgrade
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
+
### Account Authentication & Session Management
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Create a new Scout developer account
|
|
101
|
+
scout signup
|
|
102
|
+
|
|
103
|
+
# Log into your FrontTerrain / Holosene account
|
|
104
|
+
scout login
|
|
105
|
+
|
|
106
|
+
# Check active session status and user credentials
|
|
107
|
+
scout auth
|
|
108
|
+
|
|
109
|
+
# Terminate active session
|
|
110
|
+
scout logout
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Interactive Web Dashboard & Local GUI
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Launch the Scout Web Dashboard sync server
|
|
117
|
+
scout dashboard
|
|
118
|
+
|
|
119
|
+
# Launch and automatically open browser to the local UI
|
|
120
|
+
scout dashboard --open
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Quota, Usage & Subscription Plans
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Check credit balance, renewal status, and BYOK mode
|
|
127
|
+
scout quota
|
|
128
|
+
|
|
129
|
+
# Manage subscription tier, view pricing, and upgrade quota
|
|
130
|
+
scout plan
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Model Latency & Performance Benchmark
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Measure latency and tokens/second across configured models (Nemotron, Qwen, Gemini, GPT)
|
|
137
|
+
scout benchmark
|
|
138
|
+
```
|
|
139
|
+
|
|
97
140
|
---
|
|
98
141
|
|
|
99
142
|
## Scout Autonomous ReAct Tools (18 Tools Available)
|
|
@@ -186,8 +229,11 @@ Inside an active `scout agent` interactive session, type any slash command to tr
|
|
|
186
229
|
|
|
187
230
|
---
|
|
188
231
|
|
|
189
|
-
## What's New in
|
|
190
|
-
|
|
232
|
+
## What's New in v9.0.0
|
|
233
|
+
- **Interactive Web Dashboard & Sync Server (`scout dashboard`)**: Launch a local web GUI to visually inspect repository maps, audit logs, plan details, and live agent controls.
|
|
234
|
+
- **Developer Authentication Guard (`scout login` / `signup` / `auth`)**: Unified account management with Firebase and Holosene token authentication, securing command execution and session persistence.
|
|
235
|
+
- **Quota & Subscription Management (`scout quota` / `plan`)**: Easily inspect real-time usage quotas, track billing renewal cycles, switch between tiers, or configure BYOK (Bring-Your-Own-Key) access.
|
|
236
|
+
- **Automated Model Benchmark Suite (`scout benchmark`)**: Run live end-to-end latency and throughput benchmarks (tokens/sec) across all configured LLM providers (Nemotron, Qwen, Gemini, GPT).
|
|
191
237
|
- **Real-Time Live Screen Sharing Engine**: Replaced static disk screenshots with in-memory video streaming directly to vision models. Zero disk writes, zero garbage files.
|
|
192
238
|
- **Target App Window Isolation**: Selectively captures and streams ONLY the active application window the agent is working in (e.g., Chrome) instead of leaking the entire desktop.
|
|
193
239
|
- **Continuous Sky-Blue Aura HUD**: A pulsing `#00e5ff` HUD border and corner brackets play continuously throughout the live screen sharing session.
|
package/bin/ft.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["plan.ts"],"names":[],"mappings":"AAOA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["plan.ts"],"names":[],"mappings":"AAOA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsHvD"}
|
package/bin/src/commands/plan.js
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import { select, isCancel, confirm } from '@clack/prompts';
|
|
1
|
+
import { select, isCancel, confirm, text } from '@clack/prompts';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { exec } from 'child_process';
|
|
4
4
|
import { loadAuthConfig } from '../utils/auth.js';
|
|
5
|
-
import { PLAN_CONFIGS, createCheckoutSession, verifyAndApplyUpgrade } from '../utils/payment.js';
|
|
5
|
+
import { PLAN_CONFIGS, createCheckoutSession, verifyAndApplyUpgrade, getActivePlanConfigs } from '../utils/payment.js';
|
|
6
6
|
import { safeNote } from '../utils/markdown.js';
|
|
7
7
|
export async function handlePlanCommand() {
|
|
8
8
|
const auth = loadAuthConfig();
|
|
9
9
|
const currentTier = (auth.currentTier || 'free').toLowerCase();
|
|
10
10
|
const used = auth.creditsUsed ?? 0;
|
|
11
11
|
const total = auth.creditsTotal ?? 100;
|
|
12
|
+
const plans = getActivePlanConfigs();
|
|
12
13
|
safeNote(`Current Plan: ${chalk.bold.cyan(currentTier.toUpperCase())}\n` +
|
|
13
14
|
`Account: ${chalk.bold(auth.user?.email || auth.user?.name || 'Local Session')}\n` +
|
|
14
15
|
`Credits: ${chalk.yellow(`${used}/${total}`)} (${chalk.green(`${Math.max(0, total - used)} remaining`)})\n\n` +
|
|
15
16
|
`Available Subscription Tiers:\n` +
|
|
16
|
-
` • ${chalk.bold.green(
|
|
17
|
-
` • ${chalk.bold.magenta(
|
|
18
|
-
` • ${chalk.bold.blue('BYOK Mode (Free)')}
|
|
17
|
+
` • ${chalk.bold.green(`Pro ($${plans.pro.monthlyPrice}/mo / ₹${plans.pro.monthlyPriceINR}/mo)`)} - 1,000 credits/mo, priority model, 5 session slots\n` +
|
|
18
|
+
` • ${chalk.bold.magenta(`Enterprise ($${plans.enterprise.monthlyPrice}/mo / ₹${plans.enterprise.monthlyPriceINR}/mo)`)} - 10,000 credits/mo, dedicated scale, HUD vision\n` +
|
|
19
|
+
` • ${chalk.bold.blue('BYOK Mode (Free)')} - Unlimited credits via your custom API key / proxy`, ' Scout Subscription Plans');
|
|
19
20
|
const action = await select({
|
|
20
21
|
message: 'Select an option:',
|
|
21
22
|
options: [
|
|
22
|
-
{ label:
|
|
23
|
-
{ label:
|
|
23
|
+
{ label: `Upgrade to Pro Tier ($${plans.pro.monthlyPrice}/mo / ₹${plans.pro.monthlyPriceINR}/mo)`, value: 'upgrade_pro' },
|
|
24
|
+
{ label: `Upgrade to Enterprise Tier ($${plans.enterprise.monthlyPrice}/mo / ₹${plans.enterprise.monthlyPriceINR}/mo)`, value: 'upgrade_enterprise' },
|
|
25
|
+
{ label: 'Verify & Apply Completed PayPal Payment Token', value: 'verify_token' },
|
|
24
26
|
{ label: 'Open Web Dashboard Plans (/plans)', value: 'open_dashboard' },
|
|
25
27
|
{ label: 'Exit', value: 'exit' },
|
|
26
28
|
],
|
|
@@ -36,10 +38,49 @@ export async function handlePlanCommand() {
|
|
|
36
38
|
exec(openCmd);
|
|
37
39
|
return;
|
|
38
40
|
}
|
|
41
|
+
if (action === 'verify_token') {
|
|
42
|
+
const tokenInput = await text({
|
|
43
|
+
message: 'Enter your PayPal Order Token or Transaction ID:',
|
|
44
|
+
placeholder: '3X325668GU7385727',
|
|
45
|
+
validate(val) {
|
|
46
|
+
if (!val || !val.trim())
|
|
47
|
+
return 'Token or Order ID is required.';
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
if (isCancel(tokenInput) || !tokenInput)
|
|
51
|
+
return;
|
|
52
|
+
const targetTierChoice = await select({
|
|
53
|
+
message: 'Select the tier you purchased:',
|
|
54
|
+
options: [
|
|
55
|
+
{ label: 'Pro Developer (1,000 credits)', value: 'pro' },
|
|
56
|
+
{ label: 'Enterprise (10,000 credits)', value: 'enterprise' },
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
if (isCancel(targetTierChoice))
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
console.log(`\n${chalk.dim('Verifying payment with PayPal...')}`);
|
|
63
|
+
const result = await verifyAndApplyUpgrade({
|
|
64
|
+
orderId: tokenInput.trim(),
|
|
65
|
+
tier: targetTierChoice,
|
|
66
|
+
});
|
|
67
|
+
if (result.success) {
|
|
68
|
+
safeNote(` 🎉 ${chalk.bold.green('Subscription Upgrade Verified & Applied!')}\n\n` +
|
|
69
|
+
`New Tier: ${chalk.bold.cyan(result.tier.toUpperCase())}\n` +
|
|
70
|
+
`Total Credits: ${chalk.bold.yellow(result.totalCredits)}\n` +
|
|
71
|
+
`Transaction ID: ${chalk.dim(result.transactionId)}\n` +
|
|
72
|
+
`Next Renewal: ${chalk.cyan(new Date(result.renewAt).toLocaleDateString())}`, ' Payment Verified');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
console.log(`\n${chalk.bold.red('Verification Error:')} ${err.message || err}\n`);
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
39
80
|
const targetTier = action === 'upgrade_enterprise' ? 'enterprise' : 'pro';
|
|
40
|
-
const plan =
|
|
81
|
+
const plan = plans[targetTier];
|
|
41
82
|
const confirmed = await confirm({
|
|
42
|
-
message: `Confirm checkout for ${plan.name} ($${plan.monthlyPrice}/mo for ${plan.credits.toLocaleString()} credits)?`,
|
|
83
|
+
message: `Confirm checkout for ${plan.name} ($${plan.monthlyPrice}/mo / ₹${plan.monthlyPriceINR}/mo for ${plan.credits.toLocaleString()} credits)?`,
|
|
43
84
|
});
|
|
44
85
|
if (isCancel(confirmed) || !confirmed) {
|
|
45
86
|
return;
|
|
@@ -56,7 +97,7 @@ export async function handlePlanCommand() {
|
|
|
56
97
|
console.log(`Please complete payment in your browser:\n${chalk.underline.cyan(session.checkoutUrl)}\n`);
|
|
57
98
|
const openCmd = process.platform === 'win32' ? `start "" "${session.checkoutUrl}"` : process.platform === 'darwin' ? `open "${session.checkoutUrl}"` : `xdg-open "${session.checkoutUrl}"`;
|
|
58
99
|
exec(openCmd);
|
|
59
|
-
console.log(chalk.dim('After approving
|
|
100
|
+
console.log(chalk.dim('After approving order on PayPal, run "scout plan" and select "Verify & Apply Completed PayPal Payment Token".\n'));
|
|
60
101
|
return;
|
|
61
102
|
}
|
|
62
103
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -327,7 +327,7 @@ export class LiveScreenShareSession {
|
|
|
327
327
|
stopScreenAuraOverlay();
|
|
328
328
|
const elapsedSecs = Math.round((Date.now() - this.streamStartTime) / 1000);
|
|
329
329
|
const summary = `Live screen share session ended. Streamed ${this.frameCount} frames over ${elapsedSecs}s in-memory.`;
|
|
330
|
-
console.log(chalk.yellow(`\n
|
|
330
|
+
console.log(chalk.yellow(`\n[LIVE SCREEN SHARE STOPPED] ${summary}`));
|
|
331
331
|
logAuditEvent('live_screen_stop', { durationSeconds: elapsedSecs, framesStreamed: this.frameCount });
|
|
332
332
|
return { success: true, summary };
|
|
333
333
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveScreenEngine.js","sourceRoot":"","sources":["liveScreenEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"liveScreenEngine.js","sourceRoot":"","sources":["liveScreenEngine.ts"],"names":[],"mappings":"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"}
|
package/bin/src/index.js
CHANGED
|
@@ -33,13 +33,13 @@ program
|
|
|
33
33
|
.name('scout')
|
|
34
34
|
.alias('ft')
|
|
35
35
|
.description('FrontTerrain — The Onboarding Co-Pilot for New Codebases')
|
|
36
|
-
.version('
|
|
36
|
+
.version('9.0.0');
|
|
37
37
|
// Header UI on execution with FrontTerrain proprietary logo & version auto-checker
|
|
38
38
|
program.hook('preAction', async (_thisCommand, actionCommand) => {
|
|
39
|
-
intro(renderBranding('
|
|
39
|
+
intro(renderBranding('9.0.0'));
|
|
40
40
|
const cmdName = actionCommand ? actionCommand.name() : '';
|
|
41
41
|
if (cmdName !== 'upgrade') {
|
|
42
|
-
await checkForUpdates('
|
|
42
|
+
await checkForUpdates('9.0.0');
|
|
43
43
|
}
|
|
44
44
|
// Auth Guard: enforce authentication for all commands except login, signup, upgrade, help, dashboard, auth, status, plan
|
|
45
45
|
const EXEMPT_COMMANDS = ['login', 'signin', 'signup', 'register', 'upgrade', 'help', 'dashboard', 'web-ui', 'gui', 'auth', 'status', 'quota', 'usage', 'credits', 'plan', 'pricing', 'subscribe'];
|
|
@@ -235,7 +235,7 @@ program
|
|
|
235
235
|
.command('upgrade')
|
|
236
236
|
.description('Check for updates and auto-upgrade Scout to the latest version')
|
|
237
237
|
.action(async () => {
|
|
238
|
-
await checkForUpdates('
|
|
238
|
+
await checkForUpdates('9.0.0', true);
|
|
239
239
|
outro(chalk.cyan('Upgrade check complete.'));
|
|
240
240
|
});
|
|
241
241
|
program
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAwExB,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,MAAqB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAqmB/G"}
|
package/bin/src/server/server.js
CHANGED
|
@@ -7,6 +7,8 @@ import { loadAuthConfig, saveAuthConfig, clearAuthConfig, isLoggedIn, getTierSes
|
|
|
7
7
|
import { getPublicPaymentConfig, createCheckoutSession, verifyAndApplyUpgrade } from '../utils/payment.js';
|
|
8
8
|
import { createRazorpayOrder, verifyRazorpaySignature, getRazorpayKeyId } from '../utils/razorpay.js';
|
|
9
9
|
import { getAuditLogs, logAuditEvent } from '../utils/auditLogger.js';
|
|
10
|
+
import { getPricingConfig, saveFullPricingConfig, updatePricingTier, resetPricingToDefaults } from '../utils/pricing.js';
|
|
11
|
+
import { verifyAdminAuth, generateAdminToken, verifyAdminToken, getAdminUsersList, updateAdminUser, deleteAdminUser, getAdminDashboardStats, isWhitelistedAdminEmail, } from '../utils/admin.js';
|
|
10
12
|
import dotenv from 'dotenv';
|
|
11
13
|
const DEFAULT_PORT = 9120;
|
|
12
14
|
function getPackageRoot() {
|
|
@@ -19,8 +21,8 @@ function getPackageRoot() {
|
|
|
19
21
|
}
|
|
20
22
|
return process.cwd();
|
|
21
23
|
}
|
|
22
|
-
dotenv.config({ path: path.join(getPackageRoot(), '.env') });
|
|
23
|
-
dotenv.config();
|
|
24
|
+
dotenv.config({ path: path.join(getPackageRoot(), '.env'), quiet: true });
|
|
25
|
+
dotenv.config({ quiet: true });
|
|
24
26
|
function getWebDir() {
|
|
25
27
|
const pkgRoot = getPackageRoot();
|
|
26
28
|
const possiblePaths = [
|
|
@@ -226,11 +228,21 @@ export function startDashboardServer(port = DEFAULT_PORT) {
|
|
|
226
228
|
req.on('end', async () => {
|
|
227
229
|
try {
|
|
228
230
|
const data = JSON.parse(body || '{}');
|
|
231
|
+
let amount = data.amount;
|
|
232
|
+
if (!amount && data.tier) {
|
|
233
|
+
const pricing = getPricingConfig();
|
|
234
|
+
const isAnnual = data.billingCycle === 'annual';
|
|
235
|
+
const tierConfig = pricing[data.tier];
|
|
236
|
+
if (tierConfig) {
|
|
237
|
+
const inr = isAnnual ? tierConfig.annualPriceINR : tierConfig.monthlyPriceINR;
|
|
238
|
+
amount = inr * 100;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
229
241
|
const order = await createRazorpayOrder({
|
|
230
|
-
amount
|
|
231
|
-
currency: data.currency,
|
|
242
|
+
amount,
|
|
243
|
+
currency: data.currency || 'INR',
|
|
232
244
|
receipt: data.receipt,
|
|
233
|
-
notes: data.notes,
|
|
245
|
+
notes: { ...data.notes, tier: data.tier },
|
|
234
246
|
});
|
|
235
247
|
res.writeHead(200);
|
|
236
248
|
res.end(JSON.stringify(order));
|
|
@@ -337,6 +349,244 @@ export function startDashboardServer(port = DEFAULT_PORT) {
|
|
|
337
349
|
}));
|
|
338
350
|
return;
|
|
339
351
|
}
|
|
352
|
+
// GET /api/pricing - Public endpoint for dynamic tier pricing
|
|
353
|
+
if (pathname === '/api/pricing' && req.method === 'GET') {
|
|
354
|
+
res.writeHead(200);
|
|
355
|
+
res.end(JSON.stringify({ success: true, pricing: getPricingConfig() }));
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
// GET /api/fx-rate - Live exchange rate for admin currency auto-converter
|
|
359
|
+
if (pathname === '/api/fx-rate' && req.method === 'GET') {
|
|
360
|
+
res.writeHead(200);
|
|
361
|
+
res.end(JSON.stringify({
|
|
362
|
+
success: true,
|
|
363
|
+
base: 'USD',
|
|
364
|
+
target: 'INR',
|
|
365
|
+
rate: 86.50,
|
|
366
|
+
updatedAt: new Date().toISOString(),
|
|
367
|
+
source: 'Global FX Reference Index',
|
|
368
|
+
}));
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
// POST /api/admin/login - Admin authentication via passkey or admin session
|
|
372
|
+
if (pathname === '/api/admin/login' && req.method === 'POST') {
|
|
373
|
+
let body = '';
|
|
374
|
+
req.on('data', chunk => body += chunk);
|
|
375
|
+
req.on('end', () => {
|
|
376
|
+
try {
|
|
377
|
+
const data = JSON.parse(body || '{}');
|
|
378
|
+
const passkey = data.passkey || data.key || '';
|
|
379
|
+
const email = data.email || 'admin@frontterrain.com';
|
|
380
|
+
const isAuthorized = verifyAdminAuth({ passkey }) ||
|
|
381
|
+
(isWhitelistedAdminEmail(email) && passkey === 'scout_admin_2026');
|
|
382
|
+
if (!isAuthorized) {
|
|
383
|
+
res.writeHead(401);
|
|
384
|
+
res.end(JSON.stringify({ success: false, error: 'Unauthorized: Invalid admin passkey' }));
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
const token = generateAdminToken(email);
|
|
388
|
+
logAuditEvent('admin_login', { email, success: true });
|
|
389
|
+
res.writeHead(200);
|
|
390
|
+
res.end(JSON.stringify({
|
|
391
|
+
success: true,
|
|
392
|
+
token,
|
|
393
|
+
admin: true,
|
|
394
|
+
email,
|
|
395
|
+
}));
|
|
396
|
+
}
|
|
397
|
+
catch (err) {
|
|
398
|
+
res.writeHead(400);
|
|
399
|
+
res.end(JSON.stringify({ success: false, error: err.message || 'Invalid payload' }));
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
// GET /api/admin/check - Verify current caller has admin rights
|
|
405
|
+
if (pathname === '/api/admin/check' && req.method === 'GET') {
|
|
406
|
+
const isAuthorized = verifyAdminAuth(req.headers);
|
|
407
|
+
res.writeHead(200);
|
|
408
|
+
res.end(JSON.stringify({
|
|
409
|
+
success: true,
|
|
410
|
+
authorized: isAuthorized,
|
|
411
|
+
}));
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
// GET /api/admin/stats - Overview metrics for admin dashboard
|
|
415
|
+
if (pathname === '/api/admin/stats' && req.method === 'GET') {
|
|
416
|
+
if (!verifyAdminAuth(req.headers)) {
|
|
417
|
+
res.writeHead(403);
|
|
418
|
+
res.end(JSON.stringify({ success: false, error: 'Forbidden: Admin access required' }));
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
res.writeHead(200);
|
|
422
|
+
res.end(JSON.stringify({
|
|
423
|
+
success: true,
|
|
424
|
+
stats: getAdminDashboardStats(),
|
|
425
|
+
}));
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
// GET /api/admin/pricing - View full dynamic pricing configuration
|
|
429
|
+
if (pathname === '/api/admin/pricing' && req.method === 'GET') {
|
|
430
|
+
res.writeHead(200);
|
|
431
|
+
res.end(JSON.stringify({
|
|
432
|
+
success: true,
|
|
433
|
+
pricing: getPricingConfig(),
|
|
434
|
+
}));
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
// POST /api/admin/pricing - Update pricing configuration
|
|
438
|
+
if (pathname === '/api/admin/pricing' && req.method === 'POST') {
|
|
439
|
+
let body = '';
|
|
440
|
+
req.on('data', chunk => body += chunk);
|
|
441
|
+
req.on('end', () => {
|
|
442
|
+
try {
|
|
443
|
+
const data = JSON.parse(body || '{}');
|
|
444
|
+
const isAuthorized = verifyAdminAuth({
|
|
445
|
+
...req.headers,
|
|
446
|
+
passkey: data.passkey,
|
|
447
|
+
});
|
|
448
|
+
if (!isAuthorized) {
|
|
449
|
+
res.writeHead(403);
|
|
450
|
+
res.end(JSON.stringify({ success: false, error: 'Forbidden: Admin access required' }));
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
let updatedPricing;
|
|
454
|
+
if (data.pricing) {
|
|
455
|
+
updatedPricing = saveFullPricingConfig(data.pricing);
|
|
456
|
+
}
|
|
457
|
+
else if (data.tier && data.updates) {
|
|
458
|
+
updatedPricing = updatePricingTier(data.tier, data.updates);
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
res.writeHead(400);
|
|
462
|
+
res.end(JSON.stringify({ success: false, error: 'Expected pricing or tier updates payload' }));
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
logAuditEvent('admin_pricing_update', { tier: data.tier || 'all' });
|
|
466
|
+
res.writeHead(200);
|
|
467
|
+
res.end(JSON.stringify({
|
|
468
|
+
success: true,
|
|
469
|
+
message: 'Pricing configuration updated successfully',
|
|
470
|
+
pricing: getPricingConfig(),
|
|
471
|
+
}));
|
|
472
|
+
}
|
|
473
|
+
catch (err) {
|
|
474
|
+
res.writeHead(400);
|
|
475
|
+
res.end(JSON.stringify({ success: false, error: err.message || 'Failed to update pricing' }));
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
// POST /api/admin/pricing/reset - Reset pricing to default values
|
|
481
|
+
if (pathname === '/api/admin/pricing/reset' && req.method === 'POST') {
|
|
482
|
+
let body = '';
|
|
483
|
+
req.on('data', chunk => body += chunk);
|
|
484
|
+
req.on('end', () => {
|
|
485
|
+
const data = JSON.parse(body || '{}');
|
|
486
|
+
if (!verifyAdminAuth({ ...req.headers, passkey: data.passkey })) {
|
|
487
|
+
res.writeHead(403);
|
|
488
|
+
res.end(JSON.stringify({ success: false, error: 'Forbidden: Admin access required' }));
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
const resetConfig = resetPricingToDefaults();
|
|
492
|
+
logAuditEvent('admin_pricing_reset', {});
|
|
493
|
+
res.writeHead(200);
|
|
494
|
+
res.end(JSON.stringify({ success: true, pricing: resetConfig }));
|
|
495
|
+
});
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
// GET /api/admin/users - List all registered user accounts
|
|
499
|
+
if (pathname === '/api/admin/users' && req.method === 'GET') {
|
|
500
|
+
if (!verifyAdminAuth(req.headers)) {
|
|
501
|
+
res.writeHead(403);
|
|
502
|
+
res.end(JSON.stringify({ success: false, error: 'Forbidden: Admin access required' }));
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
const users = getAdminUsersList();
|
|
506
|
+
res.writeHead(200);
|
|
507
|
+
res.end(JSON.stringify({ success: true, users }));
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
// POST /api/admin/users/update - Modify user account (tier, credits, renew date)
|
|
511
|
+
if (pathname === '/api/admin/users/update' && req.method === 'POST') {
|
|
512
|
+
let body = '';
|
|
513
|
+
req.on('data', chunk => body += chunk);
|
|
514
|
+
req.on('end', () => {
|
|
515
|
+
try {
|
|
516
|
+
const data = JSON.parse(body || '{}');
|
|
517
|
+
if (!verifyAdminAuth({ ...req.headers, passkey: data.passkey })) {
|
|
518
|
+
res.writeHead(403);
|
|
519
|
+
res.end(JSON.stringify({ success: false, error: 'Forbidden: Admin access required' }));
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
const updated = updateAdminUser({
|
|
523
|
+
email: data.email,
|
|
524
|
+
currentTier: data.currentTier,
|
|
525
|
+
creditsTotal: data.creditsTotal !== undefined ? Number(data.creditsTotal) : undefined,
|
|
526
|
+
creditsUsed: data.creditsUsed !== undefined ? Number(data.creditsUsed) : undefined,
|
|
527
|
+
renewAt: data.renewAt,
|
|
528
|
+
byokEnabled: data.byokEnabled,
|
|
529
|
+
resetCredits: data.resetCredits,
|
|
530
|
+
});
|
|
531
|
+
res.writeHead(200);
|
|
532
|
+
res.end(JSON.stringify({ success: true, user: updated }));
|
|
533
|
+
}
|
|
534
|
+
catch (err) {
|
|
535
|
+
res.writeHead(400);
|
|
536
|
+
res.end(JSON.stringify({ success: false, error: err.message || 'Failed to update user' }));
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
// POST /api/admin/users/reset-credits - Reset credits for specific user
|
|
542
|
+
if (pathname === '/api/admin/users/reset-credits' && req.method === 'POST') {
|
|
543
|
+
let body = '';
|
|
544
|
+
req.on('data', chunk => body += chunk);
|
|
545
|
+
req.on('end', () => {
|
|
546
|
+
try {
|
|
547
|
+
const data = JSON.parse(body || '{}');
|
|
548
|
+
if (!verifyAdminAuth({ ...req.headers, passkey: data.passkey })) {
|
|
549
|
+
res.writeHead(403);
|
|
550
|
+
res.end(JSON.stringify({ success: false, error: 'Forbidden: Admin access required' }));
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
553
|
+
const updated = updateAdminUser({
|
|
554
|
+
email: data.email,
|
|
555
|
+
resetCredits: true,
|
|
556
|
+
});
|
|
557
|
+
res.writeHead(200);
|
|
558
|
+
res.end(JSON.stringify({ success: true, user: updated }));
|
|
559
|
+
}
|
|
560
|
+
catch (err) {
|
|
561
|
+
res.writeHead(400);
|
|
562
|
+
res.end(JSON.stringify({ success: false, error: err.message || 'Failed to reset user credits' }));
|
|
563
|
+
}
|
|
564
|
+
});
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
// POST /api/admin/users/delete - Delete user account
|
|
568
|
+
if (pathname === '/api/admin/users/delete' && req.method === 'POST') {
|
|
569
|
+
let body = '';
|
|
570
|
+
req.on('data', chunk => body += chunk);
|
|
571
|
+
req.on('end', () => {
|
|
572
|
+
try {
|
|
573
|
+
const data = JSON.parse(body || '{}');
|
|
574
|
+
if (!verifyAdminAuth({ ...req.headers, passkey: data.passkey })) {
|
|
575
|
+
res.writeHead(403);
|
|
576
|
+
res.end(JSON.stringify({ success: false, error: 'Forbidden: Admin access required' }));
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
const success = deleteAdminUser(data.email);
|
|
580
|
+
res.writeHead(200);
|
|
581
|
+
res.end(JSON.stringify({ success }));
|
|
582
|
+
}
|
|
583
|
+
catch (err) {
|
|
584
|
+
res.writeHead(400);
|
|
585
|
+
res.end(JSON.stringify({ success: false, error: err.message || 'Failed to delete user' }));
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
340
590
|
res.writeHead(404);
|
|
341
591
|
res.end(JSON.stringify({ error: 'API route not found' }));
|
|
342
592
|
return;
|
|
@@ -352,6 +602,9 @@ export function startDashboardServer(port = DEFAULT_PORT) {
|
|
|
352
602
|
else if (pathname === '/cli' || pathname === '/cli/') {
|
|
353
603
|
filePath = path.join(webDir, 'web_cli.html');
|
|
354
604
|
}
|
|
605
|
+
else if (pathname === '/admin' || pathname === '/admin/') {
|
|
606
|
+
filePath = path.join(webDir, 'admin.html');
|
|
607
|
+
}
|
|
355
608
|
else {
|
|
356
609
|
let targetFile = pathname === '/' ? 'index.html' : pathname.replace(/^\//, '');
|
|
357
610
|
filePath = path.join(webDir, targetFile);
|