ft-scout 2.0.5 → 2.0.7

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 (47) hide show
  1. package/.ft/config.json +3 -0
  2. package/.ft/context.json +8 -8
  3. package/README.md +5 -2
  4. package/bin/src/commands/add.d.ts.map +1 -0
  5. package/bin/src/commands/add.js +45 -0
  6. package/bin/src/commands/add.js.map +1 -0
  7. package/bin/src/commands/audit.d.ts.map +1 -0
  8. package/bin/src/commands/audit.js +79 -0
  9. package/bin/src/commands/audit.js.map +1 -0
  10. package/bin/src/commands/brief.d.ts.map +1 -0
  11. package/bin/src/commands/brief.js +37 -0
  12. package/bin/src/commands/brief.js.map +1 -0
  13. package/bin/src/commands/configCommand.d.ts.map +1 -0
  14. package/bin/src/commands/configCommand.js +27 -0
  15. package/bin/src/commands/configCommand.js.map +1 -0
  16. package/bin/src/commands/fix.d.ts.map +1 -0
  17. package/bin/src/commands/fix.js +67 -0
  18. package/bin/src/commands/fix.js.map +1 -0
  19. package/bin/src/commands/history.d.ts.map +1 -0
  20. package/bin/src/commands/history.js +20 -0
  21. package/bin/src/commands/history.js.map +1 -0
  22. package/bin/src/commands/init.js +6 -6
  23. package/bin/src/commands/init.js.map +1 -1
  24. package/bin/src/commands/recommend.d.ts.map +1 -0
  25. package/bin/src/commands/recommend.js +46 -0
  26. package/bin/src/commands/recommend.js.map +1 -0
  27. package/bin/src/commands/scan.d.ts.map +1 -0
  28. package/bin/src/commands/scan.js +80 -0
  29. package/bin/src/commands/scan.js.map +1 -0
  30. package/bin/src/commands/undo.d.ts.map +1 -0
  31. package/bin/src/commands/undo.js +37 -0
  32. package/bin/src/commands/undo.js.map +1 -0
  33. package/bin/src/engine/llm.d.ts.map +1 -1
  34. package/bin/src/engine/llm.js +131 -0
  35. package/bin/src/engine/llm.js.map +1 -1
  36. package/bin/src/index.js +135 -37
  37. package/bin/src/index.js.map +1 -1
  38. package/bin/src/utils/branding.d.ts.map +1 -0
  39. package/bin/src/utils/branding.js +14 -0
  40. package/bin/src/utils/branding.js.map +1 -0
  41. package/bin/src/utils/config.d.ts.map +1 -1
  42. package/bin/src/utils/config.js +62 -2
  43. package/bin/src/utils/config.js.map +1 -1
  44. package/bin/src/utils/updateCheck.d.ts.map +1 -0
  45. package/bin/src/utils/updateCheck.js +108 -0
  46. package/bin/src/utils/updateCheck.js.map +1 -0
  47. package/package.json +2 -2
@@ -2,15 +2,75 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  const FT_DIR = path.join(process.cwd(), '.ft');
4
4
  const CONTEXT_FILE = path.join(FT_DIR, 'context.json');
5
- export function saveContext(data) {
5
+ const HISTORY_FILE = path.join(FT_DIR, 'history.json');
6
+ const CONFIG_FILE = path.join(FT_DIR, 'config.json');
7
+ function ensureFtDir() {
6
8
  if (!fs.existsSync(FT_DIR)) {
7
9
  fs.mkdirSync(FT_DIR, { recursive: true });
8
10
  }
11
+ }
12
+ export function saveContext(data) {
13
+ ensureFtDir();
9
14
  fs.writeFileSync(CONTEXT_FILE, JSON.stringify(data, null, 2));
10
15
  }
11
16
  export function loadContext() {
12
17
  if (!fs.existsSync(CONTEXT_FILE))
13
18
  return null;
14
- return JSON.parse(fs.readFileSync(CONTEXT_FILE, 'utf-8'));
19
+ try {
20
+ return JSON.parse(fs.readFileSync(CONTEXT_FILE, 'utf-8'));
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ export function loadHistory() {
27
+ if (!fs.existsSync(HISTORY_FILE))
28
+ return [];
29
+ try {
30
+ return JSON.parse(fs.readFileSync(HISTORY_FILE, 'utf-8'));
31
+ }
32
+ catch {
33
+ return [];
34
+ }
35
+ }
36
+ export function recordHistoryAction(action) {
37
+ ensureFtDir();
38
+ const history = loadHistory();
39
+ const newItem = {
40
+ id: `ft-${Date.now()}-${Math.floor(Math.random() * 1000)}`,
41
+ timestamp: new Date().toISOString(),
42
+ ...action,
43
+ };
44
+ history.unshift(newItem);
45
+ fs.writeFileSync(HISTORY_FILE, JSON.stringify(history, null, 2));
46
+ return newItem;
47
+ }
48
+ export function getLastHistoryAction() {
49
+ const history = loadHistory();
50
+ return history.length > 0 ? history[0] : null;
51
+ }
52
+ export function popLastHistoryAction() {
53
+ ensureFtDir();
54
+ const history = loadHistory();
55
+ if (history.length === 0)
56
+ return null;
57
+ const popped = history.shift();
58
+ fs.writeFileSync(HISTORY_FILE, JSON.stringify(history, null, 2));
59
+ return popped;
60
+ }
61
+ export function loadFtConfig() {
62
+ if (!fs.existsSync(CONFIG_FILE)) {
63
+ return { allowConfidential: false };
64
+ }
65
+ try {
66
+ return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf-8'));
67
+ }
68
+ catch {
69
+ return { allowConfidential: false };
70
+ }
71
+ }
72
+ export function saveFtConfig(cfg) {
73
+ ensureFtDir();
74
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(cfg, null, 2));
15
75
  }
16
76
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAcxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAEvD,MAAM,UAAU,WAAW,CAAC,IAAiB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheck.d.ts","sourceRoot":"","sources":["updateCheck.ts"],"names":[],"mappings":"AA0BA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBjE;AAED,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsExG"}
@@ -0,0 +1,108 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import chalk from 'chalk';
5
+ import { confirm, spinner, note } from '@clack/prompts';
6
+ import { execSync } from 'child_process';
7
+ const CACHE_FILE = path.join(os.homedir(), '.scout-update-cache.json');
8
+ const CHECK_INTERVAL_MS = 4 * 60 * 60 * 1000; // 4 hours
9
+ function semverGt(latest, current) {
10
+ const parse = (v) => v.replace(/^v/, '').split('.').map((n) => parseInt(n, 10) || 0);
11
+ const l = parse(latest);
12
+ const c = parse(current);
13
+ for (let i = 0; i < 3; i++) {
14
+ if ((l[i] ?? 0) > (c[i] ?? 0))
15
+ return true;
16
+ if ((l[i] ?? 0) < (c[i] ?? 0))
17
+ return false;
18
+ }
19
+ return false;
20
+ }
21
+ export async function fetchLatestVersion() {
22
+ const controller = new AbortController();
23
+ const timeoutId = setTimeout(() => controller.abort(), 2500);
24
+ const packages = ['ft-scout', 'scout'];
25
+ for (const pkg of packages) {
26
+ try {
27
+ const res = await fetch(`https://registry.npmjs.org/${pkg}/latest`, {
28
+ signal: controller.signal,
29
+ headers: { 'User-Agent': 'FrontTerrain-Scout-CLI' },
30
+ });
31
+ if (res.ok) {
32
+ const data = (await res.json());
33
+ if (data.version) {
34
+ clearTimeout(timeoutId);
35
+ return data.version;
36
+ }
37
+ }
38
+ }
39
+ catch {
40
+ // Continue to next package or fail silently
41
+ }
42
+ }
43
+ clearTimeout(timeoutId);
44
+ return null;
45
+ }
46
+ export async function checkForUpdates(currentVersion, forceCheck = false) {
47
+ let cache = null;
48
+ const now = Date.now();
49
+ try {
50
+ if (fs.existsSync(CACHE_FILE)) {
51
+ cache = JSON.parse(fs.readFileSync(CACHE_FILE, 'utf-8'));
52
+ }
53
+ }
54
+ catch {
55
+ cache = null;
56
+ }
57
+ let latestVersion = cache?.latestVersion || null;
58
+ if (forceCheck || !cache || now - cache.lastCheck > CHECK_INTERVAL_MS) {
59
+ const fetched = await fetchLatestVersion();
60
+ if (fetched) {
61
+ latestVersion = fetched;
62
+ try {
63
+ fs.writeFileSync(CACHE_FILE, JSON.stringify({ lastCheck: now, latestVersion: fetched }, null, 2));
64
+ }
65
+ catch {
66
+ // Ignore cache write errors
67
+ }
68
+ }
69
+ }
70
+ if (latestVersion && semverGt(latestVersion, currentVersion)) {
71
+ console.log('');
72
+ note(chalk.cyan(`A new version of FrontTerrain Scout is available!`) +
73
+ '\n' +
74
+ `Current: ${chalk.yellow('v' + currentVersion)} → Latest: ${chalk.green.bold('v' + latestVersion)}\n\n` +
75
+ `Run manually: ${chalk.cyan('npm install -g ft-scout')}`, '🚀 Update Available');
76
+ try {
77
+ const shouldUpgrade = await confirm({
78
+ message: `Would you like to auto-upgrade FrontTerrain Scout to v${latestVersion} right now?`,
79
+ initialValue: true,
80
+ });
81
+ if (shouldUpgrade && typeof shouldUpgrade === 'boolean') {
82
+ const s = spinner();
83
+ s.start(`Upgrading FrontTerrain Scout to v${latestVersion}...`);
84
+ try {
85
+ execSync('npm install -g ft-scout', { stdio: 'pipe' });
86
+ s.stop(chalk.green(`Successfully upgraded FrontTerrain Scout to v${latestVersion}! 🎉`));
87
+ }
88
+ catch {
89
+ try {
90
+ execSync('npm install -g scout', { stdio: 'pipe' });
91
+ s.stop(chalk.green(`Successfully upgraded FrontTerrain Scout to v${latestVersion}! 🎉`));
92
+ }
93
+ catch {
94
+ s.stop(chalk.red(`Failed to auto-upgrade automatically.`));
95
+ console.log(chalk.dim(`Please run manually: npm install -g ft-scout`));
96
+ }
97
+ }
98
+ }
99
+ }
100
+ catch {
101
+ // Ignored if cancelled or non-interactive terminal
102
+ }
103
+ }
104
+ else if (forceCheck) {
105
+ note(chalk.green(`You are already using the latest version of FrontTerrain Scout (v${currentVersion}).`), '✨ Up to Date');
106
+ }
107
+ }
108
+ //# sourceMappingURL=updateCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["updateCheck.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "ft-scout",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "type": "module",
5
5
  "description": "FrontTerrain — The Onboarding Co-Pilot for New Codebases",
6
6
  "main": "index.js",
7
7
  "bin": {
8
8
  "ft": "bin/ft.js",
9
- "ft-scout": "bin/ft.js"
9
+ "scout": "bin/ft.js"
10
10
  },
11
11
  "scripts": {
12
12
  "test": "echo \"Tests passing\" && exit 0",