prjct-cli 1.2.0 → 1.2.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.
@@ -2550,6 +2550,7 @@ __export(start_exports, {
2550
2550
  import fs9 from "node:fs";
2551
2551
  import os4 from "node:os";
2552
2552
  import path9 from "node:path";
2553
+ import chalk3 from "chalk";
2553
2554
  function showBanner() {
2554
2555
  console.clear();
2555
2556
  console.log(BANNER);
@@ -2557,15 +2558,15 @@ function showBanner() {
2557
2558
  }
2558
2559
  function showProviderSelection(options, currentIndex) {
2559
2560
  console.log(`
2560
- ${BOLD} Select AI providers to configure:${RESET}
2561
+ ${chalk3.bold(" Select AI providers to configure:")}
2561
2562
  `);
2562
- console.log(` ${DIM}(Use arrow keys to navigate, space to toggle, enter to confirm)${RESET}
2563
+ console.log(` ${chalk3.dim("(Use arrow keys to navigate, space to toggle, enter to confirm)")}
2563
2564
  `);
2564
2565
  options.forEach((option, index) => {
2565
- const cursor = index === currentIndex ? `${CYAN}\u276F${RESET}` : " ";
2566
- const checkbox = option.selected ? `${GREEN}[\u2713]${RESET}` : `${DIM}[ ]${RESET}`;
2567
- const status = option.installed ? `${GREEN}(installed)${RESET}` : `${YELLOW}(will install)${RESET}`;
2568
- const name = index === currentIndex ? `${BOLD}${option.displayName}${RESET}` : option.displayName;
2566
+ const cursor = index === currentIndex ? chalk3.cyan("\u276F") : " ";
2567
+ const checkbox = option.selected ? chalk3.green("[\u2713]") : chalk3.dim("[ ]");
2568
+ const status = option.installed ? chalk3.green("(installed)") : chalk3.yellow("(will install)");
2569
+ const name = index === currentIndex ? chalk3.bold(option.displayName) : option.displayName;
2569
2570
  console.log(` ${cursor} ${checkbox} ${name} ${status}`);
2570
2571
  });
2571
2572
  console.log("");
@@ -2591,11 +2592,11 @@ async function selectProviders() {
2591
2592
  }
2592
2593
  if (!process.stdin.isTTY) {
2593
2594
  console.log(`
2594
- ${BOLD} Detected providers:${RESET}
2595
+ ${chalk3.bold(" Detected providers:")}
2595
2596
  `);
2596
2597
  options.forEach((option) => {
2597
2598
  if (option.installed) {
2598
- console.log(` ${GREEN}\u2713${RESET} ${option.displayName}`);
2599
+ console.log(` ${chalk3.green("\u2713")} ${option.displayName}`);
2599
2600
  }
2600
2601
  });
2601
2602
  console.log("");
@@ -2665,7 +2666,7 @@ async function installRouter(provider) {
2665
2666
  return false;
2666
2667
  } catch (error) {
2667
2668
  console.error(
2668
- ` ${YELLOW}\u26A0${RESET} Failed to install ${provider} router: ${error.message}`
2669
+ ` ${chalk3.yellow("\u26A0")} Failed to install ${provider} router: ${error.message}`
2669
2670
  );
2670
2671
  return false;
2671
2672
  }
@@ -2709,7 +2710,7 @@ ${content}`);
2709
2710
  return false;
2710
2711
  } catch (error) {
2711
2712
  console.error(
2712
- ` ${YELLOW}\u26A0${RESET} Failed to install ${provider} config: ${error.message}`
2713
+ ` ${chalk3.yellow("\u26A0")} Failed to install ${provider} config: ${error.message}`
2713
2714
  );
2714
2715
  return false;
2715
2716
  }
@@ -2731,26 +2732,26 @@ async function saveSetupConfig(providers) {
2731
2732
  }
2732
2733
  function showCompletion(providers) {
2733
2734
  console.log(`
2734
- ${GREEN}${BOLD} \u2713 Setup complete!${RESET}
2735
+ ${chalk3.green.bold(" \u2713 Setup complete!")}
2735
2736
  `);
2736
- console.log(` ${DIM}Configured providers:${RESET}`);
2737
+ console.log(` ${chalk3.dim("Configured providers:")}`);
2737
2738
  providers.forEach((p) => {
2738
2739
  const config = Providers[p];
2739
- console.log(` ${GREEN}\u2713${RESET} ${config.displayName}`);
2740
+ console.log(` ${chalk3.green("\u2713")} ${config.displayName}`);
2740
2741
  });
2741
2742
  console.log(`
2742
- ${BOLD}Next steps:${RESET}
2743
+ ${chalk3.bold("Next steps:")}
2743
2744
 
2744
- ${CYAN}1.${RESET} Navigate to your project directory
2745
- ${CYAN}2.${RESET} Run ${BOLD}p. init${RESET} to initialize prjct for that project
2746
- ${CYAN}3.${RESET} Start tracking with ${BOLD}p. task "your task"${RESET}
2745
+ ${chalk3.cyan("1.")} Navigate to your project directory
2746
+ ${chalk3.cyan("2.")} Run ${chalk3.bold("p. init")} to initialize prjct for that project
2747
+ ${chalk3.cyan("3.")} Start tracking with ${chalk3.bold('p. task "your task"')}
2747
2748
 
2748
- ${DIM}Tips:${RESET}
2749
- ${DIM}\u2022${RESET} Use ${BOLD}p. sync${RESET} to analyze your codebase
2750
- ${DIM}\u2022${RESET} Use ${BOLD}p. done${RESET} to complete tasks
2751
- ${DIM}\u2022${RESET} Use ${BOLD}p. ship${RESET} to create PRs
2749
+ ${chalk3.dim("Tips:")}
2750
+ ${chalk3.dim("\u2022")} Use ${chalk3.bold("p. sync")} to analyze your codebase
2751
+ ${chalk3.dim("\u2022")} Use ${chalk3.bold("p. done")} to complete tasks
2752
+ ${chalk3.dim("\u2022")} Use ${chalk3.bold("p. ship")} to create PRs
2752
2753
 
2753
- ${DIM}Learn more: https://prjct.app/docs${RESET}
2754
+ ${chalk3.dim("Learn more: https://prjct.app/docs")}
2754
2755
  `);
2755
2756
  }
2756
2757
  async function runStart() {
@@ -2759,8 +2760,8 @@ async function runStart() {
2759
2760
  if (fs9.existsSync(configPath)) {
2760
2761
  const existing = JSON.parse(fs9.readFileSync(configPath, "utf-8"));
2761
2762
  if (existing.version === VERSION) {
2762
- console.log(` ${YELLOW}\u2139${RESET} Already configured for v${VERSION}`);
2763
- console.log(` ${DIM}Run with --force to reconfigure${RESET}
2763
+ console.log(` ${chalk3.yellow("\u2139")} Already configured for v${VERSION}`);
2764
+ console.log(` ${chalk3.dim("Run with --force to reconfigure")}
2764
2765
  `);
2765
2766
  if (!process.argv.includes("--force")) {
2766
2767
  return;
@@ -2769,57 +2770,50 @@ async function runStart() {
2769
2770
  }
2770
2771
  const selectedProviders = await selectProviders();
2771
2772
  console.log(`
2772
- ${CYAN}Setting up...${RESET}
2773
+ ${chalk3.cyan("Setting up...")}
2773
2774
  `);
2774
2775
  for (const provider of selectedProviders) {
2775
2776
  const config = Providers[provider];
2776
- process.stdout.write(` ${DIM}\u2022${RESET} ${config.displayName}... `);
2777
+ process.stdout.write(` ${chalk3.dim("\u2022")} ${config.displayName}... `);
2777
2778
  const routerOk = await installRouter(provider);
2778
2779
  const configOk = await installGlobalConfig(provider);
2779
2780
  if (routerOk && configOk) {
2780
- console.log(`${GREEN}\u2713${RESET}`);
2781
+ console.log(chalk3.green("\u2713"));
2781
2782
  } else if (routerOk || configOk) {
2782
- console.log(`${YELLOW}partial${RESET}`);
2783
+ console.log(chalk3.yellow("partial"));
2783
2784
  } else {
2784
- console.log(`${YELLOW}skipped${RESET}`);
2785
+ console.log(chalk3.yellow("skipped"));
2785
2786
  }
2786
2787
  }
2787
2788
  await saveSetupConfig(selectedProviders);
2788
2789
  showCompletion(selectedProviders);
2789
2790
  }
2790
- var RESET, BOLD, DIM, GREEN, YELLOW, CYAN, WHITE, G1, G2, G3, G4, G5, BANNER, WELCOME_BOX, start_default;
2791
+ var G1, G2, G3, G4, G5, BANNER, WELCOME_BOX, start_default;
2791
2792
  var init_start = __esm({
2792
2793
  "core/cli/start.ts"() {
2793
2794
  "use strict";
2794
2795
  init_ai_provider();
2795
2796
  init_version();
2796
- RESET = "\x1B[0m";
2797
- BOLD = "\x1B[1m";
2798
- DIM = "\x1B[2m";
2799
- GREEN = "\x1B[32m";
2800
- YELLOW = "\x1B[33m";
2801
- CYAN = "\x1B[36m";
2802
- WHITE = "\x1B[37m";
2803
- G1 = "\x1B[38;2;0;255;255m";
2804
- G2 = "\x1B[38;2;80;180;255m";
2805
- G3 = "\x1B[38;2;140;120;255m";
2806
- G4 = "\x1B[38;2;200;80;220m";
2807
- G5 = "\x1B[38;2;255;80;180m";
2797
+ G1 = chalk3.rgb(0, 255, 255);
2798
+ G2 = chalk3.rgb(80, 180, 255);
2799
+ G3 = chalk3.rgb(140, 120, 255);
2800
+ G4 = chalk3.rgb(200, 80, 220);
2801
+ G5 = chalk3.rgb(255, 80, 180);
2808
2802
  BANNER = `
2809
2803
 
2810
- ${G1} \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ${G2} \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ${G3} \u2588\u2588\u2557${G4} \u2588\u2588\u2588\u2588\u2588\u2588\u2557${G5}\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557${RESET}
2811
- ${G1} \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557${G2} \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557${G3} \u2588\u2588\u2551${G4}\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D${G5}\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D${RESET}
2812
- ${G1} \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D${G2} \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D${G3} \u2588\u2588\u2551${G4}\u2588\u2588\u2551 ${G5} \u2588\u2588\u2551 ${RESET}
2813
- ${G1} \u2588\u2588\u2554\u2550\u2550\u2550\u255D ${G2} \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557${G3}\u2588\u2588 \u2588\u2588\u2551${G4}\u2588\u2588\u2551 ${G5} \u2588\u2588\u2551 ${RESET}
2814
- ${G1} \u2588\u2588\u2551 ${G2} \u2588\u2588\u2551 \u2588\u2588\u2551${G3}\u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D${G4}\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557${G5} \u2588\u2588\u2551 ${RESET}
2815
- ${G1} \u255A\u2550\u255D ${G2} \u255A\u2550\u255D \u255A\u2550\u255D${G3} \u255A\u2550\u2550\u2550\u2550\u255D ${G4} \u255A\u2550\u2550\u2550\u2550\u2550\u255D${G5} \u255A\u2550\u255D ${RESET}
2804
+ ${G1(" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ")}${G2(" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ")}${G3(" \u2588\u2588\u2557")}${G4(" \u2588\u2588\u2588\u2588\u2588\u2588\u2557")}${G5("\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557")}
2805
+ ${G1(" \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557")}${G2(" \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557")}${G3(" \u2588\u2588\u2551")}${G4("\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D")}${G5("\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D")}
2806
+ ${G1(" \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D")}${G2(" \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D")}${G3(" \u2588\u2588\u2551")}${G4("\u2588\u2588\u2551 ")}${G5(" \u2588\u2588\u2551 ")}
2807
+ ${G1(" \u2588\u2588\u2554\u2550\u2550\u2550\u255D ")}${G2(" \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557")}${G3("\u2588\u2588 \u2588\u2588\u2551")}${G4("\u2588\u2588\u2551 ")}${G5(" \u2588\u2588\u2551 ")}
2808
+ ${G1(" \u2588\u2588\u2551 ")}${G2(" \u2588\u2588\u2551 \u2588\u2588\u2551")}${G3("\u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D")}${G4("\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557")}${G5(" \u2588\u2588\u2551 ")}
2809
+ ${G1(" \u255A\u2550\u255D ")}${G2(" \u255A\u2550\u255D \u255A\u2550\u255D")}${G3(" \u255A\u2550\u2550\u2550\u2550\u255D ")}${G4(" \u255A\u2550\u2550\u2550\u2550\u2550\u255D")}${G5(" \u255A\u2550\u255D ")}
2816
2810
 
2817
2811
  `;
2818
- WELCOME_BOX = ` ${WHITE}Context Layer for AI Agents${RESET} ${DIM}v${VERSION}${RESET}
2812
+ WELCOME_BOX = ` ${chalk3.white("Context Layer for AI Agents")} ${chalk3.dim(`v${VERSION}`)}
2819
2813
 
2820
- ${DIM}Project context layer for AI coding agents.
2821
- Works with Claude Code, Gemini CLI, and more.${RESET}
2822
- ${CYAN}https://prjct.app${RESET}
2814
+ ${chalk3.dim(`Project context layer for AI coding agents.
2815
+ Works with Claude Code, Gemini CLI, and more.`)}
2816
+ ${chalk3.cyan("https://prjct.app")}
2823
2817
  `;
2824
2818
  __name(showBanner, "showBanner");
2825
2819
  __name(showProviderSelection, "showProviderSelection");
@@ -5449,7 +5443,7 @@ __export(hooks_service_exports, {
5449
5443
  });
5450
5444
  import fs15 from "node:fs";
5451
5445
  import path15 from "node:path";
5452
- import chalk3 from "chalk";
5446
+ import chalk4 from "chalk";
5453
5447
  function getPostCommitScript() {
5454
5448
  return `#!/bin/sh
5455
5449
  # prjct auto-sync hook (post-commit)
@@ -5788,19 +5782,19 @@ var init_hooks_service = __esm({
5788
5782
  output_default.section("Git Hooks Installation");
5789
5783
  const detected = detectHookManagers(projectPath);
5790
5784
  const strategy = selectStrategy(detected);
5791
- console.log(` Strategy: ${chalk3.cyan(strategy)}`);
5792
- console.log(` Hooks: ${chalk3.dim("post-commit, post-checkout")}`);
5785
+ console.log(` Strategy: ${chalk4.cyan(strategy)}`);
5786
+ console.log(` Hooks: ${chalk4.dim("post-commit, post-checkout")}`);
5793
5787
  console.log("");
5794
5788
  const result = await this.install(projectPath, { strategy });
5795
5789
  if (result.success) {
5796
5790
  output_default.done(`Hooks installed via ${result.strategy}`);
5797
5791
  console.log("");
5798
5792
  for (const hook of result.hooksInstalled) {
5799
- console.log(` ${chalk3.green("\u2713")} ${hook}`);
5793
+ console.log(` ${chalk4.green("\u2713")} ${hook}`);
5800
5794
  }
5801
5795
  console.log("");
5802
- console.log(chalk3.dim(" Context will auto-sync on commit and branch switch."));
5803
- console.log(chalk3.dim(" Remove with: prjct hooks uninstall"));
5796
+ console.log(chalk4.dim(" Context will auto-sync on commit and branch switch."));
5797
+ console.log(chalk4.dim(" Remove with: prjct hooks uninstall"));
5804
5798
  } else {
5805
5799
  output_default.fail(result.error || "Failed to install hooks");
5806
5800
  }
@@ -5826,24 +5820,24 @@ var init_hooks_service = __esm({
5826
5820
  output_default.section("Git Hooks Status");
5827
5821
  const status = await this.status(projectPath);
5828
5822
  if (status.installed) {
5829
- console.log(` Status: ${chalk3.green("Active")}`);
5830
- console.log(` Strategy: ${chalk3.cyan(status.strategy)}`);
5823
+ console.log(` Status: ${chalk4.green("Active")}`);
5824
+ console.log(` Strategy: ${chalk4.cyan(status.strategy)}`);
5831
5825
  } else {
5832
- console.log(` Status: ${chalk3.dim("Not installed")}`);
5826
+ console.log(` Status: ${chalk4.dim("Not installed")}`);
5833
5827
  }
5834
5828
  console.log("");
5835
5829
  for (const hook of status.hooks) {
5836
- const icon = hook.installed ? chalk3.green("\u2713") : chalk3.dim("\u25CB");
5837
- const label = hook.installed ? hook.name : chalk3.dim(hook.name);
5830
+ const icon = hook.installed ? chalk4.green("\u2713") : chalk4.dim("\u25CB");
5831
+ const label = hook.installed ? hook.name : chalk4.dim(hook.name);
5838
5832
  console.log(` ${icon} ${label}`);
5839
5833
  }
5840
5834
  if (status.detectedManagers.length > 0) {
5841
5835
  console.log("");
5842
- console.log(` ${chalk3.dim("Available managers:")} ${status.detectedManagers.join(", ")}`);
5836
+ console.log(` ${chalk4.dim("Available managers:")} ${status.detectedManagers.join(", ")}`);
5843
5837
  }
5844
5838
  if (!status.installed) {
5845
5839
  console.log("");
5846
- console.log(chalk3.dim(" Install with: prjct hooks install"));
5840
+ console.log(chalk4.dim(" Install with: prjct hooks install"));
5847
5841
  }
5848
5842
  console.log("");
5849
5843
  output_default.end();
@@ -5929,7 +5923,7 @@ __export(doctor_service_exports, {
5929
5923
  import { execSync as execSync2 } from "node:child_process";
5930
5924
  import fs16 from "node:fs/promises";
5931
5925
  import path16 from "node:path";
5932
- import chalk4 from "chalk";
5926
+ import chalk5 from "chalk";
5933
5927
  var DoctorService, doctorService;
5934
5928
  var init_doctor_service = __esm({
5935
5929
  "core/services/doctor-service.ts"() {
@@ -6199,8 +6193,8 @@ var init_doctor_service = __esm({
6199
6193
  const icon = this.getStatusIcon(check.status, check.optional);
6200
6194
  const name = check.name.padEnd(14);
6201
6195
  const detail = check.version || check.message || "";
6202
- const optionalTag = check.optional && check.status === "error" ? chalk4.dim(" (optional)") : "";
6203
- return `${icon} ${name} ${chalk4.dim(detail)}${optionalTag}`;
6196
+ const optionalTag = check.optional && check.status === "error" ? chalk5.dim(" (optional)") : "";
6197
+ return `${icon} ${name} ${chalk5.dim(detail)}${optionalTag}`;
6204
6198
  });
6205
6199
  for (const item of items) {
6206
6200
  console.log(` ${item}`);
@@ -6208,11 +6202,11 @@ var init_doctor_service = __esm({
6208
6202
  }
6209
6203
  printRecommendations(recommendations) {
6210
6204
  output_default.section("Recommendations");
6211
- output_default.list(recommendations, { bullet: chalk4.yellow("\u2022") });
6205
+ output_default.list(recommendations, { bullet: chalk5.yellow("\u2022") });
6212
6206
  }
6213
6207
  printSummary(result) {
6214
6208
  console.log("");
6215
- console.log(chalk4.dim("\u2500".repeat(40)));
6209
+ console.log(chalk5.dim("\u2500".repeat(40)));
6216
6210
  if (result.hasErrors) {
6217
6211
  output_default.fail("Some required checks failed");
6218
6212
  } else if (result.hasWarnings) {
@@ -6225,11 +6219,11 @@ var init_doctor_service = __esm({
6225
6219
  getStatusIcon(status, optional) {
6226
6220
  switch (status) {
6227
6221
  case "ok":
6228
- return chalk4.green("\u2713");
6222
+ return chalk5.green("\u2713");
6229
6223
  case "warn":
6230
- return chalk4.yellow("\u26A0");
6224
+ return chalk5.yellow("\u26A0");
6231
6225
  case "error":
6232
- return optional ? chalk4.dim("\u25CB") : chalk4.red("\u2717");
6226
+ return optional ? chalk5.dim("\u25CB") : chalk5.red("\u2717");
6233
6227
  }
6234
6228
  }
6235
6229
  };
@@ -6775,7 +6769,7 @@ var init_command_installer = __esm({
6775
6769
  });
6776
6770
 
6777
6771
  // core/utils/agent-stream.ts
6778
- import chalk5 from "chalk";
6772
+ import chalk6 from "chalk";
6779
6773
  function getIcon(domain) {
6780
6774
  return DOMAIN_ICONS[domain.toLowerCase()] || DOMAIN_ICONS.default;
6781
6775
  }
@@ -6814,7 +6808,7 @@ var init_agent_stream = __esm({
6814
6808
  */
6815
6809
  orchestrate(domains) {
6816
6810
  if (this.quiet) return;
6817
- console.log(chalk5.cyan(`
6811
+ console.log(chalk6.cyan(`
6818
6812
  \u{1F3AF} Orchestrating: ${domains.join(", ")} domains detected
6819
6813
  `));
6820
6814
  }
@@ -6826,9 +6820,9 @@ var init_agent_stream = __esm({
6826
6820
  this.currentAgent = name;
6827
6821
  this.startTime = Date.now();
6828
6822
  const icon = getIcon(domain);
6829
- console.log(chalk5.cyan(`\u250C\u2500 ${icon} ${name} (${domain})`));
6823
+ console.log(chalk6.cyan(`\u250C\u2500 ${icon} ${name} (${domain})`));
6830
6824
  if (description) {
6831
- console.log(chalk5.dim(`\u2502 ${description}`));
6825
+ console.log(chalk6.dim(`\u2502 ${description}`));
6832
6826
  }
6833
6827
  }
6834
6828
  /**
@@ -6836,7 +6830,7 @@ var init_agent_stream = __esm({
6836
6830
  */
6837
6831
  progress(message) {
6838
6832
  if (this.quiet || !this.currentAgent) return;
6839
- console.log(chalk5.dim(`\u2502 \u2514\u2500\u2500 ${message}`));
6833
+ console.log(chalk6.dim(`\u2502 \u2514\u2500\u2500 ${message}`));
6840
6834
  }
6841
6835
  /**
6842
6836
  * Show multiple progress items
@@ -6844,7 +6838,7 @@ var init_agent_stream = __esm({
6844
6838
  progressList(items) {
6845
6839
  if (this.quiet || !this.currentAgent) return;
6846
6840
  for (const item of items) {
6847
- console.log(chalk5.dim(`\u2502 \u2514\u2500\u2500 ${item}`));
6841
+ console.log(chalk6.dim(`\u2502 \u2514\u2500\u2500 ${item}`));
6848
6842
  }
6849
6843
  }
6850
6844
  /**
@@ -6854,9 +6848,9 @@ var init_agent_stream = __esm({
6854
6848
  if (this.quiet || !this.currentAgent) return;
6855
6849
  const duration = Date.now() - this.startTime;
6856
6850
  const durationStr = this.formatDuration(duration);
6857
- const icon = success ? chalk5.green("\u2713") : chalk5.red("\u2717");
6851
+ const icon = success ? chalk6.green("\u2713") : chalk6.red("\u2717");
6858
6852
  const status = success ? "Complete" : "Failed";
6859
- console.log(`\u2514\u2500 ${icon} ${status} ${chalk5.dim(`(${durationStr})`)}
6853
+ console.log(`\u2514\u2500 ${icon} ${status} ${chalk6.dim(`(${durationStr})`)}
6860
6854
  `);
6861
6855
  this.currentAgent = null;
6862
6856
  }
@@ -6872,8 +6866,8 @@ var init_agent_stream = __esm({
6872
6866
  */
6873
6867
  complete(taskName, totalDuration) {
6874
6868
  if (this.quiet) return;
6875
- const durationStr = totalDuration ? ` ${chalk5.dim(`[${this.formatDuration(totalDuration)}]`)}` : "";
6876
- console.log(chalk5.green(`\u2705 ${taskName}${durationStr}`));
6869
+ const durationStr = totalDuration ? ` ${chalk6.dim(`[${this.formatDuration(totalDuration)}]`)}` : "";
6870
+ console.log(chalk6.green(`\u2705 ${taskName}${durationStr}`));
6877
6871
  }
6878
6872
  /**
6879
6873
  * Format duration in human-readable form
@@ -6889,6 +6883,7 @@ var init_agent_stream = __esm({
6889
6883
  });
6890
6884
 
6891
6885
  // core/utils/subtask-table.ts
6886
+ import chalk7 from "chalk";
6892
6887
  function getDomainColor(domain) {
6893
6888
  let hash = 0;
6894
6889
  for (const char of domain) {
@@ -6899,29 +6894,29 @@ function getDomainColor(domain) {
6899
6894
  return DOMAIN_COLOR_PALETTE[index];
6900
6895
  }
6901
6896
  function formatSubtaskLine(index, subtask, spinnerFrame = "\u25B6") {
6902
- const num = `${DIM2}${String(index + 1).padStart(2)}${RESET2}`;
6903
- const domainColor = getDomainColor(subtask.domain);
6904
- const domain = `${domainColor}${subtask.domain.padEnd(10)}${RESET2}`;
6897
+ const num = chalk7.dim(String(index + 1).padStart(2));
6898
+ const domainColorFn = getDomainColor(subtask.domain);
6899
+ const domain = domainColorFn(subtask.domain.padEnd(10));
6905
6900
  const desc = subtask.description.length > 32 ? `${subtask.description.slice(0, 29)}...` : subtask.description.padEnd(32);
6906
6901
  let status;
6907
6902
  switch (subtask.status) {
6908
6903
  case "completed":
6909
- status = `${GREEN2}\u2713 Complete${RESET2}`;
6904
+ status = chalk7.green("\u2713 Complete");
6910
6905
  break;
6911
6906
  case "in_progress":
6912
- status = `${YELLOW2}${spinnerFrame} Working...${RESET2}`;
6907
+ status = chalk7.yellow(`${spinnerFrame} Working...`);
6913
6908
  break;
6914
6909
  case "pending":
6915
- status = `${GRAY}\u25CB Pending${RESET2}`;
6910
+ status = chalk7.gray("\u25CB Pending");
6916
6911
  break;
6917
6912
  case "failed":
6918
- status = `\x1B[31m\u2717 Failed${RESET2}`;
6913
+ status = chalk7.red("\u2717 Failed");
6919
6914
  break;
6920
6915
  case "blocked":
6921
- status = `${GRAY}\u2298 Blocked${RESET2}`;
6916
+ status = chalk7.gray("\u2298 Blocked");
6922
6917
  break;
6923
6918
  default:
6924
- status = `${GRAY}\u25CB ${subtask.status}${RESET2}`;
6919
+ status = chalk7.gray(`\u25CB ${subtask.status}`);
6925
6920
  }
6926
6921
  return ` ${num} ${domain} ${desc} ${status}`;
6927
6922
  }
@@ -6929,8 +6924,8 @@ function renderSubtaskProgress(subtasks) {
6929
6924
  if (subtasks.length === 0) return "";
6930
6925
  const lines = [];
6931
6926
  lines.push("");
6932
- lines.push(` ${BOLD2}${WHITE2}SUBTASK PROGRESS${RESET2}`);
6933
- lines.push(` ${DIM2}${"\u2500".repeat(58)}${RESET2}`);
6927
+ lines.push(` ${chalk7.bold.white("SUBTASK PROGRESS")}`);
6928
+ lines.push(` ${chalk7.dim("\u2500".repeat(58))}`);
6934
6929
  for (let i = 0; i < subtasks.length; i++) {
6935
6930
  lines.push(formatSubtaskLine(i, subtasks[i]));
6936
6931
  }
@@ -6940,34 +6935,19 @@ function renderSubtaskProgress(subtasks) {
6940
6935
  function printSubtaskProgress(subtasks) {
6941
6936
  console.log(renderSubtaskProgress(subtasks));
6942
6937
  }
6943
- var RESET2, BOLD2, DIM2, GREEN2, YELLOW2, WHITE2, GRAY, DOMAIN_COLOR_PALETTE;
6938
+ var DOMAIN_COLOR_PALETTE;
6944
6939
  var init_subtask_table = __esm({
6945
6940
  "core/utils/subtask-table.ts"() {
6946
6941
  "use strict";
6947
- RESET2 = "\x1B[0m";
6948
- BOLD2 = "\x1B[1m";
6949
- DIM2 = "\x1B[2m";
6950
- GREEN2 = "\x1B[32m";
6951
- YELLOW2 = "\x1B[33m";
6952
- WHITE2 = "\x1B[37m";
6953
- GRAY = "\x1B[90m";
6954
6942
  DOMAIN_COLOR_PALETTE = [
6955
- "\x1B[36m",
6956
- // Cyan
6957
- "\x1B[35m",
6958
- // Magenta
6959
- "\x1B[33m",
6960
- // Yellow
6961
- "\x1B[34m",
6962
- // Blue
6963
- "\x1B[32m",
6964
- // Green
6965
- "\x1B[91m",
6966
- // Light Red
6967
- "\x1B[95m",
6968
- // Light Magenta
6969
- "\x1B[96m"
6970
- // Light Cyan
6943
+ chalk7.cyan,
6944
+ chalk7.magenta,
6945
+ chalk7.yellow,
6946
+ chalk7.blue,
6947
+ chalk7.green,
6948
+ chalk7.redBright,
6949
+ chalk7.magentaBright,
6950
+ chalk7.cyanBright
6971
6951
  ];
6972
6952
  __name(getDomainColor, "getDomainColor");
6973
6953
  __name(formatSubtaskLine, "formatSubtaskLine");
@@ -8270,7 +8250,7 @@ var init_ideas = __esm({
8270
8250
  name: z3.string(),
8271
8251
  // "Multi-tenant"
8272
8252
  description: z3.string()
8273
- // "Empresas con RLS estricto"
8253
+ // "Strict RLS for organizations"
8274
8254
  });
8275
8255
  IdeaRoleSchema = z3.object({
8276
8256
  name: z3.string(),
@@ -14601,7 +14581,7 @@ import fs30 from "node:fs";
14601
14581
  import https from "node:https";
14602
14582
  import os10 from "node:os";
14603
14583
  import path29 from "node:path";
14604
- import chalk6 from "chalk";
14584
+ import chalk8 from "chalk";
14605
14585
  var UpdateChecker, update_checker_default;
14606
14586
  var init_update_checker = __esm({
14607
14587
  "core/infrastructure/update-checker.ts"() {
@@ -14764,7 +14744,7 @@ var init_update_checker = __esm({
14764
14744
  if (!result || !result.updateAvailable) {
14765
14745
  return null;
14766
14746
  }
14767
- return "\n" + chalk6.yellow("\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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510") + "\n" + chalk6.yellow("\u2502") + " " + chalk6.bold("Update available!") + " " + chalk6.dim(`${result.currentVersion} \u2192 ${result.latestVersion}`) + " " + chalk6.yellow("\u2502") + "\n" + chalk6.yellow("\u2502") + " " + chalk6.yellow("\u2502") + "\n" + chalk6.yellow("\u2502") + " Run: " + chalk6.cyan("npm update -g prjct-cli") + " " + chalk6.yellow("\u2502") + "\n" + chalk6.yellow("\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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518") + "\n";
14747
+ return "\n" + chalk8.yellow("\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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510") + "\n" + chalk8.yellow("\u2502") + " " + chalk8.bold("Update available!") + " " + chalk8.dim(`${result.currentVersion} \u2192 ${result.latestVersion}`) + " " + chalk8.yellow("\u2502") + "\n" + chalk8.yellow("\u2502") + " " + chalk8.yellow("\u2502") + "\n" + chalk8.yellow("\u2502") + " Run: " + chalk8.cyan("npm update -g prjct-cli") + " " + chalk8.yellow("\u2502") + "\n" + chalk8.yellow("\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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518") + "\n";
14768
14748
  }
14769
14749
  };
14770
14750
  update_checker_default = UpdateChecker;
@@ -17199,7 +17179,7 @@ var init_state_machine = __esm({
17199
17179
  });
17200
17180
 
17201
17181
  // core/utils/next-steps.ts
17202
- import chalk7 from "chalk";
17182
+ import chalk9 from "chalk";
17203
17183
  function showNextSteps(command, options = {}) {
17204
17184
  if (options.quiet) return;
17205
17185
  const resultingState = COMMAND_TO_STATE[command] || "idle";
@@ -17209,15 +17189,15 @@ function showNextSteps(command, options = {}) {
17209
17189
  cmd: `p. ${cmd}`,
17210
17190
  desc: CMD_DESCRIPTIONS[cmd] || cmd
17211
17191
  }));
17212
- console.log(chalk7.dim("\nNext:"));
17192
+ console.log(chalk9.dim("\nNext:"));
17213
17193
  for (const step of steps) {
17214
- const cmd = chalk7.cyan(step.cmd.padEnd(12));
17215
- console.log(chalk7.dim(` ${cmd} \u2192 ${step.desc}`));
17194
+ const cmd = chalk9.cyan(step.cmd.padEnd(12));
17195
+ console.log(chalk9.dim(` ${cmd} \u2192 ${step.desc}`));
17216
17196
  }
17217
17197
  }
17218
17198
  function showStateInfo(state) {
17219
17199
  const info = workflowStateMachine.getStateInfo(state);
17220
- console.log(chalk7.dim(`\u{1F4CD} State: ${chalk7.white(state.toUpperCase())} - ${info.description}`));
17200
+ console.log(chalk9.dim(`\u{1F4CD} State: ${chalk9.white(state.toUpperCase())} - ${info.description}`));
17221
17201
  }
17222
17202
  var CMD_DESCRIPTIONS, COMMAND_TO_STATE;
17223
17203
  var init_next_steps = __esm({
@@ -17255,7 +17235,7 @@ var init_next_steps = __esm({
17255
17235
  });
17256
17236
 
17257
17237
  // core/wizard/onboarding.ts
17258
- import chalk8 from "chalk";
17238
+ import chalk10 from "chalk";
17259
17239
  import prompts from "prompts";
17260
17240
  var PROJECT_TYPES, AI_AGENTS, OnboardingWizard;
17261
17241
  var init_onboarding = __esm({
@@ -17410,7 +17390,7 @@ var init_onboarding = __esm({
17410
17390
  async stepStack() {
17411
17391
  this.detectedStack = await this.detectStack();
17412
17392
  const stackDisplay = this.formatStackDisplay(this.detectedStack);
17413
- console.log(chalk8.dim(`
17393
+ console.log(chalk10.dim(`
17414
17394
  Detected: ${stackDisplay}
17415
17395
  `));
17416
17396
  const response = await prompts(
@@ -17492,15 +17472,15 @@ var init_onboarding = __esm({
17492
17472
  */
17493
17473
  async stepSummary() {
17494
17474
  console.log("");
17495
- console.log(chalk8.bold(" Configuration Summary"));
17496
- console.log(chalk8.dim(` ${"\u2500".repeat(40)}`));
17497
- console.log(` ${chalk8.cyan("Project Type:")} ${this.getProjectTypeLabel(this.confirmedType)}`);
17475
+ console.log(chalk10.bold(" Configuration Summary"));
17476
+ console.log(chalk10.dim(` ${"\u2500".repeat(40)}`));
17477
+ console.log(` ${chalk10.cyan("Project Type:")} ${this.getProjectTypeLabel(this.confirmedType)}`);
17498
17478
  console.log(
17499
- ` ${chalk8.cyan("AI Agents:")} ${this.selectedAgents.map((a) => this.getAgentLabel(a)).join(", ")}`
17479
+ ` ${chalk10.cyan("AI Agents:")} ${this.selectedAgents.map((a) => this.getAgentLabel(a)).join(", ")}`
17500
17480
  );
17501
- console.log(` ${chalk8.cyan("Stack:")} ${this.formatStackDisplay(this.confirmedStack)}`);
17502
- console.log(` ${chalk8.cyan("Verbosity:")} ${this.preferences.verbosity}`);
17503
- console.log(` ${chalk8.cyan("Auto-sync:")} ${this.preferences.autoSync ? "Yes" : "No"}`);
17481
+ console.log(` ${chalk10.cyan("Stack:")} ${this.formatStackDisplay(this.confirmedStack)}`);
17482
+ console.log(` ${chalk10.cyan("Verbosity:")} ${this.preferences.verbosity}`);
17483
+ console.log(` ${chalk10.cyan("Auto-sync:")} ${this.preferences.autoSync ? "Yes" : "No"}`);
17504
17484
  console.log("");
17505
17485
  const response = await prompts(
17506
17486
  {
@@ -17657,18 +17637,18 @@ var init_onboarding = __esm({
17657
17637
  // ==========================================================================
17658
17638
  printWelcome() {
17659
17639
  console.log("");
17660
- console.log(chalk8.bold.cyan(" Welcome to prjct-cli!"));
17661
- console.log(chalk8.dim(" Let's set up your project in 60 seconds."));
17640
+ console.log(chalk10.bold.cyan(" Welcome to prjct-cli!"));
17641
+ console.log(chalk10.dim(" Let's set up your project in 60 seconds."));
17662
17642
  console.log("");
17663
17643
  }
17664
17644
  printStepHeader(title) {
17665
17645
  console.log("");
17666
- console.log(chalk8.dim(` Step ${this.currentStep}/${this.totalSteps}: ${title}`));
17646
+ console.log(chalk10.dim(` Step ${this.currentStep}/${this.totalSteps}: ${title}`));
17667
17647
  console.log("");
17668
17648
  }
17669
17649
  handleCancel() {
17670
17650
  this.aborted = true;
17671
- console.log(chalk8.yellow("\n Setup cancelled. Run again anytime.\n"));
17651
+ console.log(chalk10.yellow("\n Setup cancelled. Run again anytime.\n"));
17672
17652
  }
17673
17653
  getProjectTypeLabel(type) {
17674
17654
  return PROJECT_TYPES.find((pt) => pt.value === type)?.title || "Unknown";
@@ -18279,7 +18259,7 @@ var init_analyzer2 = __esm({
18279
18259
  });
18280
18260
 
18281
18261
  // core/services/diff-generator.ts
18282
- import chalk9 from "chalk";
18262
+ import chalk11 from "chalk";
18283
18263
  function estimateTokens(content) {
18284
18264
  return Math.ceil(content.length / CHARS_PER_TOKEN2);
18285
18265
  }
@@ -18380,11 +18360,11 @@ function generateSyncDiff(oldContent, newContent) {
18380
18360
  function formatDiffPreview(diff, options = {}) {
18381
18361
  const { colorize = true } = options;
18382
18362
  const lines = [];
18383
- const green = colorize ? chalk9.green : (s) => s;
18384
- const red = colorize ? chalk9.red : (s) => s;
18385
- const yellow = colorize ? chalk9.yellow : (s) => s;
18386
- const dim = colorize ? chalk9.dim : (s) => s;
18387
- const bold = colorize ? chalk9.bold : (s) => s;
18363
+ const green = colorize ? chalk11.green : (s) => s;
18364
+ const red = colorize ? chalk11.red : (s) => s;
18365
+ const yellow = colorize ? chalk11.yellow : (s) => s;
18366
+ const dim = colorize ? chalk11.dim : (s) => s;
18367
+ const bold = colorize ? chalk11.bold : (s) => s;
18388
18368
  if (!diff.hasChanges) {
18389
18369
  lines.push(dim("No changes detected (context is up to date)"));
18390
18370
  return lines.join("\n");
@@ -18432,10 +18412,10 @@ function formatDiffPreview(diff, options = {}) {
18432
18412
  function formatFullDiff(diff, options = {}) {
18433
18413
  const { colorize = true } = options;
18434
18414
  const lines = [];
18435
- const green = colorize ? chalk9.green : (s) => s;
18436
- const red = colorize ? chalk9.red : (s) => s;
18437
- const cyan = colorize ? chalk9.cyan : (s) => s;
18438
- const dim = colorize ? chalk9.dim : (s) => s;
18415
+ const green = colorize ? chalk11.green : (s) => s;
18416
+ const red = colorize ? chalk11.red : (s) => s;
18417
+ const cyan = colorize ? chalk11.cyan : (s) => s;
18418
+ const dim = colorize ? chalk11.dim : (s) => s;
18439
18419
  for (const section of diff.added) {
18440
18420
  lines.push(cyan(`@@ +${section.name} @@`));
18441
18421
  if (section.after) {
@@ -22011,7 +21991,7 @@ import fs44 from "node:fs/promises";
22011
21991
  import os12 from "node:os";
22012
21992
  import path46 from "node:path";
22013
21993
  import readline2 from "node:readline";
22014
- import chalk10 from "chalk";
21994
+ import chalk12 from "chalk";
22015
21995
  async function getDirectorySize(dirPath) {
22016
21996
  let totalSize = 0;
22017
21997
  try {
@@ -22266,7 +22246,7 @@ async function uninstall(options = {}, _projectPath = process.cwd()) {
22266
22246
  const installation = detectInstallation();
22267
22247
  const existingItems = items.filter((i) => i.exists);
22268
22248
  if (existingItems.length === 0 && !installation.homebrew && !installation.npm) {
22269
- console.log(chalk10.yellow("\nNo prjct installation found."));
22249
+ console.log(chalk12.yellow("\nNo prjct installation found."));
22270
22250
  return {
22271
22251
  success: true,
22272
22252
  message: "Nothing to uninstall"
@@ -22274,36 +22254,36 @@ async function uninstall(options = {}, _projectPath = process.cwd()) {
22274
22254
  }
22275
22255
  const totalSize = existingItems.reduce((sum, item) => sum + (item.size || 0), 0);
22276
22256
  console.log("");
22277
- console.log(chalk10.red.bold(" WARNING: This action is DANGEROUS and IRREVERSIBLE"));
22257
+ console.log(chalk12.red.bold(" WARNING: This action is DANGEROUS and IRREVERSIBLE"));
22278
22258
  console.log("");
22279
- console.log(chalk10.white("The following will be permanently deleted:"));
22259
+ console.log(chalk12.white("The following will be permanently deleted:"));
22280
22260
  console.log("");
22281
22261
  for (const item of existingItems) {
22282
22262
  const displayPath = path_manager_default.getDisplayPath(item.path);
22283
22263
  let info = "";
22284
22264
  if (item.type === "section") {
22285
- info = chalk10.dim("(section only)");
22265
+ info = chalk12.dim("(section only)");
22286
22266
  } else if (item.size) {
22287
- info = chalk10.dim(`(${formatSize(item.size)})`);
22267
+ info = chalk12.dim(`(${formatSize(item.size)})`);
22288
22268
  }
22289
- console.log(` ${chalk10.cyan(displayPath.padEnd(35))} ${info}`);
22290
- console.log(` ${chalk10.dim(item.description)}`);
22269
+ console.log(` ${chalk12.cyan(displayPath.padEnd(35))} ${info}`);
22270
+ console.log(` ${chalk12.dim(item.description)}`);
22291
22271
  console.log("");
22292
22272
  }
22293
22273
  if (installation.homebrew) {
22294
- console.log(` ${chalk10.cyan("Homebrew".padEnd(35))} ${chalk10.dim("prjct-cli formula")}`);
22274
+ console.log(` ${chalk12.cyan("Homebrew".padEnd(35))} ${chalk12.dim("prjct-cli formula")}`);
22295
22275
  console.log("");
22296
22276
  }
22297
22277
  if (installation.npm) {
22298
- console.log(` ${chalk10.cyan("npm global".padEnd(35))} ${chalk10.dim("prjct-cli package")}`);
22278
+ console.log(` ${chalk12.cyan("npm global".padEnd(35))} ${chalk12.dim("prjct-cli package")}`);
22299
22279
  console.log("");
22300
22280
  }
22301
22281
  if (totalSize > 0) {
22302
- console.log(chalk10.dim(` Total size: ${formatSize(totalSize)}`));
22282
+ console.log(chalk12.dim(` Total size: ${formatSize(totalSize)}`));
22303
22283
  console.log("");
22304
22284
  }
22305
22285
  if (options.dryRun) {
22306
- console.log(chalk10.yellow("Dry run - no changes made"));
22286
+ console.log(chalk12.yellow("Dry run - no changes made"));
22307
22287
  return {
22308
22288
  success: true,
22309
22289
  message: "Dry run complete",
@@ -22311,20 +22291,20 @@ async function uninstall(options = {}, _projectPath = process.cwd()) {
22311
22291
  };
22312
22292
  }
22313
22293
  if (options.backup) {
22314
- console.log(chalk10.blue("Creating backup..."));
22294
+ console.log(chalk12.blue("Creating backup..."));
22315
22295
  const backupPath = await createBackup();
22316
22296
  if (backupPath) {
22317
- console.log(chalk10.green(`Backup created: ${path_manager_default.getDisplayPath(backupPath)}`));
22297
+ console.log(chalk12.green(`Backup created: ${path_manager_default.getDisplayPath(backupPath)}`));
22318
22298
  console.log("");
22319
22299
  } else {
22320
- console.log(chalk10.yellow("Failed to create backup, continuing..."));
22300
+ console.log(chalk12.yellow("Failed to create backup, continuing..."));
22321
22301
  }
22322
22302
  }
22323
22303
  if (!options.force) {
22324
- console.log(chalk10.yellow('Type "uninstall" to confirm:'));
22304
+ console.log(chalk12.yellow('Type "uninstall" to confirm:'));
22325
22305
  const confirmed = await promptConfirmation("> ");
22326
22306
  if (!confirmed) {
22327
- console.log(chalk10.yellow("\nUninstall cancelled."));
22307
+ console.log(chalk12.yellow("\nUninstall cancelled."));
22328
22308
  return {
22329
22309
  success: false,
22330
22310
  message: "Uninstall cancelled by user"
@@ -22332,22 +22312,22 @@ async function uninstall(options = {}, _projectPath = process.cwd()) {
22332
22312
  }
22333
22313
  }
22334
22314
  console.log("");
22335
- console.log(chalk10.blue("Removing prjct..."));
22315
+ console.log(chalk12.blue("Removing prjct..."));
22336
22316
  const { deleted, errors } = await performUninstall(items, installation, options);
22337
22317
  console.log("");
22338
22318
  if (deleted.length > 0) {
22339
- console.log(chalk10.green(`Removed ${deleted.length} items`));
22319
+ console.log(chalk12.green(`Removed ${deleted.length} items`));
22340
22320
  }
22341
22321
  if (errors.length > 0) {
22342
- console.log(chalk10.yellow(`
22322
+ console.log(chalk12.yellow(`
22343
22323
  ${errors.length} errors:`));
22344
22324
  for (const error of errors) {
22345
- console.log(chalk10.red(` - ${error}`));
22325
+ console.log(chalk12.red(` - ${error}`));
22346
22326
  }
22347
22327
  }
22348
22328
  console.log("");
22349
- console.log(chalk10.green("prjct has been uninstalled."));
22350
- console.log(chalk10.dim("Thanks for using prjct! We hope to see you again."));
22329
+ console.log(chalk12.green("prjct has been uninstalled."));
22330
+ console.log(chalk12.dim("Thanks for using prjct! We hope to see you again."));
22351
22331
  console.log("");
22352
22332
  return {
22353
22333
  success: errors.length === 0,
@@ -22394,7 +22374,7 @@ __export(watch_service_exports, {
22394
22374
  watchService: () => watchService
22395
22375
  });
22396
22376
  import path47 from "node:path";
22397
- import chalk11 from "chalk";
22377
+ import chalk13 from "chalk";
22398
22378
  import chokidar from "chokidar";
22399
22379
  var TRIGGER_PATTERNS, IGNORE_PATTERNS2, WatchService, watchService;
22400
22380
  var init_watch_service = __esm({
@@ -22504,7 +22484,7 @@ var init_watch_service = __esm({
22504
22484
  async stop() {
22505
22485
  if (!this.options.quiet) {
22506
22486
  console.log("");
22507
- console.log(chalk11.dim(`
22487
+ console.log(chalk13.dim(`
22508
22488
  \u{1F44B} Stopped watching (${this.syncCount} syncs performed)`));
22509
22489
  }
22510
22490
  if (this.debounceTimer) {
@@ -22525,7 +22505,7 @@ var init_watch_service = __esm({
22525
22505
  this.pendingChanges.add(filePath);
22526
22506
  if (this.options.verbose && !this.options.quiet) {
22527
22507
  const eventIcon = event === "add" ? "\u2795" : event === "unlink" ? "\u2796" : "\u{1F4DD}";
22528
- console.log(chalk11.dim(` ${eventIcon} ${filePath}`));
22508
+ console.log(chalk13.dim(` ${eventIcon} ${filePath}`));
22529
22509
  }
22530
22510
  this.scheduleSyncIfNeeded();
22531
22511
  }
@@ -22542,7 +22522,7 @@ var init_watch_service = __esm({
22542
22522
  if (timeSinceLastSync < this.options.minIntervalMs && this.lastSyncTime > 0) {
22543
22523
  const waitTime = this.options.minIntervalMs - timeSinceLastSync;
22544
22524
  if (this.options.verbose && !this.options.quiet) {
22545
- console.log(chalk11.dim(` \u23F3 Rate limited, waiting ${Math.round(waitTime / 1e3)}s...`));
22525
+ console.log(chalk13.dim(` \u23F3 Rate limited, waiting ${Math.round(waitTime / 1e3)}s...`));
22546
22526
  }
22547
22527
  this.debounceTimer = setTimeout(() => this.performSync(), waitTime);
22548
22528
  return;
@@ -22562,7 +22542,7 @@ var init_watch_service = __esm({
22562
22542
  const filesSummary = changedFiles.length === 1 ? changedFiles[0] : `${changedFiles.length} files`;
22563
22543
  console.log(
22564
22544
  `
22565
- ${chalk11.dim(`[${timestamp}]`)} ${chalk11.cyan("\u27F3")} ${filesSummary} changed \u2192 syncing...`
22545
+ ${chalk13.dim(`[${timestamp}]`)} ${chalk13.cyan("\u27F3")} ${filesSummary} changed \u2192 syncing...`
22566
22546
  );
22567
22547
  }
22568
22548
  try {
@@ -22573,16 +22553,16 @@ ${chalk11.dim(`[${timestamp}]`)} ${chalk11.cyan("\u27F3")} ${filesSummary} chang
22573
22553
  if (!this.options.quiet) {
22574
22554
  const agents = result.agents.filter((a) => a.type === "domain").map((a) => a.name);
22575
22555
  const agentStr = agents.length > 0 ? ` [${agents.join(", ")}]` : "";
22576
- console.log(`${chalk11.dim(`[${timestamp}]`)} ${chalk11.green("\u2713")} Synced${agentStr}`);
22556
+ console.log(`${chalk13.dim(`[${timestamp}]`)} ${chalk13.green("\u2713")} Synced${agentStr}`);
22577
22557
  }
22578
22558
  } else {
22579
22559
  console.error(
22580
- `${chalk11.dim(`[${timestamp}]`)} ${chalk11.red("\u2717")} Sync failed: ${result.error}`
22560
+ `${chalk13.dim(`[${timestamp}]`)} ${chalk13.red("\u2717")} Sync failed: ${result.error}`
22581
22561
  );
22582
22562
  }
22583
22563
  } catch (error) {
22584
22564
  console.error(
22585
- `${chalk11.dim(`[${timestamp}]`)} ${chalk11.red("\u2717")} Error: ${error.message}`
22565
+ `${chalk13.dim(`[${timestamp}]`)} ${chalk13.red("\u2717")} Error: ${error.message}`
22586
22566
  );
22587
22567
  }
22588
22568
  }
@@ -22590,19 +22570,19 @@ ${chalk11.dim(`[${timestamp}]`)} ${chalk11.cyan("\u27F3")} ${filesSummary} chang
22590
22570
  * Handle watcher errors
22591
22571
  */
22592
22572
  handleError(error) {
22593
- console.error(chalk11.red(`Watch error: ${error.message}`));
22573
+ console.error(chalk13.red(`Watch error: ${error.message}`));
22594
22574
  }
22595
22575
  /**
22596
22576
  * Print startup message
22597
22577
  */
22598
22578
  printStartup() {
22599
22579
  console.log("");
22600
- console.log(chalk11.cyan("\u{1F441}\uFE0F Watching for changes..."));
22601
- console.log(chalk11.dim(` Project: ${path47.basename(this.projectPath)}`));
22602
- console.log(chalk11.dim(` Debounce: ${this.options.debounceMs}ms`));
22603
- console.log(chalk11.dim(` Min interval: ${this.options.minIntervalMs / 1e3}s`));
22580
+ console.log(chalk13.cyan("\u{1F441}\uFE0F Watching for changes..."));
22581
+ console.log(chalk13.dim(` Project: ${path47.basename(this.projectPath)}`));
22582
+ console.log(chalk13.dim(` Debounce: ${this.options.debounceMs}ms`));
22583
+ console.log(chalk13.dim(` Min interval: ${this.options.minIntervalMs / 1e3}s`));
22604
22584
  console.log("");
22605
- console.log(chalk11.dim(" Press Ctrl+C to stop"));
22585
+ console.log(chalk13.dim(" Press Ctrl+C to stop"));
22606
22586
  console.log("");
22607
22587
  }
22608
22588
  };
@@ -23013,47 +22993,52 @@ __export(help_exports, {
23013
22993
  formatTerminalCommandHelp: () => formatTerminalCommandHelp,
23014
22994
  getHelp: () => getHelp
23015
22995
  });
22996
+ import chalk14 from "chalk";
23016
22997
  function formatMainHelp() {
23017
22998
  const lines = [];
23018
22999
  lines.push("");
23019
- lines.push(`${CYAN2}${BOLD3}prjct${RESET3} v${VERSION} - Context layer for AI coding agents`);
23020
- lines.push(`${DIM3}Works with Claude Code, Gemini CLI, Cursor, Windsurf, and more.${RESET3}`);
23000
+ lines.push(`${chalk14.cyan.bold("prjct")} v${VERSION} - Context layer for AI coding agents`);
23001
+ lines.push(chalk14.dim("Works with Claude Code, Gemini CLI, Cursor, Windsurf, and more."));
23021
23002
  lines.push("");
23022
- lines.push(`${BOLD3}QUICK START${RESET3}`);
23023
- lines.push(`${DIM3}${"\u2500".repeat(60)}${RESET3}`);
23024
- lines.push(` ${GREEN3}1.${RESET3} prjct start ${DIM3}# Configure AI providers${RESET3}`);
23025
- lines.push(` ${GREEN3}2.${RESET3} cd my-project && prjct init`);
23026
- lines.push(` ${GREEN3}3.${RESET3} Open in Claude Code / Gemini CLI / Cursor`);
23027
- lines.push(` ${GREEN3}4.${RESET3} p. sync ${DIM3}# Analyze project${RESET3}`);
23003
+ lines.push(chalk14.bold("QUICK START"));
23004
+ lines.push(chalk14.dim("\u2500".repeat(60)));
23005
+ lines.push(
23006
+ ` ${chalk14.green("1.")} prjct start ${chalk14.dim("# Configure AI providers")}`
23007
+ );
23008
+ lines.push(` ${chalk14.green("2.")} cd my-project && prjct init`);
23009
+ lines.push(` ${chalk14.green("3.")} Open in Claude Code / Gemini CLI / Cursor`);
23010
+ lines.push(` ${chalk14.green("4.")} p. sync ${chalk14.dim("# Analyze project")}`);
23028
23011
  lines.push("");
23029
- lines.push(`${BOLD3}TERMINAL COMMANDS${RESET3}`);
23030
- lines.push(`${DIM3}${"\u2500".repeat(60)}${RESET3}`);
23012
+ lines.push(chalk14.bold("TERMINAL COMMANDS"));
23013
+ lines.push(chalk14.dim("\u2500".repeat(60)));
23031
23014
  for (const cmd of TERMINAL_COMMANDS) {
23032
23015
  const name = `prjct ${cmd.name}`.padEnd(22);
23033
23016
  lines.push(` ${name} ${cmd.description}`);
23034
23017
  }
23035
23018
  lines.push("");
23036
- lines.push(`${BOLD3}AI AGENT COMMANDS${RESET3} ${DIM3}(inside Claude/Gemini/Cursor)${RESET3}`);
23037
- lines.push(`${DIM3}${"\u2500".repeat(60)}${RESET3}`);
23019
+ lines.push(`${chalk14.bold("AI AGENT COMMANDS")} ${chalk14.dim("(inside Claude/Gemini/Cursor)")}`);
23020
+ lines.push(chalk14.dim("\u2500".repeat(60)));
23038
23021
  lines.push(` ${"Command".padEnd(22)} Description`);
23039
- lines.push(` ${DIM3}${"\u2500".repeat(56)}${RESET3}`);
23022
+ lines.push(` ${chalk14.dim("\u2500".repeat(56))}`);
23040
23023
  const coreCommands = COMMANDS.filter((c) => c.group === "core" && c.usage?.claude);
23041
23024
  for (const cmd of coreCommands.slice(0, 10)) {
23042
23025
  const usage = `p. ${cmd.name}`.padEnd(22);
23043
23026
  lines.push(` ${usage} ${cmd.description}`);
23044
23027
  }
23045
- lines.push(` ${DIM3}... and ${coreCommands.length - 10} more (run 'prjct help commands')${RESET3}`);
23028
+ lines.push(
23029
+ ` ${chalk14.dim(`... and ${coreCommands.length - 10} more (run 'prjct help commands')`)}`
23030
+ );
23046
23031
  lines.push("");
23047
- lines.push(`${BOLD3}FLAGS${RESET3}`);
23048
- lines.push(`${DIM3}${"\u2500".repeat(60)}${RESET3}`);
23032
+ lines.push(chalk14.bold("FLAGS"));
23033
+ lines.push(chalk14.dim("\u2500".repeat(60)));
23049
23034
  for (const flag of GLOBAL_FLAGS) {
23050
23035
  lines.push(` ${flag.flag.padEnd(22)} ${flag.description}`);
23051
23036
  }
23052
23037
  lines.push("");
23053
- lines.push(`${BOLD3}MORE INFO${RESET3}`);
23054
- lines.push(`${DIM3}${"\u2500".repeat(60)}${RESET3}`);
23055
- lines.push(` Documentation: ${CYAN2}https://prjct.app${RESET3}`);
23056
- lines.push(` GitHub: ${CYAN2}https://github.com/jlopezlira/prjct-cli${RESET3}`);
23038
+ lines.push(chalk14.bold("MORE INFO"));
23039
+ lines.push(chalk14.dim("\u2500".repeat(60)));
23040
+ lines.push(` Documentation: ${chalk14.cyan("https://prjct.app")}`);
23041
+ lines.push(` GitHub: ${chalk14.cyan("https://github.com/jlopezlira/prjct-cli")}`);
23057
23042
  lines.push(` Per-command: prjct help <command>`);
23058
23043
  lines.push("");
23059
23044
  return lines.join("\n");
@@ -23063,20 +23048,20 @@ function formatTerminalCommandHelp(commandName) {
23063
23048
  if (!cmd) return null;
23064
23049
  const lines = [];
23065
23050
  lines.push("");
23066
- lines.push(`${CYAN2}${BOLD3}prjct ${cmd.name}${RESET3} - ${cmd.description}`);
23051
+ lines.push(`${chalk14.cyan.bold(`prjct ${cmd.name}`)} - ${cmd.description}`);
23067
23052
  lines.push("");
23068
- lines.push(`${BOLD3}USAGE${RESET3}`);
23053
+ lines.push(chalk14.bold("USAGE"));
23069
23054
  lines.push(` ${cmd.example}`);
23070
23055
  lines.push("");
23071
23056
  if (cmd.options) {
23072
- lines.push(`${BOLD3}OPTIONS${RESET3}`);
23057
+ lines.push(chalk14.bold("OPTIONS"));
23073
23058
  for (const opt of cmd.options) {
23074
23059
  lines.push(` ${opt}`);
23075
23060
  }
23076
23061
  lines.push("");
23077
23062
  }
23078
23063
  if (cmd.subcommands) {
23079
- lines.push(`${BOLD3}SUBCOMMANDS${RESET3}`);
23064
+ lines.push(chalk14.bold("SUBCOMMANDS"));
23080
23065
  for (const sub of cmd.subcommands) {
23081
23066
  lines.push(` ${sub}`);
23082
23067
  }
@@ -23089,9 +23074,9 @@ function formatAgentCommandHelp(commandName) {
23089
23074
  if (!cmd) return null;
23090
23075
  const lines = [];
23091
23076
  lines.push("");
23092
- lines.push(`${CYAN2}${BOLD3}p. ${cmd.name}${RESET3} - ${cmd.description}`);
23077
+ lines.push(`${chalk14.cyan.bold(`p. ${cmd.name}`)} - ${cmd.description}`);
23093
23078
  lines.push("");
23094
- lines.push(`${BOLD3}USAGE${RESET3}`);
23079
+ lines.push(chalk14.bold("USAGE"));
23095
23080
  if (cmd.usage?.claude) {
23096
23081
  lines.push(` Claude/Gemini: ${cmd.usage.claude.replace("/p:", "p. ")}`);
23097
23082
  }
@@ -23100,27 +23085,27 @@ function formatAgentCommandHelp(commandName) {
23100
23085
  }
23101
23086
  lines.push("");
23102
23087
  if (cmd.params) {
23103
- lines.push(`${BOLD3}PARAMETERS${RESET3}`);
23088
+ lines.push(chalk14.bold("PARAMETERS"));
23104
23089
  lines.push(` ${cmd.params}`);
23105
23090
  lines.push("");
23106
23091
  }
23107
23092
  if (cmd.features && cmd.features.length > 0) {
23108
- lines.push(`${BOLD3}FEATURES${RESET3}`);
23093
+ lines.push(chalk14.bold("FEATURES"));
23109
23094
  for (const feature of cmd.features) {
23110
23095
  lines.push(` \u2022 ${feature}`);
23111
23096
  }
23112
23097
  lines.push("");
23113
23098
  }
23114
23099
  if (cmd.blockingRules) {
23115
- lines.push(`${BOLD3}REQUIREMENTS${RESET3}`);
23116
- lines.push(` ${YELLOW3}\u26A0${RESET3} ${cmd.blockingRules.check}`);
23100
+ lines.push(chalk14.bold("REQUIREMENTS"));
23101
+ lines.push(` ${chalk14.yellow("\u26A0")} ${cmd.blockingRules.check}`);
23117
23102
  lines.push("");
23118
23103
  }
23119
23104
  const category = CATEGORIES[cmd.group];
23120
23105
  if (category) {
23121
- lines.push(`${DIM3}Category: ${category.title}${RESET3}`);
23106
+ lines.push(chalk14.dim(`Category: ${category.title}`));
23122
23107
  if (cmd.isOptional) {
23123
- lines.push(`${DIM3}This is an optional command.${RESET3}`);
23108
+ lines.push(chalk14.dim("This is an optional command."));
23124
23109
  }
23125
23110
  lines.push("");
23126
23111
  }
@@ -23132,7 +23117,7 @@ function formatCommandHelp(commandName) {
23132
23117
  const agentHelp = formatAgentCommandHelp(commandName);
23133
23118
  if (agentHelp) return agentHelp;
23134
23119
  return `
23135
- ${YELLOW3}Command '${commandName}' not found.${RESET3}
23120
+ ${chalk14.yellow(`Command '${commandName}' not found.`)}
23136
23121
 
23137
23122
  Run 'prjct help' to see all available commands.
23138
23123
  `;
@@ -23140,16 +23125,16 @@ Run 'prjct help' to see all available commands.
23140
23125
  function formatCommandList() {
23141
23126
  const lines = [];
23142
23127
  lines.push("");
23143
- lines.push(`${CYAN2}${BOLD3}All Commands${RESET3}`);
23128
+ lines.push(chalk14.cyan.bold("All Commands"));
23144
23129
  lines.push("");
23145
23130
  const categories = Object.entries(CATEGORIES).sort((a, b) => a[1].order - b[1].order);
23146
23131
  for (const [categoryKey, category] of categories) {
23147
23132
  const categoryCommands = COMMANDS.filter((c) => c.group === categoryKey);
23148
23133
  if (categoryCommands.length === 0) continue;
23149
23134
  lines.push(
23150
- `${BOLD3}${category.title}${RESET3} ${DIM3}(${categoryCommands.length} commands)${RESET3}`
23135
+ `${chalk14.bold(category.title)} ${chalk14.dim(`(${categoryCommands.length} commands)`)}`
23151
23136
  );
23152
- lines.push(`${DIM3}${category.description}${RESET3}`);
23137
+ lines.push(chalk14.dim(category.description));
23153
23138
  lines.push("");
23154
23139
  for (const cmd of categoryCommands) {
23155
23140
  const name = `p. ${cmd.name}`.padEnd(18);
@@ -23158,7 +23143,7 @@ function formatCommandList() {
23158
23143
  }
23159
23144
  lines.push("");
23160
23145
  }
23161
- lines.push(`${DIM3}Run 'prjct help <command>' for detailed help on a specific command.${RESET3}`);
23146
+ lines.push(chalk14.dim("Run 'prjct help <command>' for detailed help on a specific command."));
23162
23147
  lines.push("");
23163
23148
  return lines.join("\n");
23164
23149
  }
@@ -23171,18 +23156,12 @@ function getHelp(topic) {
23171
23156
  }
23172
23157
  return formatCommandHelp(topic);
23173
23158
  }
23174
- var CYAN2, DIM3, BOLD3, RESET3, GREEN3, YELLOW3, TERMINAL_COMMANDS, GLOBAL_FLAGS, help_default;
23159
+ var TERMINAL_COMMANDS, GLOBAL_FLAGS, help_default;
23175
23160
  var init_help = __esm({
23176
23161
  "core/utils/help.ts"() {
23177
23162
  "use strict";
23178
23163
  init_command_data();
23179
23164
  init_version();
23180
- CYAN2 = "\x1B[36m";
23181
- DIM3 = "\x1B[2m";
23182
- BOLD3 = "\x1B[1m";
23183
- RESET3 = "\x1B[0m";
23184
- GREEN3 = "\x1B[32m";
23185
- YELLOW3 = "\x1B[33m";
23186
23165
  TERMINAL_COMMANDS = [
23187
23166
  {
23188
23167
  name: "start",
@@ -23280,50 +23259,53 @@ import { execSync as execSync7 } from "node:child_process";
23280
23259
  import fs45 from "node:fs";
23281
23260
  import os13 from "node:os";
23282
23261
  import path48 from "node:path";
23262
+ import chalk15 from "chalk";
23283
23263
  async function installAICLI(provider) {
23284
23264
  const packageName = provider.name === "claude" ? "@anthropic-ai/claude-code" : "@google/gemini-cli";
23285
23265
  if (!dependencyValidator.isAvailable("npm")) {
23286
- console.log(`${YELLOW4}\u26A0\uFE0F npm is not available${NC}`);
23266
+ console.log(`${chalk15.yellow("\u26A0\uFE0F npm is not available")}`);
23287
23267
  console.log("");
23288
- console.log(`${DIM4}Install ${provider.displayName} using one of:${NC}`);
23289
- console.log(`${DIM4} \u2022 Install Node.js: https://nodejs.org${NC}`);
23268
+ console.log(`${chalk15.dim(`Install ${provider.displayName} using one of:`)}`);
23269
+ console.log(chalk15.dim(" \u2022 Install Node.js: https://nodejs.org"));
23290
23270
  console.log(
23291
- `${DIM4} \u2022 Use Homebrew: brew install ${provider.name === "claude" ? "claude" : "gemini"}${NC}`
23271
+ chalk15.dim(
23272
+ ` \u2022 Use Homebrew: brew install ${provider.name === "claude" ? "claude" : "gemini"}`
23273
+ )
23292
23274
  );
23293
- console.log(`${DIM4} \u2022 Use npx directly: npx ${packageName}${NC}`);
23275
+ console.log(chalk15.dim(` \u2022 Use npx directly: npx ${packageName}`));
23294
23276
  console.log("");
23295
23277
  return false;
23296
23278
  }
23297
23279
  try {
23298
- console.log(`${YELLOW4}\u{1F4E6} ${provider.displayName} not found. Installing...${NC}`);
23280
+ console.log(chalk15.yellow(`\u{1F4E6} ${provider.displayName} not found. Installing...`));
23299
23281
  console.log("");
23300
23282
  execSync7(`npm install -g ${packageName}`, {
23301
23283
  stdio: "inherit",
23302
23284
  timeout: getTimeout("NPM_INSTALL")
23303
23285
  });
23304
23286
  console.log("");
23305
- console.log(`${GREEN4}\u2713${NC} ${provider.displayName} installed successfully`);
23287
+ console.log(`${chalk15.green("\u2713")} ${provider.displayName} installed successfully`);
23306
23288
  console.log("");
23307
23289
  return true;
23308
23290
  } catch (error) {
23309
23291
  const err = error;
23310
23292
  const isTimeout = err.killed && err.signal === "SIGTERM";
23311
23293
  if (isTimeout) {
23312
- console.log(`${YELLOW4}\u26A0\uFE0F Installation timed out for ${provider.displayName}${NC}`);
23294
+ console.log(chalk15.yellow(`\u26A0\uFE0F Installation timed out for ${provider.displayName}`));
23313
23295
  console.log("");
23314
- console.log(`${DIM4}The npm install took too long. Try:${NC}`);
23315
- console.log(`${DIM4} \u2022 Set PRJCT_TIMEOUT_NPM_INSTALL=300000 for 5 minutes${NC}`);
23316
- console.log(`${DIM4} \u2022 Run manually: npm install -g ${packageName}${NC}`);
23296
+ console.log(chalk15.dim("The npm install took too long. Try:"));
23297
+ console.log(chalk15.dim(" \u2022 Set PRJCT_TIMEOUT_NPM_INSTALL=300000 for 5 minutes"));
23298
+ console.log(chalk15.dim(` \u2022 Run manually: npm install -g ${packageName}`));
23317
23299
  } else {
23318
- console.log(`${YELLOW4}\u26A0\uFE0F Failed to install ${provider.displayName}: ${err.message}${NC}`);
23300
+ console.log(chalk15.yellow(`\u26A0\uFE0F Failed to install ${provider.displayName}: ${err.message}`));
23319
23301
  }
23320
23302
  console.log("");
23321
- console.log(`${DIM4}Alternative installation methods:${NC}`);
23322
- console.log(`${DIM4} \u2022 npm: npm install -g ${packageName}${NC}`);
23323
- console.log(`${DIM4} \u2022 yarn: yarn global add ${packageName}${NC}`);
23324
- console.log(`${DIM4} \u2022 pnpm: pnpm add -g ${packageName}${NC}`);
23303
+ console.log(chalk15.dim("Alternative installation methods:"));
23304
+ console.log(chalk15.dim(` \u2022 npm: npm install -g ${packageName}`));
23305
+ console.log(chalk15.dim(` \u2022 yarn: yarn global add ${packageName}`));
23306
+ console.log(chalk15.dim(` \u2022 pnpm: pnpm add -g ${packageName}`));
23325
23307
  console.log(
23326
- `${DIM4} \u2022 brew: brew install ${provider.name === "claude" ? "claude" : "gemini"}${NC}`
23308
+ chalk15.dim(` \u2022 brew: brew install ${provider.name === "claude" ? "claude" : "gemini"}`)
23327
23309
  );
23328
23310
  console.log("");
23329
23311
  return false;
@@ -23403,7 +23385,7 @@ async function run() {
23403
23385
  if (antigravityDetection.installed) {
23404
23386
  const antigravityResult = await installAntigravitySkill();
23405
23387
  if (antigravityResult.success) {
23406
- console.log(` ${GREEN4}\u2713${NC} Antigravity skill installed`);
23388
+ console.log(` ${chalk15.green("\u2713")} Antigravity skill installed`);
23407
23389
  }
23408
23390
  }
23409
23391
  await editors_config_default.saveConfig(VERSION, command_installer_default.getInstallPath(), selection.provider);
@@ -23703,7 +23685,7 @@ async function migrateProjectsCliVersion() {
23703
23685
  }
23704
23686
  }
23705
23687
  if (migrated > 0) {
23706
- console.log(` ${GREEN4}\u2713${NC} Updated ${migrated} project(s) to v${VERSION}`);
23688
+ console.log(` ${chalk15.green("\u2713")} Updated ${migrated} project(s) to v${VERSION}`);
23707
23689
  }
23708
23690
  } catch (error) {
23709
23691
  if (!isNotFoundError(error)) {
@@ -23909,29 +23891,29 @@ function ensureStatusLineSymlink(linkPath, targetPath) {
23909
23891
  function showResults(results, provider) {
23910
23892
  console.log("");
23911
23893
  if (results.cliInstalled) {
23912
- console.log(` ${GREEN4}\u2713${NC} ${provider.displayName} CLI installed`);
23894
+ console.log(` ${chalk15.green("\u2713")} ${provider.displayName} CLI installed`);
23913
23895
  } else {
23914
- console.log(` ${GREEN4}\u2713${NC} ${provider.displayName} CLI found`);
23896
+ console.log(` ${chalk15.green("\u2713")} ${provider.displayName} CLI found`);
23915
23897
  }
23916
23898
  const totalCommands = results.commandsAdded + results.commandsUpdated;
23917
23899
  if (totalCommands > 0) {
23918
23900
  const parts = [];
23919
23901
  if (results.commandsAdded > 0) parts.push(`${results.commandsAdded} new`);
23920
23902
  if (results.commandsUpdated > 0) parts.push(`${results.commandsUpdated} updated`);
23921
- console.log(` ${GREEN4}\u2713${NC} Commands synced (${parts.join(", ")})`);
23903
+ console.log(` ${chalk15.green("\u2713")} Commands synced (${parts.join(", ")})`);
23922
23904
  } else {
23923
- console.log(` ${GREEN4}\u2713${NC} Commands up to date`);
23905
+ console.log(` ${chalk15.green("\u2713")} Commands up to date`);
23924
23906
  }
23925
23907
  if (results.configAction === "created") {
23926
- console.log(` ${GREEN4}\u2713${NC} Global config created (${provider.contextFile})`);
23908
+ console.log(` ${chalk15.green("\u2713")} Global config created (${provider.contextFile})`);
23927
23909
  } else if (results.configAction === "updated") {
23928
- console.log(` ${GREEN4}\u2713${NC} Global config updated (${provider.contextFile})`);
23910
+ console.log(` ${chalk15.green("\u2713")} Global config updated (${provider.contextFile})`);
23929
23911
  } else if (results.configAction === "appended") {
23930
- console.log(` ${GREEN4}\u2713${NC} Global config merged (${provider.contextFile})`);
23912
+ console.log(` ${chalk15.green("\u2713")} Global config merged (${provider.contextFile})`);
23931
23913
  }
23932
23914
  console.log("");
23933
23915
  }
23934
- var GREEN4, YELLOW4, DIM4, NC, setup_default, isDirectRun;
23916
+ var setup_default, isDirectRun;
23935
23917
  var init_setup = __esm({
23936
23918
  "core/infrastructure/setup.ts"() {
23937
23919
  "use strict";
@@ -23942,10 +23924,6 @@ var init_setup = __esm({
23942
23924
  init_ai_provider();
23943
23925
  init_command_installer();
23944
23926
  init_editors_config();
23945
- GREEN4 = "\x1B[32m";
23946
- YELLOW4 = "\x1B[33m";
23947
- DIM4 = "\x1B[2m";
23948
- NC = "\x1B[0m";
23949
23927
  __name(installAICLI, "installAICLI");
23950
23928
  __name(run, "run");
23951
23929
  setup_default = { run };
@@ -25218,7 +25196,7 @@ var init_maintenance = __esm({
25218
25196
  // core/commands/setup.ts
25219
25197
  import fs47 from "node:fs";
25220
25198
  import path54 from "node:path";
25221
- import chalk12 from "chalk";
25199
+ import chalk16 from "chalk";
25222
25200
  var SetupCommands;
25223
25201
  var init_setup2 = __esm({
25224
25202
  "core/commands/setup.ts"() {
@@ -25424,45 +25402,45 @@ echo "\u26A1 prjct"
25424
25402
  * Show beautiful ASCII art with quick start
25425
25403
  */
25426
25404
  showAsciiArt() {
25427
- console.log(chalk12.cyan("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"));
25405
+ console.log(chalk16.cyan("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"));
25428
25406
  console.log("");
25429
- console.log(chalk12.bold.cyan(" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557"));
25430
- console.log(chalk12.bold.cyan(" \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D"));
25431
- console.log(chalk12.bold.cyan(" \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"));
25432
- console.log(chalk12.bold.cyan(" \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"));
25433
- console.log(chalk12.bold.cyan(" \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551"));
25434
- console.log(chalk12.bold.cyan(" \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D"));
25407
+ console.log(chalk16.bold.cyan(" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557"));
25408
+ console.log(chalk16.bold.cyan(" \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D"));
25409
+ console.log(chalk16.bold.cyan(" \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"));
25410
+ console.log(chalk16.bold.cyan(" \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"));
25411
+ console.log(chalk16.bold.cyan(" \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551"));
25412
+ console.log(chalk16.bold.cyan(" \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D"));
25435
25413
  console.log("");
25436
25414
  console.log(
25437
- ` ${chalk12.bold.cyan("prjct")}${chalk12.magenta("/")}${chalk12.green("cli")} ${chalk12.dim.white(`v${VERSION} installed`)}`
25415
+ ` ${chalk16.bold.cyan("prjct")}${chalk16.magenta("/")}${chalk16.green("cli")} ${chalk16.dim.white(`v${VERSION} installed`)}`
25438
25416
  );
25439
25417
  console.log("");
25440
- console.log(` ${chalk12.yellow("\u26A1")} Ship faster with zero friction`);
25441
- console.log(` ${chalk12.green("\u{1F4DD}")} From idea to technical tasks in minutes`);
25442
- console.log(` ${chalk12.cyan("\u{1F916}")} Perfect context for AI agents`);
25418
+ console.log(` ${chalk16.yellow("\u26A1")} Ship faster with zero friction`);
25419
+ console.log(` ${chalk16.green("\u{1F4DD}")} From idea to technical tasks in minutes`);
25420
+ console.log(` ${chalk16.cyan("\u{1F916}")} Perfect context for AI agents`);
25443
25421
  console.log("");
25444
- console.log(chalk12.cyan("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"));
25422
+ console.log(chalk16.cyan("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"));
25445
25423
  console.log("");
25446
- console.log(chalk12.bold.cyan("\u{1F680} Quick Start"));
25447
- console.log(chalk12.dim("\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"));
25424
+ console.log(chalk16.bold.cyan("\u{1F680} Quick Start"));
25425
+ console.log(chalk16.dim("\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"));
25448
25426
  console.log("");
25449
- console.log(` ${chalk12.bold("1.")} Initialize your project:`);
25450
- console.log(` ${chalk12.green("cd your-project && prjct init")}`);
25427
+ console.log(` ${chalk16.bold("1.")} Initialize your project:`);
25428
+ console.log(` ${chalk16.green("cd your-project && prjct init")}`);
25451
25429
  console.log("");
25452
- console.log(` ${chalk12.bold("2.")} Start your first task:`);
25453
- console.log(` ${chalk12.green('prjct task "build auth"')}`);
25430
+ console.log(` ${chalk16.bold("2.")} Start your first task:`);
25431
+ console.log(` ${chalk16.green('prjct task "build auth"')}`);
25454
25432
  console.log("");
25455
- console.log(` ${chalk12.bold("3.")} Ship & celebrate:`);
25456
- console.log(` ${chalk12.green('prjct ship "user login"')}`);
25433
+ console.log(` ${chalk16.bold("3.")} Ship & celebrate:`);
25434
+ console.log(` ${chalk16.green('prjct ship "user login"')}`);
25457
25435
  console.log("");
25458
- console.log(chalk12.dim("\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"));
25436
+ console.log(chalk16.dim("\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"));
25459
25437
  console.log("");
25460
- console.log(` ${chalk12.dim("Documentation:")} ${chalk12.cyan("https://prjct.app")}`);
25438
+ console.log(` ${chalk16.dim("Documentation:")} ${chalk16.cyan("https://prjct.app")}`);
25461
25439
  console.log(
25462
- ` ${chalk12.dim("Report issues:")} ${chalk12.cyan("https://github.com/jlopezlira/prjct-cli/issues")}`
25440
+ ` ${chalk16.dim("Report issues:")} ${chalk16.cyan("https://github.com/jlopezlira/prjct-cli/issues")}`
25463
25441
  );
25464
25442
  console.log("");
25465
- console.log(chalk12.bold.magenta("Happy shipping! \u{1F680}"));
25443
+ console.log(chalk16.bold.magenta("Happy shipping! \u{1F680}"));
25466
25444
  console.log("");
25467
25445
  }
25468
25446
  };
@@ -25553,6 +25531,7 @@ var init_project_commands = __esm({
25553
25531
  // core/workflow/workflow-preferences.ts
25554
25532
  import { exec as exec12 } from "node:child_process";
25555
25533
  import { promisify as promisify12 } from "node:util";
25534
+ import chalk17 from "chalk";
25556
25535
  function prefKey(hook, command) {
25557
25536
  return `workflow:${hook}_${command}`;
25558
25537
  }
@@ -25620,7 +25599,7 @@ async function runWorkflowHooks(projectId, phase, command, options = {}) {
25620
25599
  oncePreferences.delete(key);
25621
25600
  }
25622
25601
  console.log(`
25623
- ${DIM5}Running ${phase}-${command}: ${action}${RESET4}`);
25602
+ ${chalk17.dim(`Running ${phase}-${command}: ${action}`)}`);
25624
25603
  try {
25625
25604
  const startTime = Date.now();
25626
25605
  await execAsync7(action, {
@@ -25630,12 +25609,12 @@ ${DIM5}Running ${phase}-${command}: ${action}${RESET4}`);
25630
25609
  });
25631
25610
  const elapsed = Date.now() - startTime;
25632
25611
  const timeStr = elapsed > 1e3 ? `${(elapsed / 1e3).toFixed(1)}s` : `${elapsed}ms`;
25633
- console.log(`${GREEN5}\u2713${RESET4} ${DIM5}(${timeStr})${RESET4}`);
25612
+ console.log(`${chalk17.green("\u2713")} ${chalk17.dim(`(${timeStr})`)}`);
25634
25613
  return { success: true };
25635
25614
  } catch (error) {
25636
- console.log(`${RED}\u2717 failed${RESET4}`);
25615
+ console.log(chalk17.red("\u2717 failed"));
25637
25616
  const errorMessage = error.message || "Unknown error";
25638
- console.log(`${DIM5}${errorMessage.split("\n")[0]}${RESET4}`);
25617
+ console.log(chalk17.dim(errorMessage.split("\n")[0]));
25639
25618
  return { success: false, failed: action, output: errorMessage };
25640
25619
  }
25641
25620
  }
@@ -25673,31 +25652,26 @@ async function removeWorkflowPreference(projectId, hook, command) {
25673
25652
  }
25674
25653
  function formatWorkflowPreferences(preferences) {
25675
25654
  if (preferences.length === 0) {
25676
- return `${DIM5}No workflow preferences configured.${RESET4}
25655
+ return `${chalk17.dim("No workflow preferences configured.")}
25677
25656
 
25678
25657
  Set one: "p. workflow antes de ship corre los tests"`;
25679
25658
  }
25680
25659
  const lines = ["", "WORKFLOW PREFERENCES", "\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"];
25681
25660
  for (const pref of preferences) {
25682
- const scopeBadge = pref.scope === "permanent" ? `${GREEN5}permanent${RESET4}` : pref.scope === "session" ? `${YELLOW5}session${RESET4}` : `${DIM5}once${RESET4}`;
25661
+ const scopeBadge = pref.scope === "permanent" ? chalk17.green("permanent") : pref.scope === "session" ? chalk17.yellow("session") : chalk17.dim("once");
25683
25662
  lines.push(` [${scopeBadge}] ${pref.key.padEnd(15)} \u2192 ${pref.action}`);
25684
25663
  }
25685
25664
  lines.push("");
25686
- lines.push(`${DIM5}Modify: "p. workflow antes de ship corre npm test"${RESET4}`);
25687
- lines.push(`${DIM5}Remove: "p. workflow quita el hook de ship"${RESET4}`);
25665
+ lines.push(chalk17.dim('Modify: "p. workflow antes de ship corre npm test"'));
25666
+ lines.push(chalk17.dim('Remove: "p. workflow quita el hook de ship"'));
25688
25667
  return lines.join("\n");
25689
25668
  }
25690
- var execAsync7, DIM5, GREEN5, RED, YELLOW5, RESET4, sessionPreferences, oncePreferences;
25669
+ var execAsync7, sessionPreferences, oncePreferences;
25691
25670
  var init_workflow_preferences = __esm({
25692
25671
  "core/workflow/workflow-preferences.ts"() {
25693
25672
  "use strict";
25694
25673
  init_memory_system();
25695
25674
  execAsync7 = promisify12(exec12);
25696
- DIM5 = "\x1B[2m";
25697
- GREEN5 = "\x1B[32m";
25698
- RED = "\x1B[31m";
25699
- YELLOW5 = "\x1B[33m";
25700
- RESET4 = "\x1B[0m";
25701
25675
  sessionPreferences = /* @__PURE__ */ new Map();
25702
25676
  oncePreferences = /* @__PURE__ */ new Map();
25703
25677
  __name(prefKey, "prefKey");
@@ -27360,7 +27334,7 @@ var require_package = __commonJS({
27360
27334
  "package.json"(exports, module) {
27361
27335
  module.exports = {
27362
27336
  name: "prjct-cli",
27363
- version: "1.2.0",
27337
+ version: "1.2.1",
27364
27338
  description: "Context layer for AI agents. Project context for Claude Code, Gemini CLI, and more.",
27365
27339
  main: "core/index.ts",
27366
27340
  bin: {
@@ -27470,6 +27444,7 @@ var core_exports = {};
27470
27444
  import fs49 from "node:fs";
27471
27445
  import os15 from "node:os";
27472
27446
  import path58 from "node:path";
27447
+ import chalk18 from "chalk";
27473
27448
  async function main() {
27474
27449
  const [commandName, ...rawArgs] = process.argv.slice(2);
27475
27450
  if (["-v", "--version", "version"].includes(commandName)) {
@@ -27608,42 +27583,42 @@ function displayVersion(version) {
27608
27583
  const cursorConfigured = fs49.existsSync(path58.join(process.cwd(), ".cursor", "commands", "sync.md"));
27609
27584
  const cursorExists = fs49.existsSync(path58.join(process.cwd(), ".cursor"));
27610
27585
  console.log(`
27611
- ${CYAN3}p/${RESET5} prjct v${version}
27612
- ${DIM6}Context layer for AI coding agents${RESET5}
27586
+ ${chalk18.cyan("p/")} prjct v${version}
27587
+ ${chalk18.dim("Context layer for AI coding agents")}
27613
27588
 
27614
- ${DIM6}Providers:${RESET5}`);
27589
+ ${chalk18.dim("Providers:")}`);
27615
27590
  if (detection.claude.installed) {
27616
- const status = claudeConfigured ? `${GREEN6}\u2713 ready${RESET5}` : `${YELLOW6}\u25CF installed${RESET5}`;
27591
+ const status = claudeConfigured ? chalk18.green("\u2713 ready") : chalk18.yellow("\u25CF installed");
27617
27592
  const ver = detection.claude.version ? ` (v${detection.claude.version})` : "";
27618
- console.log(` Claude Code ${status}${DIM6}${ver}${RESET5}`);
27593
+ console.log(` Claude Code ${status}${chalk18.dim(ver)}`);
27619
27594
  } else {
27620
- console.log(` Claude Code ${DIM6}\u25CB not installed${RESET5}`);
27595
+ console.log(` Claude Code ${chalk18.dim("\u25CB not installed")}`);
27621
27596
  }
27622
27597
  if (detection.gemini.installed) {
27623
- const status = geminiConfigured ? `${GREEN6}\u2713 ready${RESET5}` : `${YELLOW6}\u25CF installed${RESET5}`;
27598
+ const status = geminiConfigured ? chalk18.green("\u2713 ready") : chalk18.yellow("\u25CF installed");
27624
27599
  const ver = detection.gemini.version ? ` (v${detection.gemini.version})` : "";
27625
- console.log(` Gemini CLI ${status}${DIM6}${ver}${RESET5}`);
27600
+ console.log(` Gemini CLI ${status}${chalk18.dim(ver)}`);
27626
27601
  } else {
27627
- console.log(` Gemini CLI ${DIM6}\u25CB not installed${RESET5}`);
27602
+ console.log(` Gemini CLI ${chalk18.dim("\u25CB not installed")}`);
27628
27603
  }
27629
27604
  const antigravityDetection = detectAntigravity();
27630
27605
  if (antigravityDetection.installed) {
27631
- const status = antigravityDetection.skillInstalled ? `${GREEN6}\u2713 ready${RESET5}` : `${YELLOW6}\u25CF detected${RESET5}`;
27632
- const hint = antigravityDetection.skillInstalled ? "" : ` ${DIM6}(run prjct start)${RESET5}`;
27606
+ const status = antigravityDetection.skillInstalled ? chalk18.green("\u2713 ready") : chalk18.yellow("\u25CF detected");
27607
+ const hint = antigravityDetection.skillInstalled ? "" : ` ${chalk18.dim("(run prjct start)")}`;
27633
27608
  console.log(` Antigravity ${status}${hint}`);
27634
27609
  } else {
27635
- console.log(` Antigravity ${DIM6}\u25CB not installed${RESET5}`);
27610
+ console.log(` Antigravity ${chalk18.dim("\u25CB not installed")}`);
27636
27611
  }
27637
27612
  if (cursorConfigured) {
27638
- console.log(` Cursor IDE ${GREEN6}\u2713 ready${RESET5} ${DIM6}(use /sync, /task)${RESET5}`);
27613
+ console.log(` Cursor IDE ${chalk18.green("\u2713 ready")} ${chalk18.dim("(use /sync, /task)")}`);
27639
27614
  } else if (cursorExists) {
27640
- console.log(` Cursor IDE ${YELLOW6}\u25CF detected${RESET5} ${DIM6}(run prjct init)${RESET5}`);
27615
+ console.log(` Cursor IDE ${chalk18.yellow("\u25CF detected")} ${chalk18.dim("(run prjct init)")}`);
27641
27616
  } else {
27642
- console.log(` Cursor IDE ${DIM6}\u25CB no .cursor/ folder${RESET5}`);
27617
+ console.log(` Cursor IDE ${chalk18.dim("\u25CB no .cursor/ folder")}`);
27643
27618
  }
27644
27619
  console.log(`
27645
- ${DIM6}Run 'prjct start' for Claude/Gemini, 'prjct init' for Cursor${RESET5}
27646
- ${CYAN3}https://prjct.app${RESET5}
27620
+ ${chalk18.dim("Run 'prjct start' for Claude/Gemini, 'prjct init' for Cursor")}
27621
+ ${chalk18.cyan("https://prjct.app")}
27647
27622
  `);
27648
27623
  }
27649
27624
  function displayHelp() {
@@ -27708,7 +27683,6 @@ MORE INFO
27708
27683
  GitHub: https://github.com/jlopezlira/prjct-cli
27709
27684
  `);
27710
27685
  }
27711
- var CYAN3, GREEN6, YELLOW6, DIM6, RESET5;
27712
27686
  var init_core = __esm({
27713
27687
  "core/index.ts"() {
27714
27688
  "use strict";
@@ -27719,11 +27693,6 @@ var init_core = __esm({
27719
27693
  init_output();
27720
27694
  __name(main, "main");
27721
27695
  __name(parseCommandArgs, "parseCommandArgs");
27722
- CYAN3 = "\x1B[36m";
27723
- GREEN6 = "\x1B[32m";
27724
- YELLOW6 = "\x1B[33m";
27725
- DIM6 = "\x1B[2m";
27726
- RESET5 = "\x1B[0m";
27727
27696
  __name(displayVersion, "displayVersion");
27728
27697
  __name(displayHelp, "displayHelp");
27729
27698
  main().catch((error) => {
@@ -27743,6 +27712,7 @@ init_editors_config();
27743
27712
  import fs50 from "node:fs";
27744
27713
  import os16 from "node:os";
27745
27714
  import path59 from "node:path";
27715
+ import chalk19 from "chalk";
27746
27716
 
27747
27717
  // core/server/server.ts
27748
27718
  import { Hono as Hono3 } from "hono";
@@ -28509,11 +28479,6 @@ if (isQuietMode2) {
28509
28479
  const { setQuietMode: setQuietMode2 } = await Promise.resolve().then(() => (init_output(), output_exports));
28510
28480
  setQuietMode2(true);
28511
28481
  }
28512
- var CYAN4 = "\x1B[36m";
28513
- var YELLOW7 = "\x1B[33m";
28514
- var DIM7 = "\x1B[2m";
28515
- var BOLD4 = "\x1B[1m";
28516
- var RESET6 = "\x1B[0m";
28517
28482
  if (args[0] === "start" || args[0] === "setup") {
28518
28483
  const { runStart: runStart2 } = await Promise.resolve().then(() => (init_start(), start_exports));
28519
28484
  await runStart2();
@@ -28622,54 +28587,53 @@ if (args[0] === "start" || args[0] === "setup") {
28622
28587
  const cursorConfigured = fs50.existsSync(path59.join(cwd, ".cursor", "rules", "prjct.mdc"));
28623
28588
  const windsurfDetected = fs50.existsSync(path59.join(cwd, ".windsurf"));
28624
28589
  const windsurfConfigured = fs50.existsSync(path59.join(cwd, ".windsurf", "rules", "prjct.md"));
28625
- const GREEN7 = "\x1B[32m";
28626
28590
  console.log(`
28627
- ${CYAN4}p/${RESET6} prjct v${VERSION}
28628
- ${DIM7}Context layer for AI coding agents${RESET6}
28591
+ ${chalk19.cyan("p/")} prjct v${VERSION}
28592
+ ${chalk19.dim("Context layer for AI coding agents")}
28629
28593
 
28630
- ${DIM7}Providers:${RESET6}`);
28594
+ ${chalk19.dim("Providers:")}`);
28631
28595
  if (detection.claude.installed) {
28632
- const status = claudeConfigured ? `${GREEN7}\u2713 ready${RESET6}` : `${YELLOW7}\u25CF installed${RESET6}`;
28596
+ const status = claudeConfigured ? chalk19.green("\u2713 ready") : chalk19.yellow("\u25CF installed");
28633
28597
  const ver = detection.claude.version ? ` (v${detection.claude.version})` : "";
28634
- console.log(` Claude Code ${status}${DIM7}${ver}${RESET6}`);
28598
+ console.log(` Claude Code ${status}${chalk19.dim(ver)}`);
28635
28599
  } else {
28636
- console.log(` Claude Code ${DIM7}\u25CB not installed${RESET6}`);
28600
+ console.log(` Claude Code ${chalk19.dim("\u25CB not installed")}`);
28637
28601
  }
28638
28602
  if (detection.gemini.installed) {
28639
- const status = geminiConfigured ? `${GREEN7}\u2713 ready${RESET6}` : `${YELLOW7}\u25CF installed${RESET6}`;
28603
+ const status = geminiConfigured ? chalk19.green("\u2713 ready") : chalk19.yellow("\u25CF installed");
28640
28604
  const ver = detection.gemini.version ? ` (v${detection.gemini.version})` : "";
28641
- console.log(` Gemini CLI ${status}${DIM7}${ver}${RESET6}`);
28605
+ console.log(` Gemini CLI ${status}${chalk19.dim(ver)}`);
28642
28606
  } else {
28643
- console.log(` Gemini CLI ${DIM7}\u25CB not installed${RESET6}`);
28607
+ console.log(` Gemini CLI ${chalk19.dim("\u25CB not installed")}`);
28644
28608
  }
28645
28609
  if (cursorDetected) {
28646
- const status = cursorConfigured ? `${GREEN7}\u2713 ready${RESET6}` : `${YELLOW7}\u25CF detected${RESET6}`;
28647
- console.log(` Cursor IDE ${status}${DIM7} (project)${RESET6}`);
28610
+ const status = cursorConfigured ? chalk19.green("\u2713 ready") : chalk19.yellow("\u25CF detected");
28611
+ console.log(` Cursor IDE ${status}${chalk19.dim(" (project)")}`);
28648
28612
  } else {
28649
- console.log(` Cursor IDE ${DIM7}\u25CB not detected${RESET6}`);
28613
+ console.log(` Cursor IDE ${chalk19.dim("\u25CB not detected")}`);
28650
28614
  }
28651
28615
  if (windsurfDetected) {
28652
- const status = windsurfConfigured ? `${GREEN7}\u2713 ready${RESET6}` : `${YELLOW7}\u25CF detected${RESET6}`;
28653
- console.log(` Windsurf IDE ${status}${DIM7} (project)${RESET6}`);
28616
+ const status = windsurfConfigured ? chalk19.green("\u2713 ready") : chalk19.yellow("\u25CF detected");
28617
+ console.log(` Windsurf IDE ${status}${chalk19.dim(" (project)")}`);
28654
28618
  } else {
28655
- console.log(` Windsurf IDE ${DIM7}\u25CB not detected${RESET6}`);
28619
+ console.log(` Windsurf IDE ${chalk19.dim("\u25CB not detected")}`);
28656
28620
  }
28657
28621
  console.log(`
28658
- ${DIM7}Run 'prjct start' to configure (CLI providers)${RESET6}
28659
- ${DIM7}Run 'prjct init' to configure (Cursor/Windsurf IDE)${RESET6}
28660
- ${CYAN4}https://prjct.app${RESET6}
28622
+ ${chalk19.dim("Run 'prjct start' to configure (CLI providers)")}
28623
+ ${chalk19.dim("Run 'prjct init' to configure (Cursor/Windsurf IDE)")}
28624
+ ${chalk19.cyan("https://prjct.app")}
28661
28625
  `);
28662
28626
  } else {
28663
28627
  const configPath = path59.join(os16.homedir(), ".prjct-cli", "config", "installed-editors.json");
28664
28628
  const routersInstalled = checkRoutersInstalled();
28665
28629
  if (!fs50.existsSync(configPath) || !routersInstalled) {
28666
28630
  console.log(`
28667
- ${CYAN4}${BOLD4} Welcome to prjct!${RESET6}
28631
+ ${chalk19.cyan.bold(" Welcome to prjct!")}
28668
28632
 
28669
- Run ${BOLD4}prjct start${RESET6} to configure your AI providers.
28633
+ Run ${chalk19.bold("prjct start")} to configure your AI providers.
28670
28634
 
28671
- ${DIM7}This is a one-time setup that lets you choose between
28672
- Claude Code, Gemini CLI, or both.${RESET6}
28635
+ ${chalk19.dim(`This is a one-time setup that lets you choose between
28636
+ Claude Code, Gemini CLI, or both.`)}
28673
28637
  `);
28674
28638
  process.exitCode = 0;
28675
28639
  } else {
@@ -28677,7 +28641,7 @@ ${CYAN4}${BOLD4} Welcome to prjct!${RESET6}
28677
28641
  const lastVersion = await editors_config_default.getLastVersion();
28678
28642
  if (lastVersion && lastVersion !== VERSION) {
28679
28643
  console.log(`
28680
- ${YELLOW7}\u2139${RESET6} Updating prjct v${lastVersion} \u2192 v${VERSION}...
28644
+ ${chalk19.yellow("\u2139")} Updating prjct v${lastVersion} \u2192 v${VERSION}...
28681
28645
  `);
28682
28646
  const { default: setup2 } = await Promise.resolve().then(() => (init_setup(), setup_exports));
28683
28647
  await setup2.run();