ft-scout 8.0.4 → 8.0.5

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,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import os from 'os';
4
+ import crypto from 'crypto';
4
5
  const AUTH_DIR = path.join(os.homedir(), '.ft');
5
6
  const AUTH_FILE = path.join(AUTH_DIR, 'auth.json');
6
7
  const DEFAULT_AUTH_CONFIG = {
@@ -19,11 +20,149 @@ const DEFAULT_AUTH_CONFIG = {
19
20
  customApiKey: undefined,
20
21
  customBaseUrl: undefined,
21
22
  };
23
+ const ACCOUNTS_FILE = path.join(AUTH_DIR, 'accounts.json');
24
+ const SYSTEM_PEPPER = 'ft_scout_ledger_integrity_pepper_v1_9a8b7c';
25
+ export const TIER_CREDIT_LIMITS = {
26
+ free: 100,
27
+ pro: 1000,
28
+ enterprise: 10000,
29
+ };
22
30
  function ensureAuthDir() {
23
31
  if (!fs.existsSync(AUTH_DIR)) {
24
32
  fs.mkdirSync(AUTH_DIR, { recursive: true });
25
33
  }
26
34
  }
35
+ function getDeviceIntegrityKey() {
36
+ const machineFingerprint = `${os.hostname()}:${os.platform()}:${os.arch()}:${os.homedir()}:${SYSTEM_PEPPER}`;
37
+ return crypto.createHash('sha256').update(machineFingerprint).digest('hex');
38
+ }
39
+ function generateRecordSignature(record) {
40
+ const key = getDeviceIntegrityKey();
41
+ const payload = [
42
+ record.userId || '',
43
+ (record.email || '').toLowerCase().trim(),
44
+ record.currentTier || 'free',
45
+ record.creditsUsed,
46
+ record.creditsTotal,
47
+ record.renewAt,
48
+ record.transactionId || '',
49
+ ].join('|');
50
+ return crypto.createHmac('sha256', key).update(payload).digest('hex');
51
+ }
52
+ function verifyRecordIntegrity(record) {
53
+ if (!record._sig || typeof record._sig !== 'string')
54
+ return false;
55
+ const cleanRecord = { ...record };
56
+ delete cleanRecord._sig;
57
+ const expected = generateRecordSignature(cleanRecord);
58
+ try {
59
+ const a = Buffer.from(record._sig, 'hex');
60
+ const b = Buffer.from(expected, 'hex');
61
+ return a.length === b.length && crypto.timingSafeEqual(a, b);
62
+ }
63
+ catch {
64
+ return false;
65
+ }
66
+ }
67
+ function generateAuthSignature(config) {
68
+ const key = getDeviceIntegrityKey();
69
+ const userId = config.user?.id || '';
70
+ const email = (config.user?.email || '').toLowerCase().trim();
71
+ const payload = [
72
+ userId,
73
+ email,
74
+ config.currentTier || 'free',
75
+ config.creditsUsed ?? 0,
76
+ config.creditsTotal ?? 100,
77
+ config.renewAt || '',
78
+ config.transactionId || '',
79
+ ].join('|');
80
+ return crypto.createHmac('sha256', key).update(payload).digest('hex');
81
+ }
82
+ function verifyAuthIntegrity(config) {
83
+ if (!config.user)
84
+ return true; // Unauthenticated default state is safe
85
+ if (!config._sig || typeof config._sig !== 'string')
86
+ return false;
87
+ const cleanConfig = { ...config };
88
+ delete cleanConfig._sig;
89
+ const expected = generateAuthSignature(cleanConfig);
90
+ try {
91
+ const a = Buffer.from(config._sig, 'hex');
92
+ const b = Buffer.from(expected, 'hex');
93
+ return a.length === b.length && crypto.timingSafeEqual(a, b);
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ function loadAccountsLedger() {
100
+ if (!fs.existsSync(ACCOUNTS_FILE)) {
101
+ return {};
102
+ }
103
+ try {
104
+ const raw = fs.readFileSync(ACCOUNTS_FILE, 'utf-8');
105
+ const ledger = JSON.parse(raw);
106
+ let hasTampered = false;
107
+ for (const key of Object.keys(ledger)) {
108
+ const record = ledger[key];
109
+ if (!verifyRecordIntegrity(record)) {
110
+ hasTampered = true;
111
+ console.warn(`\x1b[33m[Scout Security Guard] Tampering detected in account ledger for ${record.email || key}! Reverting to secure defaults.\x1b[0m`);
112
+ record.currentTier = 'free';
113
+ record.creditsTotal = 100;
114
+ // Clamping usage so they cannot reset usage by tampering
115
+ record.creditsUsed = 100;
116
+ delete record.transactionId;
117
+ delete record._sig;
118
+ record._sig = generateRecordSignature(record);
119
+ }
120
+ else {
121
+ const allowedMax = TIER_CREDIT_LIMITS[record.currentTier] || 100;
122
+ if (record.creditsTotal > allowedMax) {
123
+ record.creditsTotal = allowedMax;
124
+ delete record._sig;
125
+ record._sig = generateRecordSignature(record);
126
+ hasTampered = true;
127
+ }
128
+ }
129
+ }
130
+ if (hasTampered) {
131
+ fs.writeFileSync(ACCOUNTS_FILE, JSON.stringify(ledger, null, 2), 'utf-8');
132
+ }
133
+ return ledger;
134
+ }
135
+ catch {
136
+ return {};
137
+ }
138
+ }
139
+ function saveAccountsLedger(ledger) {
140
+ ensureAuthDir();
141
+ for (const key of Object.keys(ledger)) {
142
+ const record = ledger[key];
143
+ const allowedMax = TIER_CREDIT_LIMITS[record.currentTier] || 100;
144
+ record.creditsTotal = Math.min(record.creditsTotal, allowedMax);
145
+ delete record._sig;
146
+ record._sig = generateRecordSignature(record);
147
+ }
148
+ fs.writeFileSync(ACCOUNTS_FILE, JSON.stringify(ledger, null, 2), 'utf-8');
149
+ }
150
+ function getUserAccountKey(user) {
151
+ if (!user)
152
+ return null;
153
+ if (user.email && user.email.trim()) {
154
+ return user.email.trim().toLowerCase();
155
+ }
156
+ if (user.id && user.id.trim()) {
157
+ return user.id.trim().toLowerCase();
158
+ }
159
+ return null;
160
+ }
161
+ function computeNextRenewalDate(fromDate) {
162
+ const d = new Date(fromDate || new Date());
163
+ d.setMonth(d.getMonth() + 1);
164
+ return d;
165
+ }
27
166
  export function loadAuthConfig() {
28
167
  if (!fs.existsSync(AUTH_FILE)) {
29
168
  return { ...DEFAULT_AUTH_CONFIG };
@@ -31,22 +170,76 @@ export function loadAuthConfig() {
31
170
  try {
32
171
  const raw = fs.readFileSync(AUTH_FILE, 'utf-8');
33
172
  const parsed = JSON.parse(raw);
34
- return {
173
+ const user = parsed.user && typeof parsed.user === 'object' ? parsed.user : null;
174
+ const userKey = getUserAccountKey(user);
175
+ const isAuthTampered = user && !verifyAuthIntegrity(parsed);
176
+ let creditsUsed = typeof parsed.creditsUsed === 'number' ? parsed.creditsUsed : 0;
177
+ let creditsTotal = typeof parsed.creditsTotal === 'number' ? parsed.creditsTotal : 100;
178
+ let currentTier = typeof parsed.currentTier === 'string' ? parsed.currentTier : 'free';
179
+ let renewAt = typeof parsed.renewAt === 'string' ? parsed.renewAt : null;
180
+ let transactionId = typeof parsed.transactionId === 'string' ? parsed.transactionId : undefined;
181
+ if (userKey && user) {
182
+ const ledger = loadAccountsLedger();
183
+ const record = ledger[userKey];
184
+ if (isAuthTampered) {
185
+ console.warn(`\x1b[33m[Scout Security Guard] Tampering detected in auth session! Restoring verified ledger state.\x1b[0m`);
186
+ }
187
+ if (record) {
188
+ const now = new Date();
189
+ const renewDate = new Date(record.renewAt);
190
+ if (!Number.isNaN(renewDate.getTime()) && now >= renewDate) {
191
+ // Renewal date has arrived: reset credits for the new month cycle
192
+ const nextRenewal = new Date(renewDate);
193
+ while (nextRenewal <= now) {
194
+ nextRenewal.setMonth(nextRenewal.getMonth() + 1);
195
+ }
196
+ record.creditsUsed = 0;
197
+ record.renewAt = nextRenewal.toISOString();
198
+ record.lastResetAt = now.toISOString();
199
+ ledger[userKey] = record;
200
+ saveAccountsLedger(ledger);
201
+ creditsUsed = 0;
202
+ renewAt = record.renewAt;
203
+ }
204
+ else {
205
+ // Before renewal date: strictly enforce accumulated creditsUsed
206
+ creditsUsed = record.creditsUsed;
207
+ creditsTotal = record.creditsTotal || creditsTotal;
208
+ currentTier = record.currentTier || currentTier;
209
+ renewAt = record.renewAt || renewAt;
210
+ transactionId = record.transactionId;
211
+ }
212
+ }
213
+ else if (isAuthTampered) {
214
+ // No ledger record and tampered auth session: revert to free tier with 0 credits
215
+ currentTier = 'free';
216
+ creditsTotal = 100;
217
+ creditsUsed = 100;
218
+ }
219
+ }
220
+ const allowedMax = TIER_CREDIT_LIMITS[currentTier] || 100;
221
+ creditsTotal = Math.min(creditsTotal, allowedMax);
222
+ const config = {
35
223
  token: typeof parsed.token === 'string' ? parsed.token : null,
36
224
  refreshToken: typeof parsed.refreshToken === 'string' ? parsed.refreshToken : null,
37
225
  tenantId: typeof parsed.tenantId === 'string' ? parsed.tenantId : null,
38
226
  provider: typeof parsed.provider === 'string' ? parsed.provider : 'firebase',
39
- user: parsed.user && typeof parsed.user === 'object' ? parsed.user : null,
227
+ user,
40
228
  loggedInAt: typeof parsed.loggedInAt === 'string' ? parsed.loggedInAt : null,
41
- creditsUsed: typeof parsed.creditsUsed === 'number' ? parsed.creditsUsed : 0,
42
- creditsTotal: typeof parsed.creditsTotal === 'number' ? parsed.creditsTotal : 100,
43
- currentTier: typeof parsed.currentTier === 'string' ? parsed.currentTier : 'free',
44
- renewAt: typeof parsed.renewAt === 'string' ? parsed.renewAt : null,
229
+ creditsUsed,
230
+ creditsTotal,
231
+ currentTier,
232
+ renewAt,
233
+ transactionId,
45
234
  byokEnabled: typeof parsed.byokEnabled === 'boolean' ? parsed.byokEnabled : false,
46
235
  customLlmProvider: typeof parsed.customLlmProvider === 'string' ? parsed.customLlmProvider : 'nvidia',
47
236
  customApiKey: typeof parsed.customApiKey === 'string' ? parsed.customApiKey : undefined,
48
237
  customBaseUrl: typeof parsed.customBaseUrl === 'string' ? parsed.customBaseUrl : undefined,
49
238
  };
239
+ if (isAuthTampered && user) {
240
+ saveAuthConfig(config);
241
+ }
242
+ return config;
50
243
  }
51
244
  catch {
52
245
  return { ...DEFAULT_AUTH_CONFIG };
@@ -54,10 +247,144 @@ export function loadAuthConfig() {
54
247
  }
55
248
  export function saveAuthConfig(config) {
56
249
  ensureAuthDir();
57
- fs.writeFileSync(AUTH_FILE, JSON.stringify(config, null, 2), 'utf-8');
250
+ const ledger = loadAccountsLedger();
251
+ const userKey = getUserAccountKey(config.user);
252
+ let finalConfig = { ...config };
253
+ if (userKey && config.user) {
254
+ const existing = ledger[userKey];
255
+ const now = new Date();
256
+ if (existing) {
257
+ const effectiveRenewAt = config.renewAt || existing.renewAt;
258
+ const renewDate = new Date(effectiveRenewAt);
259
+ const isRenewalDue = !Number.isNaN(renewDate.getTime()) && now >= renewDate;
260
+ if (isRenewalDue) {
261
+ // Monthly cycle reached: Reset credits to 0 and calculate next renewal
262
+ const nextRenewal = new Date(renewDate);
263
+ while (nextRenewal <= now) {
264
+ nextRenewal.setMonth(nextRenewal.getMonth() + 1);
265
+ }
266
+ const updatedRecord = {
267
+ ...existing,
268
+ creditsUsed: 0,
269
+ renewAt: nextRenewal.toISOString(),
270
+ lastResetAt: now.toISOString(),
271
+ currentTier: config.currentTier || existing.currentTier || 'free',
272
+ creditsTotal: config.creditsTotal || existing.creditsTotal || 100,
273
+ };
274
+ ledger[userKey] = updatedRecord;
275
+ finalConfig.creditsUsed = 0;
276
+ finalConfig.renewAt = updatedRecord.renewAt;
277
+ finalConfig.currentTier = updatedRecord.currentTier;
278
+ finalConfig.creditsTotal = updatedRecord.creditsTotal;
279
+ }
280
+ else if (config.resetCredits === true) {
281
+ // Explicit verified plan upgrade / subscription purchase
282
+ const resolvedTier = config.currentTier || existing.currentTier || 'free';
283
+ const resolvedTotal = config.creditsTotal || existing.creditsTotal || 100;
284
+ const resolvedRenewAt = config.renewAt || existing.renewAt || computeNextRenewalDate().toISOString();
285
+ const updatedRecord = {
286
+ ...existing,
287
+ creditsUsed: 0,
288
+ currentTier: resolvedTier,
289
+ creditsTotal: resolvedTotal,
290
+ renewAt: resolvedRenewAt,
291
+ lastResetAt: now.toISOString(),
292
+ transactionId: config.transactionId || existing.transactionId,
293
+ };
294
+ ledger[userKey] = updatedRecord;
295
+ finalConfig.creditsUsed = 0;
296
+ finalConfig.currentTier = resolvedTier;
297
+ finalConfig.creditsTotal = resolvedTotal;
298
+ finalConfig.renewAt = resolvedRenewAt;
299
+ finalConfig.transactionId = updatedRecord.transactionId;
300
+ }
301
+ else {
302
+ // Before renewal date: strictly maintain consumed credits
303
+ const candidateUsed = typeof config.creditsUsed === 'number' ? config.creditsUsed : 0;
304
+ const resolvedUsed = Math.max(existing.creditsUsed, candidateUsed);
305
+ const resolvedTier = config.currentTier || existing.currentTier || 'free';
306
+ const resolvedTotal = config.creditsTotal || existing.creditsTotal || 100;
307
+ const resolvedRenewAt = config.renewAt || existing.renewAt || computeNextRenewalDate().toISOString();
308
+ const updatedRecord = {
309
+ ...existing,
310
+ userId: config.user.id || existing.userId,
311
+ email: config.user.email || existing.email,
312
+ creditsUsed: resolvedUsed,
313
+ creditsTotal: resolvedTotal,
314
+ currentTier: resolvedTier,
315
+ renewAt: resolvedRenewAt,
316
+ transactionId: config.transactionId || existing.transactionId,
317
+ byokEnabled: config.byokEnabled !== undefined ? config.byokEnabled : existing.byokEnabled,
318
+ customLlmProvider: config.customLlmProvider || existing.customLlmProvider,
319
+ customApiKey: config.customApiKey !== undefined ? config.customApiKey : existing.customApiKey,
320
+ customBaseUrl: config.customBaseUrl !== undefined ? config.customBaseUrl : existing.customBaseUrl,
321
+ };
322
+ ledger[userKey] = updatedRecord;
323
+ finalConfig.creditsUsed = resolvedUsed;
324
+ finalConfig.currentTier = resolvedTier;
325
+ finalConfig.creditsTotal = resolvedTotal;
326
+ finalConfig.renewAt = resolvedRenewAt;
327
+ finalConfig.transactionId = updatedRecord.transactionId;
328
+ }
329
+ }
330
+ else {
331
+ // First time user registration / first login
332
+ const renewAt = config.renewAt || computeNextRenewalDate().toISOString();
333
+ const initialRecord = {
334
+ userId: config.user.id,
335
+ email: config.user.email,
336
+ currentTier: config.currentTier || 'free',
337
+ creditsUsed: config.creditsUsed ?? 0,
338
+ creditsTotal: config.creditsTotal ?? 100,
339
+ renewAt,
340
+ lastResetAt: now.toISOString(),
341
+ transactionId: config.transactionId,
342
+ byokEnabled: config.byokEnabled ?? false,
343
+ customLlmProvider: config.customLlmProvider,
344
+ customApiKey: config.customApiKey,
345
+ customBaseUrl: config.customBaseUrl,
346
+ };
347
+ ledger[userKey] = initialRecord;
348
+ finalConfig.creditsUsed = initialRecord.creditsUsed;
349
+ finalConfig.creditsTotal = initialRecord.creditsTotal;
350
+ finalConfig.currentTier = initialRecord.currentTier;
351
+ finalConfig.renewAt = initialRecord.renewAt;
352
+ finalConfig.transactionId = initialRecord.transactionId;
353
+ }
354
+ saveAccountsLedger(ledger);
355
+ }
356
+ const cleanConfig = { ...finalConfig };
357
+ delete cleanConfig._sig;
358
+ finalConfig._sig = generateAuthSignature(cleanConfig);
359
+ fs.writeFileSync(AUTH_FILE, JSON.stringify(finalConfig, null, 2), 'utf-8');
58
360
  }
59
361
  export function clearAuthConfig() {
60
362
  ensureAuthDir();
363
+ try {
364
+ if (fs.existsSync(AUTH_FILE)) {
365
+ const current = loadAuthConfig();
366
+ const userKey = getUserAccountKey(current.user);
367
+ if (userKey && current.user) {
368
+ const ledger = loadAccountsLedger();
369
+ const existing = ledger[userKey];
370
+ ledger[userKey] = {
371
+ userId: current.user.id,
372
+ email: current.user.email,
373
+ currentTier: current.currentTier || existing?.currentTier || 'free',
374
+ creditsUsed: current.creditsUsed ?? existing?.creditsUsed ?? 0,
375
+ creditsTotal: current.creditsTotal ?? existing?.creditsTotal ?? 100,
376
+ renewAt: current.renewAt || existing?.renewAt || computeNextRenewalDate().toISOString(),
377
+ lastResetAt: existing?.lastResetAt || new Date().toISOString(),
378
+ byokEnabled: current.byokEnabled,
379
+ customLlmProvider: current.customLlmProvider,
380
+ customApiKey: current.customApiKey,
381
+ customBaseUrl: current.customBaseUrl,
382
+ };
383
+ saveAccountsLedger(ledger);
384
+ }
385
+ }
386
+ }
387
+ catch { }
61
388
  fs.writeFileSync(AUTH_FILE, JSON.stringify(DEFAULT_AUTH_CONFIG, null, 2), 'utf-8');
62
389
  }
63
390
  export function isLoggedIn() {
@@ -72,6 +399,46 @@ export function getCurrentUser() {
72
399
  const config = loadAuthConfig();
73
400
  return config.user;
74
401
  }
402
+ export function getNextRenewalDate(config) {
403
+ const cfg = config || loadAuthConfig();
404
+ const baseDateStr = cfg.renewAt || cfg.user?.createdAt || cfg.loggedInAt;
405
+ const now = new Date();
406
+ if (baseDateStr) {
407
+ const baseDate = new Date(baseDateStr);
408
+ if (!Number.isNaN(baseDate.getTime())) {
409
+ const renewal = new Date(baseDate);
410
+ const renewalDay = renewal.getDate();
411
+ while (renewal <= now) {
412
+ renewal.setDate(1);
413
+ renewal.setMonth(renewal.getMonth() + 1);
414
+ const lastDayOfMonth = new Date(renewal.getFullYear(), renewal.getMonth() + 1, 0).getDate();
415
+ renewal.setDate(Math.min(renewalDay, lastDayOfMonth));
416
+ }
417
+ return renewal;
418
+ }
419
+ }
420
+ // Default fallback: 1st of next month
421
+ return new Date(now.getFullYear(), now.getMonth() + 1, 1);
422
+ }
423
+ export function formatRenewalDate(date) {
424
+ const formatted = date.toLocaleDateString('en-US', {
425
+ month: 'short',
426
+ day: 'numeric',
427
+ year: 'numeric',
428
+ });
429
+ const now = new Date();
430
+ const diffMs = date.getTime() - now.getTime();
431
+ const diffDays = Math.ceil(diffMs / (1000 * 60 * 60 * 24));
432
+ if (diffDays <= 0) {
433
+ return `${formatted} (resets today)`;
434
+ }
435
+ else if (diffDays === 1) {
436
+ return `${formatted} (resets tomorrow)`;
437
+ }
438
+ else {
439
+ return `${formatted} (in ${diffDays} days)`;
440
+ }
441
+ }
75
442
  export function consumeCredit(amount = 1) {
76
443
  const config = loadAuthConfig();
77
444
  if (config.byokEnabled) {
@@ -87,12 +454,16 @@ export function consumeCredit(amount = 1) {
87
454
  const total = config.creditsTotal ?? 100;
88
455
  const remaining = total - used;
89
456
  if (remaining < amount) {
457
+ const renewalDate = getNextRenewalDate(config);
458
+ const renewalFormatted = formatRenewalDate(renewalDate);
90
459
  return {
91
460
  success: false,
92
461
  isByok: false,
93
462
  remaining: Math.max(0, remaining),
94
463
  isLowCredit: true,
95
464
  reason: `Credit limit reached for ${config.currentTier || 'Free'} plan (${used}/${total} credits consumed).`,
465
+ renewalFormatted,
466
+ renewalDate,
96
467
  };
97
468
  }
98
469
  const remainingAfter = total - (used + amount);
@@ -117,9 +488,13 @@ export function checkTierAccess(feature) {
117
488
  const used = config.creditsUsed ?? 0;
118
489
  const total = config.creditsTotal ?? 100;
119
490
  if (used >= total) {
491
+ const renewalDate = getNextRenewalDate(config);
492
+ const renewalFormatted = formatRenewalDate(renewalDate);
120
493
  return {
121
494
  allowed: false,
122
495
  reason: `Credit quota exhausted (${used}/${total} credits used). Upgrade your plan or enable BYOK mode in dashboard.`,
496
+ renewalFormatted,
497
+ renewalDate,
123
498
  };
124
499
  }
125
500
  return { allowed: true };
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["auth.ts"],"names":[],"mappings":"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"}
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 = '8.0.4') {
2
+ export function renderBranding(version = '8.0.5') {
3
3
  const logo = chalk.cyan.bold(' ███████╗████████╗') + ' ' + chalk.cyan.bold('███████╗ ██████╗ ██████╗ ██╗ ██╗████████╗') + '\n' +
4
4
  chalk.cyan.bold(' ██╔════╝╚══██╔══╝') + ' ' + chalk.cyan.bold('██╔════╝ ██╔════╝██╔═══██╗ ██║ ██║╚══██╔══╝') + '\n' +
5
5
  chalk.cyan.bold(' █████╗ ██║ ') + ' ' + chalk.cyan.bold(' ███████╗ ██║ ██║ ██║ ██║ ██║ ██║ ') + '\n' +
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["payment.ts"],"names":[],"mappings":"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"}