ft-scout 6.0.0 → 6.0.1

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/bin/src/index.js CHANGED
@@ -30,13 +30,13 @@ program
30
30
  .name('scout')
31
31
  .alias('ft')
32
32
  .description('FrontTerrain — The Onboarding Co-Pilot for New Codebases')
33
- .version('6.0.0');
33
+ .version('6.0.1');
34
34
  // Header UI on execution with FrontTerrain proprietary logo & version auto-checker
35
35
  program.hook('preAction', async (_thisCommand, actionCommand) => {
36
- intro(renderBranding('6.0.0'));
36
+ intro(renderBranding('6.0.1'));
37
37
  const cmdName = actionCommand ? actionCommand.name() : '';
38
38
  if (cmdName !== 'upgrade') {
39
- await checkForUpdates('6.0.0');
39
+ await checkForUpdates('6.0.1');
40
40
  }
41
41
  // Auth Guard: enforce authentication for all commands except login, signup, upgrade, help, dashboard, auth, status
42
42
  const EXEMPT_COMMANDS = ['login', 'signin', 'signup', 'register', 'upgrade', 'help', 'dashboard', 'web-ui', 'gui', 'auth', 'status'];
@@ -104,30 +104,30 @@ program
104
104
  .option('-l, --lang <language>', 'Language for AI teardowns, summaries, and Q&A responses')
105
105
  .option('--native', 'Force native script instead of Romanized terminal script')
106
106
  .action(async (repoUrl, options) => {
107
- await handleInit(repoUrl, options);
108
- outro(chalk.green('Initialization complete!'));
109
- });
107
+ await handleInit(repoUrl, options);
108
+ outro(chalk.green('Initialization complete!'));
109
+ });
110
110
  program
111
111
  .command('brief')
112
112
  .description('Human-readable onboarding summary (the "week-one explainer")')
113
113
  .action(async () => {
114
- await handleBrief();
115
- outro(chalk.cyan('Brief overview complete.'));
116
- });
114
+ await handleBrief();
115
+ outro(chalk.cyan('Brief overview complete.'));
116
+ });
117
117
  program
118
118
  .command('owners <path>')
119
119
  .description('Who actually knows this file (from git history, not guesses)')
120
120
  .action(async (path) => {
121
- await handleOwners(path);
122
- outro(chalk.cyan('File ownership analysis complete.'));
123
- });
121
+ await handleOwners(path);
122
+ outro(chalk.cyan('File ownership analysis complete.'));
123
+ });
124
124
  program
125
125
  .command('setup')
126
126
  .description('Diagnoses and fixes local environment/run failures')
127
127
  .action(async () => {
128
- await handleSetup();
129
- outro(chalk.cyan('Environment setup check complete.'));
130
- });
128
+ await handleSetup();
129
+ outro(chalk.cyan('Environment setup check complete.'));
130
+ });
131
131
  program
132
132
  .command('risky [targetRepo]')
133
133
  .description('Fragility map: high-churn files, untested code, hotfix magnets, logical coupling, & knowledge silos')
@@ -136,9 +136,9 @@ program
136
136
  .option('-l, --lang <language>', 'Language for AI risk analysis')
137
137
  .option('--native', 'Force native script')
138
138
  .action(async (targetRepo, options) => {
139
- await handleRisky(targetRepo, options);
140
- outro(chalk.cyan('Fragility scan complete.'));
141
- });
139
+ await handleRisky(targetRepo, options);
140
+ outro(chalk.cyan('Fragility scan complete.'));
141
+ });
142
142
  program
143
143
  .command('agent [goal...]')
144
144
  .alias('task')
@@ -156,46 +156,46 @@ program
156
156
  .option('-l, --lang <language>', 'Language for AI teardowns, explanations, and summaries')
157
157
  .option('--native', 'Force native script')
158
158
  .action(async (goalParts, options) => {
159
- const goalStr = Array.isArray(goalParts) && goalParts.length > 0 ? goalParts.join(' ') : undefined;
160
- const runStr = Array.isArray(options.run) ? options.run.join(' ') : options.run;
161
- await handleAgent(goalStr, {
162
- ...options,
163
- run: runStr,
164
- verifyCmd: options.verify,
165
- maxRetries: options.maxRetries ? Number(options.maxRetries) : undefined,
166
- });
167
- outro(chalk.green('Agent workflow complete.'));
159
+ const goalStr = Array.isArray(goalParts) && goalParts.length > 0 ? goalParts.join(' ') : undefined;
160
+ const runStr = Array.isArray(options.run) ? options.run.join(' ') : options.run;
161
+ await handleAgent(goalStr, {
162
+ ...options,
163
+ run: runStr,
164
+ verifyCmd: options.verify,
165
+ maxRetries: options.maxRetries ? Number(options.maxRetries) : undefined,
168
166
  });
167
+ outro(chalk.green('Agent workflow complete.'));
168
+ });
169
169
  program
170
170
  .command('recommend')
171
171
  .description('Architecture, performance, and DSA-level suggestions')
172
172
  .option('-l, --lang <language>', 'Language for recommendations')
173
173
  .option('--native', 'Force native script')
174
174
  .action(async (options) => {
175
- await handleRecommend(options);
176
- outro(chalk.cyan('Recommendations complete.'));
177
- });
175
+ await handleRecommend(options);
176
+ outro(chalk.cyan('Recommendations complete.'));
177
+ });
178
178
  program
179
179
  .command('audit')
180
180
  .description('Security & dependency/supply-chain scan')
181
181
  .action(async () => {
182
- await handleAudit();
183
- outro(chalk.cyan('Security audit complete.'));
184
- });
182
+ await handleAudit();
183
+ outro(chalk.cyan('Security audit complete.'));
184
+ });
185
185
  program
186
186
  .command('history')
187
187
  .description('Log of everything FT has done in this repo')
188
188
  .action(async () => {
189
- await handleHistory();
190
- outro(chalk.cyan('History view complete.'));
191
- });
189
+ await handleHistory();
190
+ outro(chalk.cyan('History view complete.'));
191
+ });
192
192
  program
193
193
  .command('undo')
194
194
  .description("Revert FT's last change")
195
195
  .action(async () => {
196
- await handleUndo();
197
- outro(chalk.cyan('Undo complete.'));
198
- });
196
+ await handleUndo();
197
+ outro(chalk.cyan('Undo complete.'));
198
+ });
199
199
  program
200
200
  .command('config')
201
201
  .description('Manage permissions and confidential-data access')
@@ -203,9 +203,9 @@ program
203
203
  .option('-d, --deny', 'Deny access to confidential data')
204
204
  .option('-t, --tips <mode>', 'Toggle or check discovery tips (on | off | status)')
205
205
  .action(async (options) => {
206
- await handleConfig(options);
207
- outro(chalk.cyan('Configuration updated.'));
208
- });
206
+ await handleConfig(options);
207
+ outro(chalk.cyan('Configuration updated.'));
208
+ });
209
209
  program
210
210
  .command('search <query>')
211
211
  .alias('web')
@@ -214,16 +214,16 @@ program
214
214
  .option('-l, --lang <language>', 'Language for AI search synthesis')
215
215
  .option('--native', 'Force native script')
216
216
  .action(async (query, options) => {
217
- await handleWebSearch(query, options);
218
- outro(chalk.cyan('Internet search complete.'));
219
- });
217
+ await handleWebSearch(query, options);
218
+ outro(chalk.cyan('Internet search complete.'));
219
+ });
220
220
  program
221
221
  .command('upgrade')
222
222
  .description('Check for updates and auto-upgrade Scout to the latest version')
223
223
  .action(async () => {
224
- await checkForUpdates('6.0.0', true);
225
- outro(chalk.cyan('Upgrade check complete.'));
226
- });
224
+ await checkForUpdates('6.0.1', true);
225
+ outro(chalk.cyan('Upgrade check complete.'));
226
+ });
227
227
  program
228
228
  .command('signup')
229
229
  .alias('register')
@@ -233,9 +233,9 @@ program
233
233
  .option('-p, --password <password>', 'Password')
234
234
  .option('-h, --holosene', 'Sign up via Holosene Account (holosene.frontterrain.com)')
235
235
  .action(async (options) => {
236
- await handleSignup(options);
237
- outro(chalk.cyan('Sign up flow finished.'));
238
- });
236
+ await handleSignup(options);
237
+ outro(chalk.cyan('Sign up flow finished.'));
238
+ });
239
239
  program
240
240
  .command('login')
241
241
  .alias('signin')
@@ -246,24 +246,24 @@ program
246
246
  .option('-h, --holosene', 'Authenticate using Holosene account credentials')
247
247
  .option('--holosene-token <token>', 'Authenticate with direct Holosene access token')
248
248
  .action(async (options) => {
249
- await handleLogin(options);
250
- outro(chalk.cyan('Login flow finished.'));
251
- });
249
+ await handleLogin(options);
250
+ outro(chalk.cyan('Login flow finished.'));
251
+ });
252
252
  program
253
253
  .command('logout')
254
254
  .description('Log out of your active FrontTerrain session')
255
255
  .action(async () => {
256
- await handleLogout();
257
- outro(chalk.cyan('Logout complete.'));
258
- });
256
+ await handleLogout();
257
+ outro(chalk.cyan('Logout complete.'));
258
+ });
259
259
  program
260
260
  .command('auth')
261
261
  .alias('status')
262
262
  .description('Check current authentication status and user session details')
263
263
  .action(async () => {
264
- await handleAuthStatus();
265
- outro(chalk.cyan('Auth status check complete.'));
266
- });
264
+ await handleAuthStatus();
265
+ outro(chalk.cyan('Auth status check complete.'));
266
+ });
267
267
  program
268
268
  .command('dashboard')
269
269
  .alias('web-ui')
@@ -271,9 +271,9 @@ program
271
271
  .description('Launch interactive Scout Web Dashboard sync server')
272
272
  .option('--open', 'Automatically open browser on localhost')
273
273
  .action(async (options) => {
274
- await handleDashboard({
275
- open: !!options.open,
276
- });
274
+ await handleDashboard({
275
+ open: !!options.open,
277
276
  });
277
+ });
278
278
  program.parse(process.argv);
279
279
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import chalk from 'chalk';
2
- export function renderBranding(version = '6.0.0') {
2
+ export function renderBranding(version = '6.0.1') {
3
3
  const logo = chalk.cyan.bold(' ███████╗████████╗') + ' ' + chalk.white.bold('███████╗██████╗ ██████╗ ██╗ ██╗████████╗') + '\n' +
4
4
  chalk.cyan.bold(' ██╔════╝╚══██╔══╝') + ' ' + chalk.white.bold('██╔════╝██╔════╝██╔═══██╗██║ ██║╚══██╔══╝') + '\n' +
5
5
  chalk.cyan.bold(' █████╗ ██║ ') + ' ' + chalk.white.bold('███████╗██║ ██║ ██║██║ ██║ ██║ ') + '\n' +
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ft-scout",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
4
4
  "type": "module",
5
5
  "description": "FrontTerrain — The Onboarding Co-Pilot for New Codebases",
6
6
  "main": "index.js",
@@ -36,7 +36,7 @@
36
36
  "@clack/prompts": "^1.7.0",
37
37
  "@types/nodemailer": "^8.0.1",
38
38
  "chalk": "^6.0.0",
39
- "commander": "^15.0.4",
39
+ "commander": "^13.1.0",
40
40
  "dotenv": "^17.4.2",
41
41
  "nodemailer": "^9.0.4",
42
42
  "openai": "^7.1.0",