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.
@@ -1,7 +1,8 @@
1
+ styles.css,1789142492231,c4ad697685da264996b025ecbded5f894ec22b146a92aa61e6d6866d658f8f68
1
2
  ScoutFavicon.png,1786186569805,41a9ca9abf7acd2976e78c72a72285b49cc0e64b2b5eeb2c2b88c69628fc618a
2
- web_cli.html,1789140253794,6c6fe438d63f80a443aa93ba51f3f1b3ba45bb44543bcddae4efe1fdff16fac1
3
- authentication.html,1789140253797,b16e3bf782087cddba622dcfbc7983979e48aaf796eb69d91f628d9486401df6
4
- paid_plans.html,1789140253792,b1e24e54b3e9205befe13562246cb8e5d94bf015c64fde56b8cb634bb611deaf
5
- styles.css,1789140253795,ec801238d798c284796825114db49f93756f573a2694737c04b08dd2374b2244
6
- index.html,1789140253796,5d0e14d14d1912334bba7655db8a611a497a8d414cc217eff97bae623f293fec
7
- app.js,1789140253792,f9f5ed22e0aa3ea78c45f0bd9310e66746f0a4619e76fa786641bf1895ce2259
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 v8.0.8)
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 v8.0.8
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,3 +1,4 @@
1
1
  #!/usr/bin/env node
2
- process.env.CHARSET = 'utf8';
2
+ process.env.CHARSET = 'utf8';
3
+ process.env.DOTENV_CONFIG_QUIET = 'true';
3
4
  import('./src/index.js');
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["plan.ts"],"names":[],"mappings":"AAOA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwEvD"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["plan.ts"],"names":[],"mappings":"AAOA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsHvD"}
@@ -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('Pro ($19/mo)')} - 1,000 credits/mo, priority model, 5 session slots\n` +
17
- ` • ${chalk.bold.magenta('Enterprise ($49/mo)')} - 10,000 credits/mo, dedicated scale, HUD vision\n` +
18
- ` • ${chalk.bold.blue('BYOK Mode (Free)')} - Unlimited credits via your custom API key / proxy`, ' Scout Subscription Plans');
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: 'Upgrade to Pro Tier ($19/mo)', value: 'upgrade_pro' },
23
- { label: 'Upgrade to Enterprise Tier ($49/mo)', value: 'upgrade_enterprise' },
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 = PLAN_CONFIGS[targetTier];
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 the order on PayPal, your subscription will be strictly verified and updated automatically on your dashboard.\n'));
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":"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"}
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[LIVE SCREEN SHARE STOPPED] ${summary}`));
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('8.0.8');
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('8.0.8'));
39
+ intro(renderBranding('9.0.0'));
40
40
  const cmdName = actionCommand ? actionCommand.name() : '';
41
41
  if (cmdName !== 'upgrade') {
42
- await checkForUpdates('8.0.8');
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('8.0.8', true);
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;AA6DxB,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,MAAqB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAwV/G"}
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"}
@@ -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: data.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);