rrce-workflow 0.2.83 → 0.2.85

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.
@@ -18,8 +18,11 @@ auto-identity:
18
18
 
19
19
  You are the Project Doctor for RRCE-Workflow. Perform a health check on the codebase to identify issues, technical debt, and improvement opportunities using semantic search for efficient discovery.
20
20
 
21
- ## Path Resolution
21
+ ## Path Resolution (CRITICAL)
22
22
  Use the pre-resolved paths from the "System Resolved Paths" table in the context preamble.
23
+ **CRITICAL:** When filling templates, replace `{{RRCE_DATA}}` with the EXACT value from the "System Resolved Paths" table (usually ending in `.rrce-workflow/`).
24
+ **DO NOT** use `.rrce/` or any other guessed path. If you see `{{RRCE_DATA}}` in a template, use the system-provided value.
25
+
23
26
  For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
24
27
 
25
28
  ## Pipeline Position
@@ -20,8 +20,11 @@ auto-identity:
20
20
 
21
21
  You are the Documentation Lead for the project. Operate like a senior engineering manager responsible for synthesizing knowledge and preparing smooth handovers.
22
22
 
23
- ## Path Resolution
23
+ ## Path Resolution (CRITICAL)
24
24
  Use the pre-resolved paths from the "System Resolved Paths" table in the context preamble.
25
+ **CRITICAL:** When filling templates, replace `{{RRCE_DATA}}` with the EXACT value from the "System Resolved Paths" table (usually ending in `.rrce-workflow/`).
26
+ **DO NOT** use `.rrce/` or any other guessed path. If you see `{{RRCE_DATA}}` in a template, use the system-provided value.
27
+
25
28
  For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
26
29
 
27
30
  ### Tool Usage Guidance
@@ -16,8 +16,11 @@ auto-identity:
16
16
 
17
17
  You are the Executor for RRCE-Workflow. You are the **ONLY agent in the pipeline authorized to modify source code** in `{{WORKSPACE_ROOT}}`. Operate like a senior individual contributor who ships clean, well-tested code aligned precisely with the execution plan.
18
18
 
19
- ## Path Resolution
19
+ ## Path Resolution (CRITICAL)
20
20
  Use the pre-resolved paths from the "System Resolved Paths" table in the context preamble.
21
+ **CRITICAL:** When filling templates, replace `{{RRCE_DATA}}` with the EXACT value from the "System Resolved Paths" table (usually ending in `.rrce-workflow/`).
22
+ **DO NOT** use `.rrce/` or any other guessed path. If you see `{{RRCE_DATA}}` in a template, use the system-provided value.
23
+
21
24
  For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
22
25
 
23
26
  ### Tool Usage Guidance
@@ -15,8 +15,11 @@ auto-identity:
15
15
 
16
16
  You are the Project Initializer for RRCE-Workflow. Your mission: create a comprehensive project context that enables all downstream agents to work effectively, then build the semantic search index.
17
17
 
18
- ## Path Resolution
18
+ ## Path Resolution (CRITICAL)
19
19
  Use the pre-resolved paths from the "System Resolved Paths" table in the context preamble.
20
+ **CRITICAL:** When filling templates (like `init_output.md`), replace `{{RRCE_DATA}}` with the EXACT value from the "System Resolved Paths" table (usually ending in `.rrce-workflow/`).
21
+ **DO NOT** use `.rrce/` or any other guessed path. If you see `{{RRCE_DATA}}` in a template, use the system-provided value.
22
+
20
23
  For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
21
24
 
22
25
  ### Tool Usage Guidance
@@ -13,8 +13,11 @@ auto-identity:
13
13
 
14
14
  You are the Planning & Task Orchestrator for RRCE-Workflow. Your mission: transform the research brief into a clear, actionable execution plan that the Executor can follow with zero ambiguity.
15
15
 
16
- ## Path Resolution
16
+ ## Path Resolution (CRITICAL)
17
17
  Use the pre-resolved paths from the "System Resolved Paths" table in the context preamble.
18
+ **CRITICAL:** When filling templates, replace `{{RRCE_DATA}}` with the EXACT value from the "System Resolved Paths" table (usually ending in `.rrce-workflow/`).
19
+ **DO NOT** use `.rrce/` or any other guessed path. If you see `{{RRCE_DATA}}` in a template, use the system-provided value.
20
+
18
21
  For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
19
22
 
20
23
  ### Tool Usage Guidance
@@ -20,8 +20,11 @@ auto-identity:
20
20
 
21
21
  You are the Research & Discussion Lead for RRCE-Workflow. Your mission: achieve 100% understanding of the user's request through constructive, challenging dialogue before any planning or implementation begins.
22
22
 
23
- ## Path Resolution
23
+ ## Path Resolution (CRITICAL)
24
24
  Use the pre-resolved paths from the "System Resolved Paths" table in the context preamble.
25
+ **CRITICAL:** When filling templates, replace `{{RRCE_DATA}}` with the EXACT value from the "System Resolved Paths" table (usually ending in `.rrce-workflow/`).
26
+ **DO NOT** use `.rrce/` or any other guessed path. If you see `{{RRCE_DATA}}` in a template, use the system-provided value.
27
+
25
28
  For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
26
29
 
27
30
  ### Tool Usage Guidance
@@ -14,8 +14,11 @@ auto-identity:
14
14
 
15
15
  You are the Knowledge Sync Lead. Act like a senior architect charged with keeping the RRCE knowledge cache authoritative and current.
16
16
 
17
- ## Path Resolution
17
+ ## Path Resolution (CRITICAL)
18
18
  Use the pre-resolved paths from the "System Resolved Paths" table in the context preamble.
19
+ **CRITICAL:** When filling templates, replace `{{RRCE_DATA}}` with the EXACT value from the "System Resolved Paths" table (usually ending in `.rrce-workflow/`).
20
+ **DO NOT** use `.rrce/` or any other guessed path. If you see `{{RRCE_DATA}}` in a template, use the system-provided value.
21
+
19
22
  For details, see: `{{RRCE_DATA}}/docs/path-resolution.md`
20
23
 
21
24
  ### Tool Usage Guidance
@@ -7,8 +7,8 @@
7
7
  3. Add findings under appropriate priority sections
8
8
  4. Remove empty sections and placeholder rows
9
9
 
10
- AUTO-FILLED VARIABLES (from System Resolved Paths):
11
- - {{RRCE_DATA}}: Storage path for knowledge/tasks
10
+ SYSTEM PATH VARIABLES (Must be replaced by agent using System Resolved Paths):
11
+ - {{RRCE_DATA}}: Storage path for knowledge/tasks (Use value from system context!)
12
12
  - {{WORKSPACE_ROOT}}: Source code directory
13
13
 
14
14
  AGENT-FILLED VARIABLES:
@@ -9,8 +9,8 @@
9
9
  2. Replace {{variable}} placeholders with actual values
10
10
  3. Remove empty sections
11
11
 
12
- AUTO-FILLED VARIABLES (from System Resolved Paths):
13
- - {{RRCE_DATA}}: Storage path for knowledge/tasks
12
+ SYSTEM PATH VARIABLES (Must be replaced by agent using System Resolved Paths):
13
+ - {{RRCE_DATA}}: Storage path for knowledge/tasks (Use value from system context!)
14
14
  - {{WORKSPACE_NAME}}: Project name
15
15
 
16
16
  AGENT-FILLED VARIABLES:
@@ -7,8 +7,8 @@
7
7
  3. Update Implementation Steps table as work progresses
8
8
  4. Remove empty sections
9
9
 
10
- AUTO-FILLED VARIABLES (from System Resolved Paths):
11
- - {{RRCE_DATA}}: Storage path for knowledge/tasks
10
+ SYSTEM PATH VARIABLES (Must be replaced by agent using System Resolved Paths):
11
+ - {{RRCE_DATA}}: Storage path for knowledge/tasks (Use value from system context!)
12
12
  - {{WORKSPACE_NAME}}: Project name
13
13
 
14
14
  AGENT-FILLED VARIABLES:
@@ -7,10 +7,10 @@
7
7
  3. Delete sections marked (OPTIONAL) if empty after population
8
8
  4. Fill in remaining sections with discovered information
9
9
 
10
- AUTO-FILLED VARIABLES (from System Resolved Paths):
10
+ SYSTEM PATH VARIABLES (Must be replaced by agent using System Resolved Paths):
11
11
  - {{WORKSPACE_ROOT}}: Source code directory
12
12
  - {{WORKSPACE_NAME}}: Project name
13
- - {{RRCE_DATA}}: Storage path for knowledge/tasks
13
+ - {{RRCE_DATA}}: Storage path for knowledge/tasks (Use value from system context!)
14
14
  - {{RRCE_HOME}}: Global RRCE home directory
15
15
 
16
16
  AGENT-FILLED VARIABLES:
@@ -138,8 +138,7 @@
138
138
  - **Async Patterns**:
139
139
  - **Logging**:
140
140
  - **Configuration**:
141
-
142
- ### Code Quality Gates
141
+ - **Code Quality Gates**:
143
142
  - [ ] Type checking enforced
144
143
  - [ ] Lint checks in CI
145
144
  - [ ] Code review required
@@ -6,8 +6,8 @@
6
6
  2. Replace {{variable}} placeholders with actual values
7
7
  3. Remove unused table rows and empty sections
8
8
 
9
- AUTO-FILLED VARIABLES (from System Resolved Paths):
10
- - {{RRCE_DATA}}: Storage path for knowledge/tasks
9
+ SYSTEM PATH VARIABLES (Must be replaced by agent using System Resolved Paths):
10
+ - {{RRCE_DATA}}: Storage path for knowledge/tasks (Use value from system context!)
11
11
  - {{WORKSPACE_NAME}}: Project name
12
12
 
13
13
  AGENT-FILLED VARIABLES:
@@ -6,8 +6,8 @@
6
6
  2. Replace {{variable}} placeholders with actual values
7
7
  3. Delete sections that are empty after population
8
8
 
9
- AUTO-FILLED VARIABLES (from System Resolved Paths):
10
- - {{RRCE_DATA}}: Storage path for knowledge/tasks
9
+ SYSTEM PATH VARIABLES (Must be replaced by agent using System Resolved Paths):
10
+ - {{RRCE_DATA}}: Storage path for knowledge/tasks (Use value from system context!)
11
11
  - {{WORKSPACE_NAME}}: Project name
12
12
 
13
13
  AGENT-FILLED VARIABLES:
package/dist/index.js CHANGED
@@ -2727,6 +2727,7 @@ var init_resources2 = __esm({
2727
2727
 
2728
2728
  // src/mcp/prompts.ts
2729
2729
  import * as path17 from "path";
2730
+ import * as fs15 from "fs";
2730
2731
  function getAllPrompts() {
2731
2732
  const prompts = loadPromptsFromDir(getAgentCorePromptsDir());
2732
2733
  return prompts.map((p) => {
@@ -2765,7 +2766,11 @@ function getPromptDef(name) {
2765
2766
  }
2766
2767
  function renderPromptWithContext(content, args) {
2767
2768
  const renderArgs = { ...args };
2768
- const activeProject = detectActiveProject();
2769
+ let activeProject = detectActiveProject();
2770
+ if (!activeProject) {
2771
+ projectService.refresh();
2772
+ activeProject = detectActiveProject();
2773
+ }
2769
2774
  const DEFAULT_RRCE_HOME = getEffectiveGlobalPath();
2770
2775
  let resolvedRrceData = ".rrce-workflow/";
2771
2776
  let resolvedRrceHome = DEFAULT_RRCE_HOME;
@@ -2782,6 +2787,21 @@ function renderPromptWithContext(content, args) {
2782
2787
  const workspacesDir = path17.dirname(activeProject.dataPath);
2783
2788
  resolvedRrceHome = path17.dirname(workspacesDir);
2784
2789
  }
2790
+ } else {
2791
+ try {
2792
+ const workspaceRoot = detectWorkspaceRoot();
2793
+ const workspaceName = path17.basename(workspaceRoot);
2794
+ const globalWorkspacePath = path17.join(DEFAULT_RRCE_HOME, "workspaces", workspaceName);
2795
+ if (fs15.existsSync(globalWorkspacePath)) {
2796
+ resolvedRrceData = globalWorkspacePath;
2797
+ resolvedWorkspaceRoot = workspaceRoot;
2798
+ resolvedWorkspaceName = workspaceName;
2799
+ if (!resolvedRrceData.endsWith("/") && !resolvedRrceData.endsWith("\\")) {
2800
+ resolvedRrceData += "/";
2801
+ }
2802
+ }
2803
+ } catch (e) {
2804
+ }
2785
2805
  }
2786
2806
  if (!renderArgs["RRCE_DATA"]) renderArgs["RRCE_DATA"] = resolvedRrceData;
2787
2807
  if (!renderArgs["RRCE_HOME"]) renderArgs["RRCE_HOME"] = resolvedRrceHome;
@@ -2810,6 +2830,7 @@ var init_prompts2 = __esm({
2810
2830
  init_prompts();
2811
2831
  init_resources();
2812
2832
  init_paths();
2833
+ init_detection_service();
2813
2834
  }
2814
2835
  });
2815
2836
 
@@ -3323,7 +3344,7 @@ Hidden projects: ${projects.length - exposedCount}`,
3323
3344
  }
3324
3345
  async function handleConfigureGlobalPath() {
3325
3346
  const { resolveGlobalPath: resolveGlobalPath2 } = await Promise.resolve().then(() => (init_tui_utils(), tui_utils_exports));
3326
- const fs21 = await import("fs");
3347
+ const fs22 = await import("fs");
3327
3348
  const path21 = await import("path");
3328
3349
  note3(
3329
3350
  `MCP Hub requires a ${pc5.bold("global storage path")} to store its configuration
@@ -3338,8 +3359,8 @@ locally in each project. MCP needs a central location.`,
3338
3359
  return false;
3339
3360
  }
3340
3361
  try {
3341
- if (!fs21.existsSync(resolvedPath)) {
3342
- fs21.mkdirSync(resolvedPath, { recursive: true });
3362
+ if (!fs22.existsSync(resolvedPath)) {
3363
+ fs22.mkdirSync(resolvedPath, { recursive: true });
3343
3364
  }
3344
3365
  const config = loadMCPConfig();
3345
3366
  saveMCPConfig(config);
@@ -3993,7 +4014,7 @@ __export(App_exports, {
3993
4014
  });
3994
4015
  import { useState as useState5, useEffect as useEffect4, useMemo as useMemo2, useCallback } from "react";
3995
4016
  import { Box as Box11, useInput as useInput4, useApp } from "ink";
3996
- import fs15 from "fs";
4017
+ import fs16 from "fs";
3997
4018
  import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
3998
4019
  var App;
3999
4020
  var init_App = __esm({
@@ -4078,18 +4099,18 @@ var init_App = __esm({
4078
4099
  useEffect4(() => {
4079
4100
  const logPath = getLogFilePath();
4080
4101
  let lastSize = 0;
4081
- if (fs15.existsSync(logPath)) {
4082
- const stats = fs15.statSync(logPath);
4102
+ if (fs16.existsSync(logPath)) {
4103
+ const stats = fs16.statSync(logPath);
4083
4104
  lastSize = stats.size;
4084
4105
  }
4085
4106
  const interval = setInterval(() => {
4086
- if (fs15.existsSync(logPath)) {
4087
- const stats = fs15.statSync(logPath);
4107
+ if (fs16.existsSync(logPath)) {
4108
+ const stats = fs16.statSync(logPath);
4088
4109
  if (stats.size > lastSize) {
4089
4110
  const buffer = Buffer.alloc(stats.size - lastSize);
4090
- const fd = fs15.openSync(logPath, "r");
4091
- fs15.readSync(fd, buffer, 0, buffer.length, lastSize);
4092
- fs15.closeSync(fd);
4111
+ const fd = fs16.openSync(logPath, "r");
4112
+ fs16.readSync(fd, buffer, 0, buffer.length, lastSize);
4113
+ fs16.closeSync(fd);
4093
4114
  const newContent = buffer.toString("utf-8");
4094
4115
  const newLines = newContent.split("\n").filter((l) => l.trim());
4095
4116
  setLogs((prev) => {
@@ -4745,7 +4766,7 @@ var init_setup_flow = __esm({
4745
4766
  // src/commands/wizard/link-flow.ts
4746
4767
  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";
4747
4768
  import pc12 from "picocolors";
4748
- import * as fs16 from "fs";
4769
+ import * as fs17 from "fs";
4749
4770
  async function runLinkProjectsFlow(workspacePath, workspaceName) {
4750
4771
  const projects = scanForProjects({
4751
4772
  excludeWorkspace: workspaceName,
@@ -4783,7 +4804,7 @@ async function runLinkProjectsFlow(workspacePath, workspaceName) {
4783
4804
  const s = spinner4();
4784
4805
  s.start("Linking projects");
4785
4806
  const configFilePath = getConfigPath(workspacePath);
4786
- let configContent = fs16.readFileSync(configFilePath, "utf-8");
4807
+ let configContent = fs17.readFileSync(configFilePath, "utf-8");
4787
4808
  if (configContent.includes("linked_projects:")) {
4788
4809
  const lines = configContent.split("\n");
4789
4810
  const linkedIndex = lines.findIndex((l) => l.trim() === "linked_projects:");
@@ -4810,7 +4831,7 @@ linked_projects:
4810
4831
  `;
4811
4832
  });
4812
4833
  }
4813
- fs16.writeFileSync(configFilePath, configContent);
4834
+ fs17.writeFileSync(configFilePath, configContent);
4814
4835
  generateVSCodeWorkspace(workspacePath, workspaceName, selectedProjects, customGlobalPath);
4815
4836
  s.stop("Projects linked");
4816
4837
  const workspaceFile = `${workspaceName}.code-workspace`;
@@ -4852,7 +4873,7 @@ var init_link_flow = __esm({
4852
4873
  // src/commands/wizard/sync-flow.ts
4853
4874
  import { confirm as confirm8, spinner as spinner5, note as note11, outro as outro4, cancel as cancel5, isCancel as isCancel10 } from "@clack/prompts";
4854
4875
  import pc13 from "picocolors";
4855
- import * as fs17 from "fs";
4876
+ import * as fs18 from "fs";
4856
4877
  import * as path18 from "path";
4857
4878
  async function runSyncToGlobalFlow(workspacePath, workspaceName) {
4858
4879
  const localPath = getLocalWorkspacePath(workspacePath);
@@ -4860,7 +4881,7 @@ async function runSyncToGlobalFlow(workspacePath, workspaceName) {
4860
4881
  const globalPath = path18.join(customGlobalPath, "workspaces", workspaceName);
4861
4882
  const subdirs = ["knowledge", "prompts", "templates", "tasks", "refs"];
4862
4883
  const existingDirs = subdirs.filter(
4863
- (dir) => fs17.existsSync(path18.join(localPath, dir))
4884
+ (dir) => fs18.existsSync(path18.join(localPath, dir))
4864
4885
  );
4865
4886
  if (existingDirs.length === 0) {
4866
4887
  outro4(pc13.yellow("No data found in workspace storage to sync."));
@@ -4919,7 +4940,7 @@ var init_sync_flow = __esm({
4919
4940
  // src/commands/wizard/update-flow.ts
4920
4941
  import { confirm as confirm9, spinner as spinner6, note as note12, outro as outro5, cancel as cancel6, isCancel as isCancel11 } from "@clack/prompts";
4921
4942
  import pc14 from "picocolors";
4922
- import * as fs18 from "fs";
4943
+ import * as fs19 from "fs";
4923
4944
  import * as path19 from "path";
4924
4945
  import { stringify as stringify3 } from "yaml";
4925
4946
  async function runUpdateFlow(workspacePath, workspaceName, currentStorageMode) {
@@ -4939,8 +4960,8 @@ async function runUpdateFlow(workspacePath, workspaceName, currentStorageMode) {
4939
4960
  ];
4940
4961
  const configFilePath = getConfigPath(workspacePath);
4941
4962
  const ideTargets = [];
4942
- if (fs18.existsSync(configFilePath)) {
4943
- const configContent = fs18.readFileSync(configFilePath, "utf-8");
4963
+ if (fs19.existsSync(configFilePath)) {
4964
+ const configContent = fs19.readFileSync(configFilePath, "utf-8");
4944
4965
  if (configContent.includes("opencode: true")) ideTargets.push("OpenCode agents");
4945
4966
  if (configContent.includes("copilot: true")) ideTargets.push("GitHub Copilot");
4946
4967
  if (configContent.includes("antigravity: true")) ideTargets.push("Antigravity");
@@ -4975,8 +4996,8 @@ ${dataPaths.map((p) => ` \u2022 ${p}`).join("\n")}`,
4975
4996
  ensureDir(path19.join(rrceHome, "docs"));
4976
4997
  copyDirRecursive(path19.join(agentCoreDir, "templates"), path19.join(rrceHome, "templates"));
4977
4998
  copyDirRecursive(path19.join(agentCoreDir, "docs"), path19.join(rrceHome, "docs"));
4978
- if (fs18.existsSync(configFilePath)) {
4979
- const configContent = fs18.readFileSync(configFilePath, "utf-8");
4999
+ if (fs19.existsSync(configFilePath)) {
5000
+ const configContent = fs19.readFileSync(configFilePath, "utf-8");
4980
5001
  if (configContent.includes("copilot: true")) {
4981
5002
  const copilotPath = getAgentPromptPath(workspacePath, "copilot");
4982
5003
  ensureDir(copilotPath);
@@ -5026,8 +5047,8 @@ function updateOpenCodeAgents(prompts, mode, primaryDataPath) {
5026
5047
  const promptsDir = path19.join(path19.dirname(OPENCODE_CONFIG), "prompts");
5027
5048
  ensureDir(promptsDir);
5028
5049
  let opencodeConfig = { $schema: "https://opencode.ai/config.json" };
5029
- if (fs18.existsSync(OPENCODE_CONFIG)) {
5030
- opencodeConfig = JSON.parse(fs18.readFileSync(OPENCODE_CONFIG, "utf-8"));
5050
+ if (fs19.existsSync(OPENCODE_CONFIG)) {
5051
+ opencodeConfig = JSON.parse(fs19.readFileSync(OPENCODE_CONFIG, "utf-8"));
5031
5052
  }
5032
5053
  if (!opencodeConfig.agent) opencodeConfig.agent = {};
5033
5054
  const currentAgentNames = prompts.map((p) => path19.basename(p.filePath, ".md"));
@@ -5039,8 +5060,8 @@ function updateOpenCodeAgents(prompts, mode, primaryDataPath) {
5039
5060
  if (isRrceAgent && !stillExists) {
5040
5061
  delete opencodeConfig.agent[existingName];
5041
5062
  const oldPromptFile = path19.join(promptsDir, `rrce-${existingName}.md`);
5042
- if (fs18.existsSync(oldPromptFile)) {
5043
- fs18.unlinkSync(oldPromptFile);
5063
+ if (fs19.existsSync(oldPromptFile)) {
5064
+ fs19.unlinkSync(oldPromptFile);
5044
5065
  }
5045
5066
  }
5046
5067
  }
@@ -5048,11 +5069,11 @@ function updateOpenCodeAgents(prompts, mode, primaryDataPath) {
5048
5069
  const baseName = path19.basename(prompt.filePath, ".md");
5049
5070
  const promptFileName = `rrce-${baseName}.md`;
5050
5071
  const promptFilePath = path19.join(promptsDir, promptFileName);
5051
- fs18.writeFileSync(promptFilePath, prompt.content);
5072
+ fs19.writeFileSync(promptFilePath, prompt.content);
5052
5073
  const agentConfig = convertToOpenCodeAgent(prompt, true, `./prompts/${promptFileName}`);
5053
5074
  opencodeConfig.agent[baseName] = agentConfig;
5054
5075
  }
5055
- fs18.writeFileSync(OPENCODE_CONFIG, JSON.stringify(opencodeConfig, null, 2) + "\n");
5076
+ fs19.writeFileSync(OPENCODE_CONFIG, JSON.stringify(opencodeConfig, null, 2) + "\n");
5056
5077
  } catch (e) {
5057
5078
  console.error("Failed to update global OpenCode config with agents:", e);
5058
5079
  }
@@ -5070,16 +5091,16 @@ ${stringify3({
5070
5091
  tools: agentConfig.tools
5071
5092
  })}---
5072
5093
  ${agentConfig.prompt}`;
5073
- fs18.writeFileSync(path19.join(opencodeBaseDir, `${baseName}.md`), content);
5094
+ fs19.writeFileSync(path19.join(opencodeBaseDir, `${baseName}.md`), content);
5074
5095
  }
5075
5096
  }
5076
5097
  }
5077
5098
  function clearDirectory(dirPath) {
5078
- if (!fs18.existsSync(dirPath)) return;
5079
- const entries = fs18.readdirSync(dirPath, { withFileTypes: true });
5099
+ if (!fs19.existsSync(dirPath)) return;
5100
+ const entries = fs19.readdirSync(dirPath, { withFileTypes: true });
5080
5101
  for (const entry of entries) {
5081
5102
  if (entry.isFile()) {
5082
- fs18.unlinkSync(path19.join(dirPath, entry.name));
5103
+ fs19.unlinkSync(path19.join(dirPath, entry.name));
5083
5104
  }
5084
5105
  }
5085
5106
  }
@@ -5108,7 +5129,7 @@ var init_update_flow = __esm({
5108
5129
  // src/commands/wizard/delete-flow.ts
5109
5130
  import { multiselect as multiselect6, confirm as confirm10, spinner as spinner7, note as note13, cancel as cancel7, isCancel as isCancel12 } from "@clack/prompts";
5110
5131
  import pc15 from "picocolors";
5111
- import * as fs19 from "fs";
5132
+ import * as fs20 from "fs";
5112
5133
  async function runDeleteGlobalProjectFlow(availableProjects) {
5113
5134
  const globalProjects = availableProjects.filter((p) => p.source === "global");
5114
5135
  if (globalProjects.length === 0) {
@@ -5150,8 +5171,8 @@ Are you sure?`,
5150
5171
  for (const projectName of projectsToDelete) {
5151
5172
  const project = globalProjects.find((p) => p.name === projectName);
5152
5173
  if (!project) continue;
5153
- if (fs19.existsSync(project.dataPath)) {
5154
- fs19.rmSync(project.dataPath, { recursive: true, force: true });
5174
+ if (fs20.existsSync(project.dataPath)) {
5175
+ fs20.rmSync(project.dataPath, { recursive: true, force: true });
5155
5176
  }
5156
5177
  const newConfig = removeProjectConfig(mcpConfig, projectName);
5157
5178
  configChanged = true;
@@ -5181,7 +5202,7 @@ __export(wizard_exports, {
5181
5202
  });
5182
5203
  import { intro as intro2, select as select5, spinner as spinner8, note as note14, outro as outro7, isCancel as isCancel13 } from "@clack/prompts";
5183
5204
  import pc16 from "picocolors";
5184
- import * as fs20 from "fs";
5205
+ import * as fs21 from "fs";
5185
5206
  async function runWizard() {
5186
5207
  intro2(pc16.cyan(pc16.inverse(" RRCE-Workflow Setup ")));
5187
5208
  const s = spinner8();
@@ -5209,11 +5230,11 @@ Workspace: ${pc16.bold(workspaceName)}`,
5209
5230
  workspacePath
5210
5231
  });
5211
5232
  const configFilePath = getConfigPath(workspacePath);
5212
- let isAlreadyConfigured = fs20.existsSync(configFilePath);
5233
+ let isAlreadyConfigured = fs21.existsSync(configFilePath);
5213
5234
  let currentStorageMode = null;
5214
5235
  if (isAlreadyConfigured) {
5215
5236
  try {
5216
- const configContent = fs20.readFileSync(configFilePath, "utf-8");
5237
+ const configContent = fs21.readFileSync(configFilePath, "utf-8");
5217
5238
  const modeMatch = configContent.match(/mode:\s*(global|workspace)/);
5218
5239
  currentStorageMode = modeMatch?.[1] ?? null;
5219
5240
  } catch {
@@ -5230,7 +5251,7 @@ Workspace: ${pc16.bold(workspaceName)}`,
5230
5251
  }
5231
5252
  }
5232
5253
  const localDataPath = getLocalWorkspacePath(workspacePath);
5233
- const hasLocalData = fs20.existsSync(localDataPath);
5254
+ const hasLocalData = fs21.existsSync(localDataPath);
5234
5255
  if (isAlreadyConfigured) {
5235
5256
  const menuOptions = [];
5236
5257
  menuOptions.push({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rrce-workflow",
3
- "version": "0.2.83",
3
+ "version": "0.2.85",
4
4
  "description": "RRCE-Workflow TUI - Agentic code workflow generator for AI-assisted development",
5
5
  "author": "RRCE Team",
6
6
  "license": "MIT",