rrce-workflow 0.2.65 → 0.2.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +31 -1
  2. package/dist/index.js +383 -126
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -28,7 +28,7 @@ npx rrce-workflow mcp
28
28
  From this dashboard, you can:
29
29
  - **Manage Projects**: Toggle which projects are exposed to your AI agents.
30
30
  - **Monitor Status**: See the health of the MCP server and RAG indexing.
31
- - **Install to IDE**: Automatically configure **VSCode** or **Claude Desktop** to use the RRCE MCP server.
31
+ - **Install to IDE**: Automatically configure **VSCode**, **Claude Desktop**, **Antigravity IDE**, or **OpenCode** to use the RRCE MCP server.
32
32
  - **View Logs**: Debug agent interactions in real-time.
33
33
 
34
34
  ### 2. Setting Up a Project
@@ -64,6 +64,22 @@ RRCE-Workflow uses the [Model Context Protocol](https://modelcontextprotocol.io/
64
64
 
65
65
  The easiest way to connect is via the TUI (`npx rrce-workflow mcp` -> **Install** tab), but you can also configure it manually.
66
66
 
67
+ #### OpenCode
68
+
69
+ Add to `~/.config/opencode/opencode.json`:
70
+ ```json
71
+ {
72
+ "$schema": "https://opencode.ai/config.json",
73
+ "mcp": {
74
+ "rrce": {
75
+ "type": "local",
76
+ "command": ["npx", "-y", "rrce-workflow", "mcp", "start"],
77
+ "enabled": true
78
+ }
79
+ }
80
+ }
81
+ ```
82
+
67
83
  #### VSCode (with MCP Extension)
68
84
  Add to `.vscode/mcp.json`:
69
85
  ```json
@@ -91,6 +107,20 @@ Add to `~/.config/claude/claude_desktop_config.json`:
91
107
  }
92
108
  ```
93
109
 
110
+ ### Uninstalling MCP Integration
111
+
112
+ To remove RRCE from your IDEs:
113
+
114
+ ```bash
115
+ npx rrce-workflow mcp uninstall
116
+ ```
117
+
118
+ This will:
119
+ - Show you which IDEs currently have RRCE installed
120
+ - Let you select which ones to remove it from
121
+ - Ask for confirmation before removal
122
+ - Cleanly remove RRCE configuration while preserving other MCP servers and settings
123
+
94
124
  ---
95
125
 
96
126
  ## 📂 Storage Modes
package/dist/index.js CHANGED
@@ -2502,7 +2502,8 @@ function checkInstallStatus(workspacePath) {
2502
2502
  antigravity: checkAntigravityConfig(),
2503
2503
  claude: checkClaudeConfig(),
2504
2504
  vscodeGlobal: checkVSCodeGlobalConfig(),
2505
- vscodeWorkspace: workspacePath ? checkVSCodeWorkspaceConfig(workspacePath) : false
2505
+ vscodeWorkspace: workspacePath ? checkVSCodeWorkspaceConfig(workspacePath) : false,
2506
+ opencode: checkOpenCodeConfig()
2506
2507
  };
2507
2508
  }
2508
2509
  function checkAntigravityConfig() {
@@ -2542,9 +2543,18 @@ function checkVSCodeWorkspaceConfig(workspacePath) {
2542
2543
  return false;
2543
2544
  }
2544
2545
  }
2546
+ function checkOpenCodeConfig() {
2547
+ if (!fs14.existsSync(OPENCODE_CONFIG)) return false;
2548
+ try {
2549
+ const content = JSON.parse(fs14.readFileSync(OPENCODE_CONFIG, "utf-8"));
2550
+ return !!content.mcp?.["rrce"];
2551
+ } catch {
2552
+ return false;
2553
+ }
2554
+ }
2545
2555
  function isInstalledAnywhere(workspacePath) {
2546
2556
  const status = checkInstallStatus(workspacePath);
2547
- return status.antigravity || status.claude || status.vscodeGlobal || status.vscodeWorkspace;
2557
+ return status.antigravity || status.claude || status.vscodeGlobal || status.vscodeWorkspace || status.opencode;
2548
2558
  }
2549
2559
  function installToConfig(target, workspacePath) {
2550
2560
  switch (target) {
@@ -2556,6 +2566,8 @@ function installToConfig(target, workspacePath) {
2556
2566
  return installToVSCodeGlobal();
2557
2567
  case "vscode-workspace":
2558
2568
  return workspacePath ? installToVSCodeWorkspace(workspacePath) : false;
2569
+ case "opencode":
2570
+ return installToOpenCode();
2559
2571
  default:
2560
2572
  return false;
2561
2573
  }
@@ -2657,6 +2669,147 @@ function installToVSCodeWorkspace(workspacePath) {
2657
2669
  return false;
2658
2670
  }
2659
2671
  }
2672
+ function installToOpenCode() {
2673
+ const dir = path16.dirname(OPENCODE_CONFIG);
2674
+ if (!fs14.existsSync(dir)) {
2675
+ fs14.mkdirSync(dir, { recursive: true });
2676
+ }
2677
+ let config = {
2678
+ $schema: "https://opencode.ai/config.json"
2679
+ };
2680
+ if (fs14.existsSync(OPENCODE_CONFIG)) {
2681
+ try {
2682
+ config = JSON.parse(fs14.readFileSync(OPENCODE_CONFIG, "utf-8"));
2683
+ } catch (error) {
2684
+ console.error("Warning: Could not parse existing OpenCode config, creating fresh config");
2685
+ }
2686
+ }
2687
+ if (!config.mcp) config.mcp = {};
2688
+ config.mcp["rrce"] = {
2689
+ type: "local",
2690
+ command: ["npx", "-y", "rrce-workflow", "mcp", "start"],
2691
+ enabled: true
2692
+ };
2693
+ try {
2694
+ fs14.writeFileSync(OPENCODE_CONFIG, JSON.stringify(config, null, 2) + "\n");
2695
+ return true;
2696
+ } catch (error) {
2697
+ console.error("Failed to write OpenCode config:", error instanceof Error ? error.message : String(error));
2698
+ return false;
2699
+ }
2700
+ }
2701
+ function uninstallFromOpenCode() {
2702
+ if (!fs14.existsSync(OPENCODE_CONFIG)) {
2703
+ console.error("OpenCode config not found");
2704
+ return false;
2705
+ }
2706
+ try {
2707
+ const config = JSON.parse(fs14.readFileSync(OPENCODE_CONFIG, "utf-8"));
2708
+ if (!config.mcp?.["rrce"]) {
2709
+ console.warn("RRCE not found in OpenCode config");
2710
+ return false;
2711
+ }
2712
+ delete config.mcp["rrce"];
2713
+ fs14.writeFileSync(OPENCODE_CONFIG, JSON.stringify(config, null, 2) + "\n");
2714
+ return true;
2715
+ } catch (error) {
2716
+ console.error("Failed to uninstall from OpenCode:", error instanceof Error ? error.message : String(error));
2717
+ return false;
2718
+ }
2719
+ }
2720
+ function uninstallFromAntigravity() {
2721
+ if (!fs14.existsSync(ANTIGRAVITY_CONFIG)) {
2722
+ console.error("Antigravity config not found");
2723
+ return false;
2724
+ }
2725
+ try {
2726
+ const config = JSON.parse(fs14.readFileSync(ANTIGRAVITY_CONFIG, "utf-8"));
2727
+ if (!config.mcpServers?.["rrce"]) {
2728
+ console.warn("RRCE not found in Antigravity config");
2729
+ return false;
2730
+ }
2731
+ delete config.mcpServers["rrce"];
2732
+ fs14.writeFileSync(ANTIGRAVITY_CONFIG, JSON.stringify(config, null, 2) + "\n");
2733
+ return true;
2734
+ } catch (error) {
2735
+ console.error("Failed to uninstall from Antigravity:", error instanceof Error ? error.message : String(error));
2736
+ return false;
2737
+ }
2738
+ }
2739
+ function uninstallFromClaude() {
2740
+ if (!fs14.existsSync(CLAUDE_CONFIG)) {
2741
+ console.error("Claude Desktop config not found");
2742
+ return false;
2743
+ }
2744
+ try {
2745
+ const config = JSON.parse(fs14.readFileSync(CLAUDE_CONFIG, "utf-8"));
2746
+ if (!config.mcpServers?.["rrce"]) {
2747
+ console.warn("RRCE not found in Claude Desktop config");
2748
+ return false;
2749
+ }
2750
+ delete config.mcpServers["rrce"];
2751
+ fs14.writeFileSync(CLAUDE_CONFIG, JSON.stringify(config, null, 2) + "\n");
2752
+ return true;
2753
+ } catch (error) {
2754
+ console.error("Failed to uninstall from Claude Desktop:", error instanceof Error ? error.message : String(error));
2755
+ return false;
2756
+ }
2757
+ }
2758
+ function uninstallFromVSCodeGlobal() {
2759
+ if (!fs14.existsSync(VSCODE_GLOBAL_CONFIG)) {
2760
+ console.error("VSCode global config not found");
2761
+ return false;
2762
+ }
2763
+ try {
2764
+ const settings = JSON.parse(fs14.readFileSync(VSCODE_GLOBAL_CONFIG, "utf-8"));
2765
+ if (!settings["mcp.servers"]?.["rrce"]) {
2766
+ console.warn("RRCE not found in VSCode global settings");
2767
+ return false;
2768
+ }
2769
+ delete settings["mcp.servers"]["rrce"];
2770
+ fs14.writeFileSync(VSCODE_GLOBAL_CONFIG, JSON.stringify(settings, null, 2) + "\n");
2771
+ return true;
2772
+ } catch (error) {
2773
+ console.error("Failed to uninstall from VSCode (Global):", error instanceof Error ? error.message : String(error));
2774
+ return false;
2775
+ }
2776
+ }
2777
+ function uninstallFromVSCodeWorkspace(workspacePath) {
2778
+ const configPath = path16.join(workspacePath, ".vscode", "mcp.json");
2779
+ if (!fs14.existsSync(configPath)) {
2780
+ console.error("VSCode workspace config not found");
2781
+ return false;
2782
+ }
2783
+ try {
2784
+ const config = JSON.parse(fs14.readFileSync(configPath, "utf-8"));
2785
+ if (!config.servers?.["rrce"]) {
2786
+ console.warn("RRCE not found in VSCode workspace config");
2787
+ return false;
2788
+ }
2789
+ delete config.servers["rrce"];
2790
+ fs14.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
2791
+ return true;
2792
+ } catch (error) {
2793
+ console.error("Failed to uninstall from VSCode (Workspace):", error instanceof Error ? error.message : String(error));
2794
+ return false;
2795
+ }
2796
+ }
2797
+ function uninstallFromConfig(target, workspacePath) {
2798
+ switch (target) {
2799
+ case "antigravity":
2800
+ return uninstallFromAntigravity();
2801
+ case "claude":
2802
+ return uninstallFromClaude();
2803
+ case "vscode-global":
2804
+ return uninstallFromVSCodeGlobal();
2805
+ case "vscode-workspace":
2806
+ return workspacePath ? uninstallFromVSCodeWorkspace(workspacePath) : false;
2807
+ case "opencode":
2808
+ return uninstallFromOpenCode();
2809
+ default:
2810
+ return false;
2811
+ }
2812
+ }
2660
2813
  function getTargetLabel(target) {
2661
2814
  switch (target) {
2662
2815
  case "antigravity":
@@ -2667,17 +2820,20 @@ function getTargetLabel(target) {
2667
2820
  return "VSCode (Global)";
2668
2821
  case "vscode-workspace":
2669
2822
  return "VSCode (Workspace)";
2823
+ case "opencode":
2824
+ return "OpenCode";
2670
2825
  default:
2671
2826
  return target;
2672
2827
  }
2673
2828
  }
2674
- var ANTIGRAVITY_CONFIG, CLAUDE_CONFIG, VSCODE_GLOBAL_CONFIG;
2829
+ var ANTIGRAVITY_CONFIG, CLAUDE_CONFIG, VSCODE_GLOBAL_CONFIG, OPENCODE_CONFIG;
2675
2830
  var init_install = __esm({
2676
2831
  "src/mcp/install.ts"() {
2677
2832
  "use strict";
2678
2833
  ANTIGRAVITY_CONFIG = path16.join(os.homedir(), ".gemini/antigravity/mcp_config.json");
2679
2834
  CLAUDE_CONFIG = path16.join(os.homedir(), ".config/claude/claude_desktop_config.json");
2680
2835
  VSCODE_GLOBAL_CONFIG = path16.join(os.homedir(), ".config/Code/User/settings.json");
2836
+ OPENCODE_CONFIG = path16.join(os.homedir(), ".config/opencode/opencode.json");
2681
2837
  }
2682
2838
  });
2683
2839
 
@@ -2814,6 +2970,11 @@ import pc6 from "picocolors";
2814
2970
  async function runInstallWizard(workspacePath) {
2815
2971
  const status = checkInstallStatus(workspacePath);
2816
2972
  const options = [
2973
+ {
2974
+ value: "opencode",
2975
+ label: "OpenCode",
2976
+ hint: status.opencode ? pc6.green("\u2713 Installed") : pc6.dim("Not installed")
2977
+ },
2817
2978
  {
2818
2979
  value: "antigravity",
2819
2980
  label: "Antigravity IDE",
@@ -2839,6 +3000,7 @@ async function runInstallWizard(workspacePath) {
2839
3000
  message: "Select where to install RRCE MCP Server:",
2840
3001
  options,
2841
3002
  initialValues: [
3003
+ ...status.opencode ? ["opencode"] : [],
2842
3004
  ...status.antigravity ? ["antigravity"] : [],
2843
3005
  ...status.vscodeGlobal ? ["vscode-global"] : [],
2844
3006
  ...status.vscodeWorkspace ? ["vscode-workspace"] : [],
@@ -3689,47 +3851,138 @@ var init_status = __esm({
3689
3851
  }
3690
3852
  });
3691
3853
 
3692
- // src/mcp/commands/help.ts
3693
- import { note as note6 } from "@clack/prompts";
3854
+ // src/mcp/commands/uninstall-wizard.ts
3855
+ import { multiselect as multiselect4, note as note6, isCancel as isCancel6, confirm as confirm4 } from "@clack/prompts";
3694
3856
  import pc8 from "picocolors";
3857
+ async function runUninstallWizard(workspacePath) {
3858
+ const status = checkInstallStatus(workspacePath);
3859
+ const installedOptions = [];
3860
+ if (status.opencode) {
3861
+ installedOptions.push({
3862
+ value: "opencode",
3863
+ label: "OpenCode",
3864
+ hint: pc8.green("Currently installed")
3865
+ });
3866
+ }
3867
+ if (status.antigravity) {
3868
+ installedOptions.push({
3869
+ value: "antigravity",
3870
+ label: "Antigravity IDE",
3871
+ hint: pc8.green("Currently installed")
3872
+ });
3873
+ }
3874
+ if (status.vscodeGlobal) {
3875
+ installedOptions.push({
3876
+ value: "vscode-global",
3877
+ label: "VSCode (Global Settings)",
3878
+ hint: pc8.green("Currently installed")
3879
+ });
3880
+ }
3881
+ if (status.vscodeWorkspace) {
3882
+ installedOptions.push({
3883
+ value: "vscode-workspace",
3884
+ label: "VSCode (Workspace Config)",
3885
+ hint: pc8.green("Currently installed")
3886
+ });
3887
+ }
3888
+ if (status.claude) {
3889
+ installedOptions.push({
3890
+ value: "claude",
3891
+ label: "Claude Desktop",
3892
+ hint: pc8.green("Currently installed")
3893
+ });
3894
+ }
3895
+ if (installedOptions.length === 0) {
3896
+ note6(
3897
+ pc8.yellow("RRCE MCP Server is not installed in any supported IDE."),
3898
+ "Nothing to Uninstall"
3899
+ );
3900
+ return;
3901
+ }
3902
+ const selected = await multiselect4({
3903
+ message: "Select IDEs to remove RRCE MCP Server from:",
3904
+ options: installedOptions,
3905
+ required: false
3906
+ });
3907
+ if (isCancel6(selected) || selected.length === 0) {
3908
+ return;
3909
+ }
3910
+ const confirmed = await confirm4({
3911
+ message: `Remove RRCE from ${selected.length} IDE(s)?`,
3912
+ initialValue: false
3913
+ });
3914
+ if (isCancel6(confirmed) || !confirmed) {
3915
+ note6(pc8.dim("Uninstall cancelled."), "Cancelled");
3916
+ return;
3917
+ }
3918
+ const targets = selected;
3919
+ const results = [];
3920
+ let successCount = 0;
3921
+ let failureCount = 0;
3922
+ for (const target of targets) {
3923
+ const success = uninstallFromConfig(target, workspacePath);
3924
+ const label = getTargetLabel(target);
3925
+ if (success) {
3926
+ results.push(`${label}: ${pc8.green("\u2713 Removed")}`);
3927
+ successCount++;
3928
+ } else {
3929
+ results.push(`${label}: ${pc8.red("\u2717 Failed")}`);
3930
+ failureCount++;
3931
+ }
3932
+ }
3933
+ if (results.length > 0) {
3934
+ const summary = failureCount > 0 ? `${successCount} succeeded, ${failureCount} failed` : `All ${successCount} uninstalled successfully`;
3935
+ note6(results.join("\n"), `Uninstall Results (${summary})`);
3936
+ }
3937
+ }
3938
+ var init_uninstall_wizard = __esm({
3939
+ "src/mcp/commands/uninstall-wizard.ts"() {
3940
+ "use strict";
3941
+ init_install();
3942
+ }
3943
+ });
3944
+
3945
+ // src/mcp/commands/help.ts
3946
+ import { note as note7 } from "@clack/prompts";
3947
+ import pc9 from "picocolors";
3695
3948
  function showHelp() {
3696
3949
  const help = `
3697
- ${pc8.bold("RRCE MCP Hub")} - Cross-project AI assistant server
3950
+ ${pc9.bold("RRCE MCP Hub")} - Cross-project AI assistant server
3698
3951
 
3699
- ${pc8.bold("ABOUT")}
3952
+ ${pc9.bold("ABOUT")}
3700
3953
  MCP (Model Context Protocol) allows AI assistants like Claude to
3701
3954
  access your project knowledge in real-time. The RRCE MCP Hub
3702
3955
  provides a central server that exposes selected projects.
3703
3956
 
3704
- ${pc8.bold("MENU OPTIONS")}
3705
- ${pc8.cyan("Start MCP server")} Start the server for AI access
3706
- ${pc8.cyan("Configure projects")} Choose which projects to expose
3707
- ${pc8.cyan("Install to IDE")} Add to Antigravity, VSCode, or Claude
3708
- ${pc8.cyan("View status")} See which projects are exposed
3957
+ ${pc9.bold("MENU OPTIONS")}
3958
+ ${pc9.cyan("Start MCP server")} Start the server for AI access
3959
+ ${pc9.cyan("Configure projects")} Choose which projects to expose
3960
+ ${pc9.cyan("Install to IDE")} Add to Antigravity, VSCode, or Claude
3961
+ ${pc9.cyan("View status")} See which projects are exposed
3709
3962
 
3710
- ${pc8.bold("DIRECT COMMANDS")}
3711
- ${pc8.dim("rrce-workflow mcp start")} Start server directly
3712
- ${pc8.dim("rrce-workflow mcp stop")} Stop server directly
3713
- ${pc8.dim("rrce-workflow mcp status")} Show status directly
3714
- ${pc8.dim("rrce-workflow mcp help")} Show this help
3963
+ ${pc9.bold("DIRECT COMMANDS")}
3964
+ ${pc9.dim("rrce-workflow mcp start")} Start server directly
3965
+ ${pc9.dim("rrce-workflow mcp stop")} Stop server directly
3966
+ ${pc9.dim("rrce-workflow mcp status")} Show status directly
3967
+ ${pc9.dim("rrce-workflow mcp help")} Show this help
3715
3968
 
3716
- ${pc8.bold("IDE INSTALLATION")}
3717
- ${pc8.cyan("Antigravity")} ~/.gemini/antigravity/mcp_config.json
3718
- ${pc8.cyan("VSCode Global")} ~/.config/Code/User/settings.json
3719
- ${pc8.cyan("VSCode Workspace")} .vscode/mcp.json
3720
- ${pc8.cyan("Claude Desktop")} ~/.config/claude/claude_desktop_config.json
3969
+ ${pc9.bold("IDE INSTALLATION")}
3970
+ ${pc9.cyan("Antigravity")} ~/.gemini/antigravity/mcp_config.json
3971
+ ${pc9.cyan("VSCode Global")} ~/.config/Code/User/settings.json
3972
+ ${pc9.cyan("VSCode Workspace")} .vscode/mcp.json
3973
+ ${pc9.cyan("Claude Desktop")} ~/.config/claude/claude_desktop_config.json
3721
3974
 
3722
- ${pc8.bold("SERVER COMMANDS")} (while running)
3723
- ${pc8.cyan("q")} Stop and quit ${pc8.cyan("p")} Reconfigure projects
3724
- ${pc8.cyan("i")} Install to IDE ${pc8.cyan("r")} Reload config
3725
- ${pc8.cyan("c")} Clear logs ${pc8.cyan("?")} Show help
3975
+ ${pc9.bold("SERVER COMMANDS")} (while running)
3976
+ ${pc9.cyan("q")} Stop and quit ${pc9.cyan("p")} Reconfigure projects
3977
+ ${pc9.cyan("i")} Install to IDE ${pc9.cyan("r")} Reload config
3978
+ ${pc9.cyan("c")} Clear logs ${pc9.cyan("?")} Show help
3726
3979
 
3727
- ${pc8.bold("RESOURCES EXPOSED")}
3728
- ${pc8.cyan("rrce://projects")} List all exposed projects
3729
- ${pc8.cyan("rrce://projects/{name}/context")} Get project context
3730
- ${pc8.cyan("rrce://projects/{name}/tasks")} Get project tasks
3980
+ ${pc9.bold("RESOURCES EXPOSED")}
3981
+ ${pc9.cyan("rrce://projects")} List all exposed projects
3982
+ ${pc9.cyan("rrce://projects/{name}/context")} Get project context
3983
+ ${pc9.cyan("rrce://projects/{name}/tasks")} Get project tasks
3731
3984
  `;
3732
- note6(help.trim(), "Help");
3985
+ note7(help.trim(), "Help");
3733
3986
  }
3734
3987
  var init_help = __esm({
3735
3988
  "src/mcp/commands/help.ts"() {
@@ -3745,9 +3998,10 @@ __export(mcp_exports, {
3745
3998
  handleStartServer: () => handleStartServer,
3746
3999
  runMCP: () => runMCP
3747
4000
  });
3748
- import { intro, outro, confirm as confirm4, note as note7, isCancel as isCancel6 } from "@clack/prompts";
3749
- import pc9 from "picocolors";
4001
+ import { intro, outro, confirm as confirm5, note as note8, isCancel as isCancel7 } from "@clack/prompts";
4002
+ import pc10 from "picocolors";
3750
4003
  async function runMCP(subcommand2) {
4004
+ const workspacePath = detectWorkspaceRoot();
3751
4005
  if (subcommand2) {
3752
4006
  switch (subcommand2) {
3753
4007
  case "start":
@@ -3765,6 +4019,9 @@ async function runMCP(subcommand2) {
3765
4019
  case "status":
3766
4020
  await handleShowStatus();
3767
4021
  return;
4022
+ case "uninstall":
4023
+ await runUninstallWizard(workspacePath);
4024
+ return;
3768
4025
  case "help":
3769
4026
  showHelp();
3770
4027
  return;
@@ -3775,39 +4032,38 @@ async function runMCP(subcommand2) {
3775
4032
  break;
3776
4033
  }
3777
4034
  }
3778
- const workspacePath = detectWorkspaceRoot();
3779
4035
  const globalPathCheck = await ensureMCPGlobalPath();
3780
4036
  if (!globalPathCheck.configured) {
3781
- intro(pc9.bgCyan(pc9.black(" MCP Setup ")));
4037
+ intro(pc10.bgCyan(pc10.black(" MCP Setup ")));
3782
4038
  const configured = await handleConfigureGlobalPath();
3783
4039
  if (!configured) {
3784
- outro(pc9.yellow("MCP requires a global storage path. Setup cancelled."));
4040
+ outro(pc10.yellow("MCP requires a global storage path. Setup cancelled."));
3785
4041
  return;
3786
4042
  }
3787
4043
  }
3788
4044
  const installed = isInstalledAnywhere(workspacePath);
3789
4045
  if (!installed) {
3790
- intro(pc9.bgCyan(pc9.black(" Welcome to MCP Hub ")));
3791
- note7(
3792
- `${pc9.bold("Set up Model Context Protocol")}
4046
+ intro(pc10.bgCyan(pc10.black(" Welcome to MCP Hub ")));
4047
+ note8(
4048
+ `${pc10.bold("Set up Model Context Protocol")}
3793
4049
  Allow AI assistants to access your project context.`,
3794
4050
  "Getting Started"
3795
4051
  );
3796
- const shouldInstall = await confirm4({
4052
+ const shouldInstall = await confirm5({
3797
4053
  message: "Install MCP server integrations now?",
3798
4054
  initialValue: true
3799
4055
  });
3800
- if (shouldInstall && !isCancel6(shouldInstall)) {
4056
+ if (shouldInstall && !isCancel7(shouldInstall)) {
3801
4057
  await runInstallWizard(workspacePath);
3802
- const shouldStart = await confirm4({
4058
+ const shouldStart = await confirm5({
3803
4059
  message: "Start the MCP Dashboard?",
3804
4060
  initialValue: true
3805
4061
  });
3806
- if (shouldStart && !isCancel6(shouldStart)) {
4062
+ if (shouldStart && !isCancel7(shouldStart)) {
3807
4063
  await handleStartServer();
3808
4064
  }
3809
4065
  } else {
3810
- outro(pc9.dim('Setup skipped. Run "npx rrce-workflow mcp" later to restart.'));
4066
+ outro(pc10.dim('Setup skipped. Run "npx rrce-workflow mcp" later to restart.'));
3811
4067
  }
3812
4068
  return;
3813
4069
  }
@@ -3815,18 +4071,18 @@ Allow AI assistants to access your project context.`,
3815
4071
  await handleStartServer();
3816
4072
  } catch (err) {
3817
4073
  console.error(err);
3818
- outro(pc9.red("Failed to launch MCP Dashboard"));
4074
+ outro(pc10.red("Failed to launch MCP Dashboard"));
3819
4075
  }
3820
4076
  }
3821
4077
  async function handleStopServer() {
3822
4078
  const { stopMCPServer: stopMCPServer2 } = await Promise.resolve().then(() => (init_server(), server_exports));
3823
4079
  const status = getMCPServerStatus();
3824
4080
  if (!status.running) {
3825
- console.log(pc9.dim("MCP server is already stopped."));
4081
+ console.log(pc10.dim("MCP server is already stopped."));
3826
4082
  return;
3827
4083
  }
3828
4084
  stopMCPServer2();
3829
- console.log(pc9.green("MCP server stopped."));
4085
+ console.log(pc10.green("MCP server stopped."));
3830
4086
  }
3831
4087
  var init_mcp = __esm({
3832
4088
  "src/mcp/index.ts"() {
@@ -3839,13 +4095,14 @@ var init_mcp = __esm({
3839
4095
  init_configure();
3840
4096
  init_status();
3841
4097
  init_install_wizard();
4098
+ init_uninstall_wizard();
3842
4099
  init_help();
3843
4100
  }
3844
4101
  });
3845
4102
 
3846
4103
  // src/commands/wizard/setup-flow.ts
3847
- import { spinner as spinner3, note as note8, outro as outro2, cancel as cancel3, isCancel as isCancel7, confirm as confirm5, select as select3 } from "@clack/prompts";
3848
- import pc10 from "picocolors";
4104
+ import { spinner as spinner3, note as note9, outro as outro2, cancel as cancel3, isCancel as isCancel8, confirm as confirm6, select as select3 } from "@clack/prompts";
4105
+ import pc11 from "picocolors";
3849
4106
  async function runExpressSetup(workspacePath, workspaceName, existingProjects, s) {
3850
4107
  const storageModeResult = await select3({
3851
4108
  message: "Where should workflow data be stored?",
@@ -3855,7 +4112,7 @@ async function runExpressSetup(workspacePath, workspaceName, existingProjects, s
3855
4112
  ],
3856
4113
  initialValue: "global"
3857
4114
  });
3858
- if (isCancel7(storageModeResult)) {
4115
+ if (isCancel8(storageModeResult)) {
3859
4116
  cancel3("Setup cancelled.");
3860
4117
  process.exit(0);
3861
4118
  }
@@ -3868,8 +4125,8 @@ async function runExpressSetup(workspacePath, workspaceName, existingProjects, s
3868
4125
  process.exit(0);
3869
4126
  }
3870
4127
  }
3871
- note8(
3872
- `${pc10.bold("Express Setup will configure:")}
4128
+ note9(
4129
+ `${pc11.bold("Express Setup will configure:")}
3873
4130
  \u2022 Storage: ${storageMode === "global" ? "Global" : "Workspace"}
3874
4131
  \u2022 MCP Server: Enabled
3875
4132
  \u2022 Semantic Search (RAG): Enabled
@@ -3877,11 +4134,11 @@ async function runExpressSetup(workspacePath, workspaceName, existingProjects, s
3877
4134
  \u2022 AI Tools: All available`,
3878
4135
  "Configuration Preview"
3879
4136
  );
3880
- const confirmed = await confirm5({
4137
+ const confirmed = await confirm6({
3881
4138
  message: "Proceed with express setup?",
3882
4139
  initialValue: true
3883
4140
  });
3884
- if (isCancel7(confirmed) || !confirmed) {
4141
+ if (isCancel8(confirmed) || !confirmed) {
3885
4142
  cancel3("Setup cancelled.");
3886
4143
  process.exit(0);
3887
4144
  }
@@ -3895,15 +4152,15 @@ async function runExpressSetup(workspacePath, workspaceName, existingProjects, s
3895
4152
  enableRAG: true
3896
4153
  };
3897
4154
  await executeSetup(config, workspacePath, workspaceName, existingProjects, s);
3898
- const startMCP = await confirm5({
4155
+ const startMCP = await confirm6({
3899
4156
  message: "Start MCP server now?",
3900
4157
  initialValue: true
3901
4158
  });
3902
- if (startMCP && !isCancel7(startMCP)) {
4159
+ if (startMCP && !isCancel8(startMCP)) {
3903
4160
  const { runMCP: runMCP2 } = await Promise.resolve().then(() => (init_mcp(), mcp_exports));
3904
4161
  await runMCP2();
3905
4162
  } else {
3906
- outro2(pc10.green(`\u2713 Express setup complete! Run ${pc10.cyan("npx rrce-workflow mcp")} to start the server.`));
4163
+ outro2(pc11.green(`\u2713 Express setup complete! Run ${pc11.cyan("npx rrce-workflow mcp")} to start the server.`));
3907
4164
  }
3908
4165
  }
3909
4166
  async function runSetupFlow(workspacePath, workspaceName, existingProjects) {
@@ -3916,7 +4173,7 @@ async function runSetupFlow(workspacePath, workspaceName, existingProjects) {
3916
4173
  ],
3917
4174
  initialValue: "express"
3918
4175
  });
3919
- if (isCancel7(setupModeResult)) {
4176
+ if (isCancel8(setupModeResult)) {
3920
4177
  cancel3("Setup cancelled.");
3921
4178
  process.exit(0);
3922
4179
  }
@@ -3979,44 +4236,44 @@ async function executeSetup(config, workspacePath, workspaceName, allProjects, s
3979
4236
  s.stop("Configuration generated");
3980
4237
  const dataSummary = getDataPaths(config.storageMode, workspaceName, workspacePath, config.globalPath);
3981
4238
  const summary = [
3982
- `${pc10.green("\u2713")} Data stored at: ${pc10.dim(dataSummary[0])}`,
3983
- config.tools.length > 0 ? `${pc10.green("\u2713")} Tools: ${config.tools.join(", ")}` : null,
3984
- config.exposeToMCP ? `${pc10.green("\u2713")} MCP server configured` : null,
3985
- config.enableRAG ? `${pc10.green("\u2713")} Semantic Search enabled` : null,
3986
- config.linkedProjects.length > 0 ? `${pc10.green("\u2713")} Linked ${config.linkedProjects.length} project(s)` : null
4239
+ `${pc11.green("\u2713")} Data stored at: ${pc11.dim(dataSummary[0])}`,
4240
+ config.tools.length > 0 ? `${pc11.green("\u2713")} Tools: ${config.tools.join(", ")}` : null,
4241
+ config.exposeToMCP ? `${pc11.green("\u2713")} MCP server configured` : null,
4242
+ config.enableRAG ? `${pc11.green("\u2713")} Semantic Search enabled` : null,
4243
+ config.linkedProjects.length > 0 ? `${pc11.green("\u2713")} Linked ${config.linkedProjects.length} project(s)` : null
3987
4244
  ].filter(Boolean);
3988
- note8(summary.join("\n"), "Setup Complete");
4245
+ note9(summary.join("\n"), "Setup Complete");
3989
4246
  } catch (error) {
3990
4247
  s.stop("Error occurred");
3991
4248
  cancel3(
3992
4249
  `Setup failed: ${error instanceof Error ? error.message : String(error)}
3993
4250
 
3994
- ${pc10.dim("Tip: You can re-run the wizard to try again.")}`
4251
+ ${pc11.dim("Tip: You can re-run the wizard to try again.")}`
3995
4252
  );
3996
4253
  process.exit(1);
3997
4254
  }
3998
4255
  }
3999
4256
  async function handlePostSetup(config, workspacePath, workspaceName, linkedProjects) {
4000
4257
  if (config.exposeToMCP) {
4001
- const shouldConfigureMCP = await confirm5({
4258
+ const shouldConfigureMCP = await confirm6({
4002
4259
  message: "Would you like to start the MCP server now?",
4003
4260
  initialValue: true
4004
4261
  });
4005
- if (shouldConfigureMCP && !isCancel7(shouldConfigureMCP)) {
4262
+ if (shouldConfigureMCP && !isCancel8(shouldConfigureMCP)) {
4006
4263
  const { runMCP: runMCP2 } = await Promise.resolve().then(() => (init_mcp(), mcp_exports));
4007
4264
  await runMCP2();
4008
4265
  } else {
4009
4266
  if (linkedProjects.length > 0) {
4010
- outro2(pc10.green(`\u2713 Setup complete! Open ${pc10.bold(`${workspaceName}.code-workspace`)} in VSCode.`));
4267
+ outro2(pc11.green(`\u2713 Setup complete! Open ${pc11.bold(`${workspaceName}.code-workspace`)} in VSCode.`));
4011
4268
  } else {
4012
- outro2(pc10.green(`\u2713 Setup complete! Run ${pc10.cyan("npx rrce-workflow mcp")} to start the server.`));
4269
+ outro2(pc11.green(`\u2713 Setup complete! Run ${pc11.cyan("npx rrce-workflow mcp")} to start the server.`));
4013
4270
  }
4014
4271
  }
4015
4272
  } else {
4016
4273
  if (linkedProjects.length > 0) {
4017
- outro2(pc10.green(`\u2713 Setup complete! Open ${pc10.bold(`${workspaceName}.code-workspace`)} in VSCode.`));
4274
+ outro2(pc11.green(`\u2713 Setup complete! Open ${pc11.bold(`${workspaceName}.code-workspace`)} in VSCode.`));
4018
4275
  } else {
4019
- outro2(pc10.green(`\u2713 Setup complete! Your agents are ready to use.`));
4276
+ outro2(pc11.green(`\u2713 Setup complete! Your agents are ready to use.`));
4020
4277
  }
4021
4278
  }
4022
4279
  }
@@ -4033,8 +4290,8 @@ var init_setup_flow = __esm({
4033
4290
  });
4034
4291
 
4035
4292
  // src/commands/wizard/link-flow.ts
4036
- import { multiselect as multiselect4, spinner as spinner4, note as note9, outro as outro3, cancel as cancel4, isCancel as isCancel8, confirm as confirm6 } from "@clack/prompts";
4037
- import pc11 from "picocolors";
4293
+ import { multiselect as multiselect5, spinner as spinner4, note as note10, outro as outro3, cancel as cancel4, isCancel as isCancel9, confirm as confirm7 } from "@clack/prompts";
4294
+ import pc12 from "picocolors";
4038
4295
  import * as fs16 from "fs";
4039
4296
  async function runLinkProjectsFlow(workspacePath, workspaceName) {
4040
4297
  const projects = scanForProjects({
@@ -4042,23 +4299,23 @@ async function runLinkProjectsFlow(workspacePath, workspaceName) {
4042
4299
  workspacePath
4043
4300
  });
4044
4301
  if (projects.length === 0) {
4045
- outro3(pc11.yellow("No other projects found. Try setting up another project first."));
4302
+ outro3(pc12.yellow("No other projects found. Try setting up another project first."));
4046
4303
  return;
4047
4304
  }
4048
4305
  const customGlobalPath = getEffectiveRRCEHome(workspacePath);
4049
- const linkedProjects = await multiselect4({
4306
+ const linkedProjects = await multiselect5({
4050
4307
  message: "Select projects to link:",
4051
4308
  options: projects.map((project) => ({
4052
4309
  value: `${project.name}:${project.source}`,
4053
4310
  // Unique key
4054
- label: `${project.name} ${pc11.dim(`(${project.source})`)}`,
4055
- hint: pc11.dim(
4311
+ label: `${project.name} ${pc12.dim(`(${project.source})`)}`,
4312
+ hint: pc12.dim(
4056
4313
  project.source === "global" ? `~/.rrce-workflow/workspaces/${project.name}` : project.dataPath
4057
4314
  )
4058
4315
  })),
4059
4316
  required: true
4060
4317
  });
4061
- if (isCancel8(linkedProjects)) {
4318
+ if (isCancel9(linkedProjects)) {
4062
4319
  cancel4("Cancelled.");
4063
4320
  process.exit(0);
4064
4321
  }
@@ -4106,17 +4363,17 @@ linked_projects:
4106
4363
  const workspaceFile = `${workspaceName}.code-workspace`;
4107
4364
  const summary = [
4108
4365
  `Linked projects:`,
4109
- ...selectedProjects.map((p) => ` \u2713 ${p.name} ${pc11.dim(`(${p.source})`)}`),
4366
+ ...selectedProjects.map((p) => ` \u2713 ${p.name} ${pc12.dim(`(${p.source})`)}`),
4110
4367
  ``,
4111
- `Workspace file: ${pc11.cyan(workspaceFile)}`
4368
+ `Workspace file: ${pc12.cyan(workspaceFile)}`
4112
4369
  ];
4113
- note9(summary.join("\n"), "Link Summary");
4114
- outro3(pc11.green(`\u2713 Projects linked! Open ${pc11.bold(workspaceFile)} in VSCode to access linked data.`));
4115
- const shouldExpose = await confirm6({
4370
+ note10(summary.join("\n"), "Link Summary");
4371
+ outro3(pc12.green(`\u2713 Projects linked! Open ${pc12.bold(workspaceFile)} in VSCode to access linked data.`));
4372
+ const shouldExpose = await confirm7({
4116
4373
  message: "Also expose these linked projects to the MCP server (for Agent access)?",
4117
4374
  initialValue: true
4118
4375
  });
4119
- if (shouldExpose && !isCancel8(shouldExpose)) {
4376
+ if (shouldExpose && !isCancel9(shouldExpose)) {
4120
4377
  try {
4121
4378
  const { loadMCPConfig: loadMCPConfig3, saveMCPConfig: saveMCPConfig2, setProjectConfig: setProjectConfig2 } = await Promise.resolve().then(() => (init_config(), config_exports));
4122
4379
  const mcpConfig = loadMCPConfig3();
@@ -4124,9 +4381,9 @@ linked_projects:
4124
4381
  setProjectConfig2(mcpConfig, project.name, true, void 0, project.dataPath);
4125
4382
  }
4126
4383
  saveMCPConfig2(mcpConfig);
4127
- note9("Projects have been added to the global MCP configuration.", "MCP Updated");
4384
+ note10("Projects have been added to the global MCP configuration.", "MCP Updated");
4128
4385
  } catch (err) {
4129
- note9(`Failed to update MCP config: ${err}`, "MCP Update Failed");
4386
+ note10(`Failed to update MCP config: ${err}`, "MCP Update Failed");
4130
4387
  }
4131
4388
  }
4132
4389
  }
@@ -4140,8 +4397,8 @@ var init_link_flow = __esm({
4140
4397
  });
4141
4398
 
4142
4399
  // src/commands/wizard/sync-flow.ts
4143
- import { confirm as confirm7, spinner as spinner5, note as note10, outro as outro4, cancel as cancel5, isCancel as isCancel9 } from "@clack/prompts";
4144
- import pc12 from "picocolors";
4400
+ import { confirm as confirm8, spinner as spinner5, note as note11, outro as outro4, cancel as cancel5, isCancel as isCancel10 } from "@clack/prompts";
4401
+ import pc13 from "picocolors";
4145
4402
  import * as fs17 from "fs";
4146
4403
  import * as path17 from "path";
4147
4404
  async function runSyncToGlobalFlow(workspacePath, workspaceName) {
@@ -4153,21 +4410,21 @@ async function runSyncToGlobalFlow(workspacePath, workspaceName) {
4153
4410
  (dir) => fs17.existsSync(path17.join(localPath, dir))
4154
4411
  );
4155
4412
  if (existingDirs.length === 0) {
4156
- outro4(pc12.yellow("No data found in workspace storage to sync."));
4413
+ outro4(pc13.yellow("No data found in workspace storage to sync."));
4157
4414
  return;
4158
4415
  }
4159
- note10(
4416
+ note11(
4160
4417
  `The following will be copied to global storage:
4161
4418
  ${existingDirs.map((d) => ` \u2022 ${d}/`).join("\n")}
4162
4419
 
4163
- Destination: ${pc12.cyan(globalPath)}`,
4420
+ Destination: ${pc13.cyan(globalPath)}`,
4164
4421
  "Sync Preview"
4165
4422
  );
4166
- const shouldSync = await confirm7({
4423
+ const shouldSync = await confirm8({
4167
4424
  message: "Proceed with sync to global storage?",
4168
4425
  initialValue: true
4169
4426
  });
4170
- if (isCancel9(shouldSync) || !shouldSync) {
4427
+ if (isCancel10(shouldSync) || !shouldSync) {
4171
4428
  outro4("Sync cancelled.");
4172
4429
  return;
4173
4430
  }
@@ -4186,12 +4443,12 @@ Destination: ${pc12.cyan(globalPath)}`,
4186
4443
  `Synced directories:`,
4187
4444
  ...existingDirs.map((d) => ` \u2713 ${d}/`),
4188
4445
  ``,
4189
- `Global path: ${pc12.cyan(globalPath)}`,
4446
+ `Global path: ${pc13.cyan(globalPath)}`,
4190
4447
  ``,
4191
4448
  `Other projects can now link this knowledge!`
4192
4449
  ];
4193
- note10(summary.join("\n"), "Sync Summary");
4194
- outro4(pc12.green("\u2713 Workspace knowledge synced to global storage!"));
4450
+ note11(summary.join("\n"), "Sync Summary");
4451
+ outro4(pc13.green("\u2713 Workspace knowledge synced to global storage!"));
4195
4452
  } catch (error) {
4196
4453
  s.stop("Error occurred");
4197
4454
  cancel5(`Failed to sync: ${error instanceof Error ? error.message : String(error)}`);
@@ -4207,8 +4464,8 @@ var init_sync_flow = __esm({
4207
4464
  });
4208
4465
 
4209
4466
  // src/commands/wizard/update-flow.ts
4210
- import { confirm as confirm8, spinner as spinner6, note as note11, outro as outro5, cancel as cancel6, isCancel as isCancel10 } from "@clack/prompts";
4211
- import pc13 from "picocolors";
4467
+ import { confirm as confirm9, spinner as spinner6, note as note12, outro as outro5, cancel as cancel6, isCancel as isCancel11 } from "@clack/prompts";
4468
+ import pc14 from "picocolors";
4212
4469
  import * as fs18 from "fs";
4213
4470
  import * as path18 from "path";
4214
4471
  async function runUpdateFlow(workspacePath, workspaceName, currentStorageMode) {
@@ -4221,7 +4478,7 @@ async function runUpdateFlow(workspacePath, workspaceName, currentStorageMode) {
4221
4478
  const customGlobalPath = getEffectiveRRCEHome(workspacePath);
4222
4479
  const dataPaths = resolveAllDataPathsWithCustomGlobal(mode, workspaceName, workspacePath, customGlobalPath);
4223
4480
  s.stop("Updates found");
4224
- note11(
4481
+ note12(
4225
4482
  `The following will be updated from the package:
4226
4483
  \u2022 prompts/ (${prompts.length} agent prompts)
4227
4484
  \u2022 templates/ (output templates)
@@ -4230,11 +4487,11 @@ Target locations:
4230
4487
  ${dataPaths.map((p) => ` \u2022 ${p}`).join("\n")}`,
4231
4488
  "Update Preview"
4232
4489
  );
4233
- const shouldUpdate = await confirm8({
4490
+ const shouldUpdate = await confirm9({
4234
4491
  message: "Proceed with update?",
4235
4492
  initialValue: true
4236
4493
  });
4237
- if (isCancel10(shouldUpdate) || !shouldUpdate) {
4494
+ if (isCancel11(shouldUpdate) || !shouldUpdate) {
4238
4495
  outro5("Update cancelled.");
4239
4496
  return;
4240
4497
  }
@@ -4264,8 +4521,8 @@ ${dataPaths.map((p) => ` \u2022 ${p}`).join("\n")}`,
4264
4521
  ``,
4265
4522
  `Your configuration and knowledge files were preserved.`
4266
4523
  ];
4267
- note11(summary.join("\n"), "Update Summary");
4268
- outro5(pc13.green("\u2713 Successfully updated from package!"));
4524
+ note12(summary.join("\n"), "Update Summary");
4525
+ outro5(pc14.green("\u2713 Successfully updated from package!"));
4269
4526
  } catch (error) {
4270
4527
  s.stop("Error occurred");
4271
4528
  cancel6(`Failed to update: ${error instanceof Error ? error.message : String(error)}`);
@@ -4294,16 +4551,16 @@ var init_update_flow = __esm({
4294
4551
  });
4295
4552
 
4296
4553
  // src/commands/wizard/delete-flow.ts
4297
- import { multiselect as multiselect5, confirm as confirm9, spinner as spinner7, note as note12, cancel as cancel7, isCancel as isCancel11 } from "@clack/prompts";
4298
- import pc14 from "picocolors";
4554
+ import { multiselect as multiselect6, confirm as confirm10, spinner as spinner7, note as note13, cancel as cancel7, isCancel as isCancel12 } from "@clack/prompts";
4555
+ import pc15 from "picocolors";
4299
4556
  import * as fs19 from "fs";
4300
4557
  async function runDeleteGlobalProjectFlow(availableProjects) {
4301
4558
  const globalProjects = availableProjects.filter((p) => p.source === "global");
4302
4559
  if (globalProjects.length === 0) {
4303
- note12("No globally stored projects found to delete.", "Info");
4560
+ note13("No globally stored projects found to delete.", "Info");
4304
4561
  return;
4305
4562
  }
4306
- const selectedProjects = await multiselect5({
4563
+ const selectedProjects = await multiselect6({
4307
4564
  message: "Select global projects to DELETE (Irreversible)",
4308
4565
  options: globalProjects.map((p) => ({
4309
4566
  value: p.name,
@@ -4312,21 +4569,21 @@ async function runDeleteGlobalProjectFlow(availableProjects) {
4312
4569
  })),
4313
4570
  required: false
4314
4571
  });
4315
- if (isCancel11(selectedProjects)) {
4572
+ if (isCancel12(selectedProjects)) {
4316
4573
  cancel7("Deletion cancelled.");
4317
4574
  return;
4318
4575
  }
4319
4576
  const projectsToDelete = selectedProjects;
4320
4577
  if (projectsToDelete.length === 0) {
4321
- note12("No projects selected.", "Cancelled");
4578
+ note13("No projects selected.", "Cancelled");
4322
4579
  return;
4323
4580
  }
4324
- const confirmed = await confirm9({
4325
- message: `${pc14.red("WARNING:")} This will PERMANENTLY DELETE the knowledge/config for ${projectsToDelete.length} detected global projects.
4581
+ const confirmed = await confirm10({
4582
+ message: `${pc15.red("WARNING:")} This will PERMANENTLY DELETE the knowledge/config for ${projectsToDelete.length} detected global projects.
4326
4583
  Are you sure?`,
4327
4584
  initialValue: false
4328
4585
  });
4329
- if (!confirmed || isCancel11(confirmed)) {
4586
+ if (!confirmed || isCancel12(confirmed)) {
4330
4587
  cancel7("Deletion cancelled.");
4331
4588
  return;
4332
4589
  }
@@ -4351,7 +4608,7 @@ Are you sure?`,
4351
4608
  await new Promise((r) => setTimeout(r, 1e3));
4352
4609
  } catch (error) {
4353
4610
  s.stop("Error occurred during deletion");
4354
- note12(`Failed to delete some projects: ${error}`, "Error");
4611
+ note13(`Failed to delete some projects: ${error}`, "Error");
4355
4612
  }
4356
4613
  }
4357
4614
  var init_delete_flow = __esm({
@@ -4367,11 +4624,11 @@ var wizard_exports = {};
4367
4624
  __export(wizard_exports, {
4368
4625
  runWizard: () => runWizard
4369
4626
  });
4370
- import { intro as intro2, select as select5, spinner as spinner8, note as note13, outro as outro7, isCancel as isCancel12 } from "@clack/prompts";
4371
- import pc15 from "picocolors";
4627
+ import { intro as intro2, select as select5, spinner as spinner8, note as note14, outro as outro7, isCancel as isCancel13 } from "@clack/prompts";
4628
+ import pc16 from "picocolors";
4372
4629
  import * as fs20 from "fs";
4373
4630
  async function runWizard() {
4374
- intro2(pc15.cyan(pc15.inverse(" RRCE-Workflow Setup ")));
4631
+ intro2(pc16.cyan(pc16.inverse(" RRCE-Workflow Setup ")));
4375
4632
  const s = spinner8();
4376
4633
  s.start("Detecting environment");
4377
4634
  const workspacePath = detectWorkspaceRoot();
@@ -4387,9 +4644,9 @@ async function runWizard() {
4387
4644
  }
4388
4645
  await new Promise((r) => setTimeout(r, 800));
4389
4646
  s.stop("Environment detected");
4390
- note13(
4391
- `Git User: ${pc15.bold(gitUser || "(not found)")}
4392
- Workspace: ${pc15.bold(workspaceName)}`,
4647
+ note14(
4648
+ `Git User: ${pc16.bold(gitUser || "(not found)")}
4649
+ Workspace: ${pc16.bold(workspaceName)}`,
4393
4650
  "Context"
4394
4651
  );
4395
4652
  const detectedProjects = projectService.scan({
@@ -4454,7 +4711,7 @@ Workspace: ${pc15.bold(workspaceName)}`,
4454
4711
  message: "This workspace is already configured. What would you like to do?",
4455
4712
  options: menuOptions
4456
4713
  });
4457
- if (isCancel12(action) || action === "exit") {
4714
+ if (isCancel13(action) || action === "exit") {
4458
4715
  outro7("Exited.");
4459
4716
  process.exit(0);
4460
4717
  }
@@ -4504,12 +4761,12 @@ init_wizard();
4504
4761
 
4505
4762
  // src/commands/selector.ts
4506
4763
  init_prompts();
4507
- import { intro as intro3, select as select6, note as note14, cancel as cancel9, isCancel as isCancel13, outro as outro8 } from "@clack/prompts";
4508
- import pc16 from "picocolors";
4764
+ import { intro as intro3, select as select6, note as note15, cancel as cancel9, isCancel as isCancel14, outro as outro8 } from "@clack/prompts";
4765
+ import pc17 from "picocolors";
4509
4766
  import * as path19 from "path";
4510
4767
  async function runSelector() {
4511
4768
  const workspaceName = path19.basename(process.cwd());
4512
- intro3(pc16.cyan(pc16.inverse(` RRCE-Workflow | ${workspaceName} `)));
4769
+ intro3(pc17.cyan(pc17.inverse(` RRCE-Workflow | ${workspaceName} `)));
4513
4770
  const prompts = loadPromptsFromDir(getAgentCorePromptsDir());
4514
4771
  if (prompts.length === 0) {
4515
4772
  cancel9("No agents found. Run `rrce-workflow` to set up.");
@@ -4535,7 +4792,7 @@ async function runSelector() {
4535
4792
  }))
4536
4793
  ]
4537
4794
  });
4538
- if (isCancel13(selection)) {
4795
+ if (isCancel14(selection)) {
4539
4796
  cancel9("Selection cancelled.");
4540
4797
  process.exit(0);
4541
4798
  }
@@ -4550,9 +4807,9 @@ async function runSelector() {
4550
4807
  return;
4551
4808
  }
4552
4809
  const prompt = selection;
4553
- note14(
4810
+ note15(
4554
4811
  `Use this agent in your IDE by invoking:
4555
- ${pc16.bold(pc16.cyan(`@${prompt.frontmatter.name}`))}`,
4812
+ ${pc17.bold(pc17.cyan(`@${prompt.frontmatter.name}`))}`,
4556
4813
  "Agent Selected"
4557
4814
  );
4558
4815
  outro8("Done");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rrce-workflow",
3
- "version": "0.2.65",
3
+ "version": "0.2.66",
4
4
  "description": "RRCE-Workflow TUI - Agentic code workflow generator for AI-assisted development",
5
5
  "author": "RRCE Team",
6
6
  "license": "MIT",