lynxprompt 1.0.0 → 1.0.3

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/dist/index.js CHANGED
@@ -324,19 +324,18 @@ function displayWelcome(user) {
324
324
  const plan = user.plan?.toUpperCase() || "FREE";
325
325
  const name = user.name || user.email.split("@")[0];
326
326
  const planConfig = {
327
- FREE: { color: chalk.gray, emoji: "\u{1F193}", badge: "Free" },
328
- PRO: { color: chalk.cyan, emoji: "\u26A1", badge: "Pro" },
329
- MAX: { color: chalk.magenta, emoji: "\u{1F680}", badge: "Max" },
330
- TEAMS: { color: chalk.yellow, emoji: "\u{1F465}", badge: "Teams" }
327
+ FREE: { color: chalk.gray, emoji: "\u{1F193}", badge: "Users" },
328
+ TEAMS: { color: chalk.cyan, emoji: "\u{1F465}", badge: "Teams" }
331
329
  };
332
- const config2 = planConfig[plan] || planConfig.FREE;
333
- const W = 45;
330
+ const effectivePlan = plan === "PRO" || plan === "MAX" ? "FREE" : plan;
331
+ const config2 = planConfig[effectivePlan] || planConfig.FREE;
332
+ const W = 46;
334
333
  const b = chalk.bold;
335
334
  const pad = (s, len) => s + " ".repeat(Math.max(0, len - s.length));
336
335
  console.log();
337
336
  console.log(b("\u250C" + "\u2500".repeat(W) + "\u2510"));
338
337
  console.log(b("\u2502") + " ".repeat(W) + b("\u2502"));
339
- console.log(b("\u2502") + pad(` ${config2.emoji} Welcome to LynxPrompt CLI!`, W - 1) + b("\u2502"));
338
+ console.log(b("\u2502") + pad(` ${config2.emoji} Welcome to LynxPrompt CLI!`, W) + b("\u2502"));
340
339
  console.log(b("\u2502") + " ".repeat(W) + b("\u2502"));
341
340
  console.log(b("\u2502") + pad(` User: ${name}`, W) + b("\u2502"));
342
341
  console.log(b("\u2502") + pad(` Plan: ${config2.badge}`, W) + b("\u2502"));
@@ -345,22 +344,22 @@ function displayWelcome(user) {
345
344
  console.log();
346
345
  console.log(chalk.bold("\u{1F4CB} Your CLI Capabilities:"));
347
346
  console.log();
348
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt init") + chalk.gray(" - Generate config files"));
349
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt wizard") + chalk.gray(" - Interactive wizard"));
350
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt list") + chalk.gray(" - List your blueprints"));
351
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt pull <id>") + chalk.gray(" - Download blueprints"));
352
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt push") + chalk.gray(" - Upload blueprints to marketplace"));
353
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt link") + chalk.gray(" - Link project to blueprint"));
354
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt sync") + chalk.gray(" - Sync linked blueprints"));
355
- console.log(chalk.green(" \u2713") + " " + chalk.white("lynxprompt diff") + chalk.gray(" - Compare local vs remote"));
356
- if (plan === "TEAMS") {
347
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp wizard") + chalk.gray(" - Interactive config wizard"));
348
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp list") + chalk.gray(" - List your blueprints"));
349
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp pull <id>") + chalk.gray(" - Download blueprints"));
350
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp push") + chalk.gray(" - Upload blueprints to marketplace"));
351
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp link") + chalk.gray(" - Link project to blueprint"));
352
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp diff") + chalk.gray(" - Compare local vs cloud"));
353
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp whoami") + chalk.gray(" - Show account info"));
354
+ console.log(chalk.green(" \u2713") + " " + chalk.white("lynxp logout") + chalk.gray(" - Sign out of CLI"));
355
+ if (effectivePlan === "TEAMS") {
357
356
  console.log();
358
357
  console.log(chalk.cyan(" \u26A1") + " " + chalk.white("AI-powered editing") + chalk.gray(" - AI assistant for configs"));
359
- console.log(chalk.yellow(" \u{1F465}") + " " + chalk.white("Team blueprints") + chalk.gray(" - Share with your team"));
360
- console.log(chalk.yellow(" \u{1F465}") + " " + chalk.white("SSO integration") + chalk.gray(" - Enterprise authentication"));
358
+ console.log(chalk.cyan(" \u{1F465}") + " " + chalk.white("Team blueprints") + chalk.gray(" - Share with your team"));
359
+ console.log(chalk.cyan(" \u{1F465}") + " " + chalk.white("SSO integration") + chalk.gray(" - Enterprise authentication"));
361
360
  }
362
361
  console.log();
363
- console.log(chalk.gray("Token stored securely. Run ") + chalk.cyan("lynxprompt --help") + chalk.gray(" to see all commands."));
362
+ console.log(chalk.gray("Token stored securely. Run ") + chalk.cyan("lynxp --help") + chalk.gray(" to see all commands."));
364
363
  console.log();
365
364
  }
366
365
 
@@ -424,8 +423,8 @@ async function whoamiCommand() {
424
423
  if (error.statusCode === 401) {
425
424
  console.error(chalk3.red("Your session has expired. Please run 'lynxprompt login' again."));
426
425
  } else if (error.statusCode === 403) {
427
- console.error(chalk3.red("API access requires Pro, Max, or Teams subscription."));
428
- console.error(chalk3.gray("Upgrade at https://lynxprompt.com/pricing"));
426
+ console.error(chalk3.red("API access error. Please check your subscription."));
427
+ console.error(chalk3.gray("Visit https://lynxprompt.com/pricing for plan details."));
429
428
  } else {
430
429
  console.error(chalk3.red(`Error: ${error.message}`));
431
430
  }
@@ -438,12 +437,12 @@ async function whoamiCommand() {
438
437
  function formatPlan(plan) {
439
438
  const planColors = {
440
439
  FREE: chalk3.gray,
441
- PRO: chalk3.blue,
442
- MAX: chalk3.magenta,
443
440
  TEAMS: chalk3.cyan
444
441
  };
445
- const colorFn = planColors[plan] || chalk3.white;
446
- return colorFn(plan);
442
+ const displayPlan = plan === "PRO" || plan === "MAX" ? "FREE" : plan;
443
+ const displayName = displayPlan === "FREE" ? "Users" : displayPlan;
444
+ const colorFn = planColors[displayPlan] || chalk3.white;
445
+ return colorFn(displayName);
447
446
  }
448
447
 
449
448
  // src/commands/list.ts
@@ -491,8 +490,8 @@ function printBlueprint(bp) {
491
490
  }[bp.visibility] || "\u{1F4C4}";
492
491
  const tierBadge = {
493
492
  SIMPLE: chalk4.gray("[Basic]"),
494
- INTERMEDIATE: chalk4.blue("[Pro]"),
495
- ADVANCED: chalk4.magenta("[Max]")
493
+ INTERMEDIATE: chalk4.blue("[Standard]"),
494
+ ADVANCED: chalk4.cyan("[Advanced]")
496
495
  }[bp.tier] || "";
497
496
  console.log(` ${visibilityIcon} ${chalk4.bold(bp.name)} ${tierBadge}`);
498
497
  console.log(` ${chalk4.cyan(bp.id)}`);
@@ -515,8 +514,8 @@ function handleApiError(error) {
515
514
  if (error.statusCode === 401) {
516
515
  console.error(chalk4.red("Your session has expired. Please run 'lynxprompt login' again."));
517
516
  } else if (error.statusCode === 403) {
518
- console.error(chalk4.red("API access requires Pro, Max, or Teams subscription."));
519
- console.error(chalk4.gray("Upgrade at https://lynxprompt.com/pricing"));
517
+ console.error(chalk4.red("API access error. Please check your subscription."));
518
+ console.error(chalk4.gray("Visit https://lynxprompt.com/pricing for plan details."));
520
519
  } else {
521
520
  console.error(chalk4.red(`Error: ${error.message}`));
522
521
  }
@@ -2460,16 +2459,13 @@ function generateFileContent(options, platform2) {
2460
2459
  sections.push("");
2461
2460
  }
2462
2461
  }
2463
- let boundaries = BOUNDARIES[options.boundaries];
2464
- if (options.boundaryAlways?.length || options.boundaryNever?.length || options.boundaryAsk?.length) {
2465
- boundaries = {
2466
- ...boundaries,
2467
- always: options.boundaryAlways?.length ? options.boundaryAlways : boundaries.always,
2468
- never: options.boundaryNever?.length ? options.boundaryNever : boundaries.never,
2469
- askFirst: options.boundaryAsk?.length ? options.boundaryAsk : boundaries.askFirst
2470
- };
2471
- }
2472
- if (boundaries) {
2462
+ const presetBoundaries = BOUNDARIES[options.boundaries] || BOUNDARIES.standard;
2463
+ const boundaries = {
2464
+ always: options.boundaryAlways?.length ? options.boundaryAlways : presetBoundaries.always,
2465
+ never: options.boundaryNever?.length ? options.boundaryNever : presetBoundaries.never,
2466
+ askFirst: options.boundaryAsk?.length ? options.boundaryAsk : presetBoundaries.askFirst
2467
+ };
2468
+ if (boundaries.always?.length || boundaries.never?.length || boundaries.askFirst?.length) {
2473
2469
  if (isMarkdown || isMdc) {
2474
2470
  sections.push("## Boundaries");
2475
2471
  sections.push("");
@@ -3818,8 +3814,8 @@ async function runWizardWithDraftProtection(options) {
3818
3814
  const authenticated = isAuthenticated();
3819
3815
  const user = getUser();
3820
3816
  const userPlanRaw = user?.plan?.toLowerCase() || "free";
3821
- const userTier = ["pro", "max", "teams"].includes(userPlanRaw) ? userPlanRaw : "free";
3822
- const userPlanDisplay = user?.plan?.toUpperCase() || "FREE";
3817
+ const userTier = userPlanRaw === "teams" ? "teams" : "users";
3818
+ const userPlanDisplay = userTier === "teams" ? "TEAMS" : "USERS";
3823
3819
  if (!authenticated) {
3824
3820
  const W = 55;
3825
3821
  const y = chalk7.yellow;
@@ -3827,9 +3823,9 @@ async function runWizardWithDraftProtection(options) {
3827
3823
  console.log(y("\u250C" + "\u2500".repeat(W) + "\u2510"));
3828
3824
  console.log(y("\u2502") + pad(" \u{1F4A1} Log in for full wizard features:", W - 1) + y("\u2502"));
3829
3825
  console.log(y("\u2502") + " ".repeat(W) + y("\u2502"));
3830
- console.log(y("\u2502") + pad(" \u2022 Commands & Code Style [PRO]", W) + y("\u2502"));
3831
- console.log(y("\u2502") + pad(" \u2022 Boundaries, Testing, Static Files [MAX]", W) + y("\u2502"));
3832
- console.log(y("\u2502") + pad(" \u2022 Auto-detect from remote repos [MAX]", W) + y("\u2502"));
3826
+ console.log(y("\u2502") + pad(" \u2022 Full wizard with all steps", W) + y("\u2502"));
3827
+ console.log(y("\u2502") + pad(" \u2022 Auto-detect from repos [TEAMS]", W) + y("\u2502"));
3828
+ console.log(y("\u2502") + pad(" \u2022 AI assistant for configs [TEAMS]", W) + y("\u2502"));
3833
3829
  console.log(y("\u2502") + pad(" \u2022 Save preferences to your profile", W) + y("\u2502"));
3834
3830
  console.log(y("\u2502") + pad(" \u2022 Push configs to cloud (lynxp push)", W) + y("\u2502"));
3835
3831
  console.log(y("\u2502") + pad(" \u2022 Share across devices (lynxp push/pull)", W) + y("\u2502"));
@@ -3838,7 +3834,7 @@ async function runWizardWithDraftProtection(options) {
3838
3834
  console.log(y("\u2514" + "\u2500".repeat(W) + "\u2518"));
3839
3835
  console.log();
3840
3836
  } else {
3841
- const planEmoji = userTier === "teams" ? "\u{1F465}" : userTier === "max" ? "\u{1F680}" : userTier === "pro" ? "\u26A1" : "\u{1F193}";
3837
+ const planEmoji = userTier === "teams" ? "\u{1F465}" : "\u{1F193}";
3842
3838
  console.log(chalk7.green(` \u2713 Logged in as ${chalk7.bold(user?.name || user?.email)} ${planEmoji} ${chalk7.gray(userPlanDisplay)}`));
3843
3839
  console.log();
3844
3840
  }
@@ -3865,19 +3861,19 @@ async function runWizardWithDraftProtection(options) {
3865
3861
  console.log(chalk7.gray(" No project detected in current directory."));
3866
3862
  console.log();
3867
3863
  }
3868
- const canDetectRemote = canAccessAI(userTier);
3864
+ const canDetectRemote = true;
3869
3865
  if (canDetectRemote) {
3870
3866
  console.log();
3871
- console.log(chalk7.magenta.bold(" \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"));
3872
- console.log(chalk7.magenta.bold(" \u2502 \u2728 AUTO-DETECT FROM REPOSITORY (MAX/TEAMS) \u2502"));
3873
- console.log(chalk7.magenta.bold(" \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"));
3874
- console.log(chalk7.gray(" Analyze any public GitHub/GitLab repo, or private with git credentials."));
3867
+ console.log(chalk7.magenta.bold(" \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"));
3868
+ console.log(chalk7.magenta.bold(" \u2502 \u2728 AUTO-DETECT FROM REPOSITORY \u2502"));
3869
+ console.log(chalk7.magenta.bold(" \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"));
3870
+ console.log(chalk7.gray(" Analyze any local path, GitHub/GitLab URL, or private repo with credentials."));
3875
3871
  console.log(chalk7.gray(" We'll detect: languages, frameworks, commands, license, CI/CD, and more!"));
3876
3872
  console.log();
3877
3873
  const remoteResponse = await prompts3({
3878
3874
  type: "confirm",
3879
3875
  name: "useRemote",
3880
- message: detected ? chalk7.white("\u{1F50D} Analyze a different remote repository instead?") : chalk7.white("\u{1F50D} Analyze a remote repository URL?"),
3876
+ message: detected ? chalk7.white("\u{1F50D} Analyze a different repository instead?") : chalk7.white("\u{1F50D} Analyze a repository (local path or URL)?"),
3881
3877
  initial: false
3882
3878
  // Default to No - user must explicitly choose Yes
3883
3879
  }, promptConfig);
@@ -3885,33 +3881,58 @@ async function runWizardWithDraftProtection(options) {
3885
3881
  const urlResponse = await prompts3({
3886
3882
  type: "text",
3887
3883
  name: "url",
3888
- message: chalk7.white("Enter the repository URL:"),
3889
- hint: chalk7.gray("GitHub, GitLab, or any git host"),
3890
- validate: (v) => isGitUrl(v) || "Please enter a valid Git URL"
3884
+ message: chalk7.white("Enter local path or repository URL:"),
3885
+ hint: chalk7.gray("/path/to/project or https://github.com/user/repo"),
3886
+ validate: (v) => {
3887
+ if (!v || v.trim() === "") return "Please enter a path or URL";
3888
+ if (v.startsWith("/") || v.startsWith("~") || v.startsWith(".")) return true;
3889
+ if (isGitUrl(v)) return true;
3890
+ return "Please enter a valid local path or Git URL";
3891
+ }
3891
3892
  }, promptConfig);
3892
3893
  if (urlResponse.url) {
3893
- const host = urlResponse.url.toLowerCase().includes("github") ? "GitHub API" : urlResponse.url.toLowerCase().includes("gitlab") ? "GitLab API" : "shallow clone";
3894
- const remoteSpinner = ora6(`Analyzing remote repository via ${host}...`).start();
3895
- const remoteDetected = await detectFromRemoteUrl(urlResponse.url);
3896
- if (remoteDetected) {
3897
- detected = remoteDetected;
3898
- remoteSpinner.succeed("Remote repository analyzed");
3899
- const detectedInfo = [
3900
- chalk7.green("\u2713 Remote project detected")
3901
- ];
3902
- if (detected.name) detectedInfo.push(chalk7.gray(` Name: ${detected.name}`));
3903
- if (detected.stack.length > 0) detectedInfo.push(chalk7.gray(` Stack: ${detected.stack.join(", ")}`));
3904
- if (detected.repoUrl) detectedInfo.push(chalk7.gray(` Source: ${detected.repoUrl}`));
3905
- printBox(detectedInfo, chalk7.gray);
3906
- console.log();
3894
+ const inputPath = urlResponse.url.trim();
3895
+ const isLocalPath = inputPath.startsWith("/") || inputPath.startsWith("~") || inputPath.startsWith(".");
3896
+ if (isLocalPath) {
3897
+ const { homedir } = await import("os");
3898
+ const resolvedPath = inputPath.startsWith("~") ? inputPath.replace("~", homedir()) : inputPath.startsWith(".") ? join4(process.cwd(), inputPath) : inputPath;
3899
+ const localSpinner = ora6(`Analyzing local repository at ${resolvedPath}...`).start();
3900
+ const localDetected = await detectProject(resolvedPath);
3901
+ if (localDetected) {
3902
+ detected = localDetected;
3903
+ localSpinner.succeed("Local repository analyzed");
3904
+ const detectedInfo = [
3905
+ chalk7.green("\u2713 Local project detected")
3906
+ ];
3907
+ if (detected.name) detectedInfo.push(chalk7.gray(` Name: ${detected.name}`));
3908
+ if (detected.stack.length > 0) detectedInfo.push(chalk7.gray(` Stack: ${detected.stack.join(", ")}`));
3909
+ if (detected.packageManager) detectedInfo.push(chalk7.gray(` Package manager: ${detected.packageManager}`));
3910
+ printBox(detectedInfo, chalk7.gray);
3911
+ console.log();
3912
+ } else {
3913
+ localSpinner.fail("Could not analyze directory (no recognizable project structure)");
3914
+ }
3907
3915
  } else {
3908
- remoteSpinner.fail("Could not analyze repository (may be private or inaccessible)");
3916
+ const host = inputPath.toLowerCase().includes("github") ? "GitHub API" : inputPath.toLowerCase().includes("gitlab") ? "GitLab API" : "shallow clone";
3917
+ const remoteSpinner = ora6(`Analyzing remote repository via ${host}...`).start();
3918
+ const remoteDetected = await detectFromRemoteUrl(inputPath);
3919
+ if (remoteDetected) {
3920
+ detected = remoteDetected;
3921
+ remoteSpinner.succeed("Remote repository analyzed");
3922
+ const detectedInfo = [
3923
+ chalk7.green("\u2713 Remote project detected")
3924
+ ];
3925
+ if (detected.name) detectedInfo.push(chalk7.gray(` Name: ${detected.name}`));
3926
+ if (detected.stack.length > 0) detectedInfo.push(chalk7.gray(` Stack: ${detected.stack.join(", ")}`));
3927
+ if (detected.repoUrl) detectedInfo.push(chalk7.gray(` Source: ${detected.repoUrl}`));
3928
+ printBox(detectedInfo, chalk7.gray);
3929
+ console.log();
3930
+ } else {
3931
+ remoteSpinner.fail("Could not analyze repository (may be private or inaccessible)");
3932
+ }
3909
3933
  }
3910
3934
  }
3911
3935
  }
3912
- } else if (!detected) {
3913
- console.log(chalk7.yellow(" \u{1F4A1} Tip: Max/Teams users can analyze remote repository URLs"));
3914
- console.log();
3915
3936
  }
3916
3937
  let config2;
3917
3938
  if (options.yes) {
@@ -4793,22 +4814,50 @@ async function runInteractiveWizard(options, detected, userTier) {
4793
4814
  instructions: false
4794
4815
  }, promptConfig);
4795
4816
  answers.importantFiles = importantFilesResponse.importantFiles || [];
4817
+ console.log();
4818
+ console.log(chalk7.gray(" \u2500\u2500\u2500 Cloud & AI Options \u2500\u2500\u2500"));
4819
+ console.log();
4820
+ console.log(chalk7.gray(" \u{1F4E4} Save your config to LynxPrompt cloud and add a curl command to auto-update."));
4821
+ console.log(chalk7.gray(" When you run the curl, your local config syncs with cloud changes."));
4822
+ const enableAutoUpdateResponse = await prompts3({
4823
+ type: "toggle",
4824
+ name: "enableAutoUpdate",
4825
+ message: chalk7.white("Save to cloud & enable auto-sync?"),
4826
+ initial: false,
4827
+ active: "Yes",
4828
+ inactive: "No",
4829
+ hint: chalk7.gray("Adds curl command for automatic updates")
4830
+ }, promptConfig);
4831
+ answers.enableAutoUpdate = enableAutoUpdateResponse.enableAutoUpdate || false;
4832
+ if (answers.enableAutoUpdate && !api) {
4833
+ console.log(chalk7.yellow(" \u26A0\uFE0F Cloud sync requires login. Run 'lynxp login' first."));
4834
+ console.log(chalk7.gray(" Continuing without cloud sync..."));
4835
+ answers.enableAutoUpdate = false;
4836
+ }
4837
+ console.log();
4838
+ console.log(chalk7.gray(" \u{1F9E0} Self-improving blueprints track your manual edits and suggest improvements."));
4839
+ console.log(chalk7.gray(" LynxPrompt learns your preferences to generate better configs over time."));
4796
4840
  const selfImproveResponse = await prompts3({
4797
4841
  type: "toggle",
4798
4842
  name: "selfImprove",
4799
- message: chalk7.white("Enable self-improving blueprint?"),
4843
+ message: chalk7.white("Enable AI learning from your edits?"),
4800
4844
  initial: false,
4801
4845
  active: "Yes",
4802
- inactive: "No"
4846
+ inactive: "No",
4847
+ hint: chalk7.gray("AI learns your style from manual changes")
4803
4848
  }, promptConfig);
4804
4849
  answers.selfImprove = selfImproveResponse.selfImprove || false;
4850
+ console.log();
4851
+ console.log(chalk7.gray(" \u{1F464} Include your profile info (name, email, persona) in the generated config."));
4852
+ console.log(chalk7.gray(" This helps AI tools personalize responses to your expertise level."));
4805
4853
  const includePersonalResponse = await prompts3({
4806
4854
  type: "toggle",
4807
4855
  name: "includePersonalData",
4808
- message: chalk7.white("Include personal data (as saved in WebUI)?"),
4856
+ message: chalk7.white("Include your profile data in config?"),
4809
4857
  initial: false,
4810
4858
  active: "Yes",
4811
- inactive: "No"
4859
+ inactive: "No",
4860
+ hint: chalk7.gray("Name, email, expertise from your profile")
4812
4861
  }, promptConfig);
4813
4862
  answers.includePersonalData = includePersonalResponse.includePersonalData || false;
4814
4863
  if (answers.includePersonalData && api) {
@@ -4826,20 +4875,6 @@ async function runInteractiveWizard(options, detected, userTier) {
4826
4875
  console.log(chalk7.yellow(" Could not fetch profile data. Using defaults."));
4827
4876
  }
4828
4877
  }
4829
- const enableAutoUpdateResponse = await prompts3({
4830
- type: "toggle",
4831
- name: "enableAutoUpdate",
4832
- message: chalk7.white("Save to cloud & enable auto-update via API?"),
4833
- initial: false,
4834
- active: "Yes",
4835
- inactive: "No"
4836
- }, promptConfig);
4837
- answers.enableAutoUpdate = enableAutoUpdateResponse.enableAutoUpdate || false;
4838
- if (answers.enableAutoUpdate && !api) {
4839
- console.log(chalk7.yellow(" \u26A0\uFE0F Auto-update requires login. Run 'lynxp login' first."));
4840
- console.log(chalk7.gray(" Continuing without auto-update..."));
4841
- answers.enableAutoUpdate = false;
4842
- }
4843
4878
  if (canAccessTier(userTier, "advanced")) {
4844
4879
  const boundariesStep = getCurrentStep("boundaries");
4845
4880
  showStep(currentStepNum, boundariesStep, userTier);