fraim 2.0.130 → 2.0.131

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.
@@ -290,8 +290,17 @@ class FirstRunSessionService {
290
290
  }
291
291
  const fraimRow = this.getRow('fraim');
292
292
  if (commandVersion('npx') !== null) {
293
- fraimRow.status = 'ok';
294
- fraimRow.verb = 'ready';
293
+ // Only mark ok if setup has previously completed (config.json is written after autoConfigureMCP).
294
+ // Without this, the wizard skips runFraimRow entirely and autoConfigureMCP never runs for IDEs.
295
+ const globalConfigPath = path_1.default.join((0, script_sync_utils_1.getUserFraimDir)(), 'config.json');
296
+ if (fs_1.default.existsSync(globalConfigPath)) {
297
+ fraimRow.status = 'ok';
298
+ fraimRow.verb = 'ready';
299
+ }
300
+ else {
301
+ fraimRow.status = 'pending';
302
+ fraimRow.verb = "we'll configure your IDEs";
303
+ }
295
304
  persistShellPath();
296
305
  }
297
306
  else {
@@ -521,11 +530,14 @@ class FirstRunSessionService {
521
530
  await runProcess('npm', ['install', '-g', 'fraim-framework@latest'], { npm_config_prefix: prefix });
522
531
  }
523
532
  persistShellPath();
524
- (0, setup_1.saveGlobalConfig)(this.key, 'conversational', {}, {});
525
533
  const detectedIDEs = (0, ide_detector_1.detectInstalledIDEs)();
526
534
  if (detectedIDEs.length > 0) {
527
535
  await (0, auto_mcp_setup_1.autoConfigureMCP)(this.key, {}, detectedIDEs.map((ide) => ide.name), {});
528
536
  }
537
+ // Write config.json after autoConfigureMCP so detectRowsOnLoad can use its
538
+ // existence as a signal that IDE setup completed. Writing it before would cause
539
+ // the wizard to mark this row 'ok' on retry before IDEs are actually configured.
540
+ (0, setup_1.saveGlobalConfig)(this.key, 'conversational', {}, {});
529
541
  const { syncUserLevelArtifacts } = await Promise.resolve().then(() => __importStar(require('../cli/setup/user-level-sync')));
530
542
  await syncUserLevelArtifacts();
531
543
  const { installSlashCommands, installGlobalRules } = await Promise.resolve().then(() => __importStar(require('../cli/setup/ide-global-integration')));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fraim",
3
- "version": "2.0.130",
3
+ "version": "2.0.131",
4
4
  "description": "FRAIM CLI - Framework for Rigor-based AI Management (alias for fraim-framework)",
5
5
  "main": "index.js",
6
6
  "bin": {